Skip to content
Snippets Groups Projects
Commit e6f4bd9f authored by Rhys Evans's avatar Rhys Evans
Browse files

Further work on all testing components, creating seperate testing branch for correct-ness

parent e801f358
No related branches found
No related tags found
No related merge requests found
Showing
with 593 additions and 24 deletions
...@@ -58,6 +58,7 @@ dependencies { ...@@ -58,6 +58,7 @@ dependencies {
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '3.2.2' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '3.2.2'
testImplementation 'org.springframework.security:spring-security-test'
} }
tasks.named('bootBuildImage') { tasks.named('bootBuildImage') {
......
...@@ -69,6 +69,9 @@ public class PlacesController { ...@@ -69,6 +69,9 @@ public class PlacesController {
int townIDFromTable= placeRepo.getTownIDFromName(townNamee); int townIDFromTable= placeRepo.getTownIDFromName(townNamee);
for (int i=0;i<trailslocations.size();i++){ for (int i=0;i<trailslocations.size();i++){
int trailID = trailsRepo.getTrailIDFromTrailName(trailslocations.get(i).getTrailName()); int trailID = trailsRepo.getTrailIDFromTrailName(trailslocations.get(i).getTrailName());
System.out.println(trailslocations.get(i));
System.out.println(trailslocations.get(i).getTrailName());
System.out.println(trailID);
if ((trailID>100)&&(trailID<200)&&(Objects.equals(townNamee, "Caerphilly"))){ if ((trailID>100)&&(trailID<200)&&(Objects.equals(townNamee, "Caerphilly"))){
correctTrails.add(trailslocations.get(i)); correctTrails.add(trailslocations.get(i));
} }
...@@ -176,8 +179,8 @@ public class PlacesController { ...@@ -176,8 +179,8 @@ public class PlacesController {
break;} break;}
} }
ModelAndView modelAndView= new ModelAndView("fragments/trailsPageFrags :: trailsSection"); ModelAndView modelAndView= new ModelAndView("fragments/trailsPageFrags :: trailsSection");
System.out.println(locCoords.get(0).getLocationID()); // System.out.println(locCoords.get(0).getLocationID());
System.out.println(approvedLocations.get(0).getLocationID()); // System.out.println(approvedLocations.get(0).getLocationID());
// locations[indexValue.index].getLocationTrailID()==trail.getTrailsId()} // locations[indexValue.index].getLocationTrailID()==trail.getTrailsId()}
...@@ -185,7 +188,7 @@ public class PlacesController { ...@@ -185,7 +188,7 @@ public class PlacesController {
List<Location> finalLocations = approvedLocations.stream() List<Location> finalLocations = approvedLocations.stream()
.filter(loc -> Long.parseLong(loc.getLocationTrailID()) == trailslocations.get(trailIDFINAL).getTrailsId()) .filter(loc -> Long.parseLong(loc.getLocationTrailID()) == trailslocations.get(trailIDFINAL).getTrailsId())
.toList(); .toList();
System.out.println(finalLocations); // System.out.println(finalLocations);
modelAndView.addObject("trail", trailslocations.get(trailID)); modelAndView.addObject("trail", trailslocations.get(trailID));
modelAndView.addObject("locCoords", locCoords); modelAndView.addObject("locCoords", locCoords);
......
...@@ -38,6 +38,33 @@ public class TownWithTrails { ...@@ -38,6 +38,33 @@ public class TownWithTrails {
return townRightmostCoordsLong; return townRightmostCoordsLong;
} }
public void setTownName(String townName) {
this.townName = townName;
}
public void setTownCentreCoordsLat(String townCentreCoordsLat) {
this.townCentreCoordsLat = townCentreCoordsLat;
}
public void setTownCentreCoordsLong(String townCentreCoordsLong) {
this.townCentreCoordsLong = townCentreCoordsLong;
}
public void setTownUppermostCoordsLat(String townUppermostCoordsLat) {
this.townUppermostCoordsLat = townUppermostCoordsLat;
}
public void setTownLowermostCoordsLat(String townLowermostCoordsLat) {
this.townLowermostCoordsLat = townLowermostCoordsLat;
}
public void setTownLeftmostCoordsLong(String townLeftmostCoordsLong) {
this.townLeftmostCoordsLong = townLeftmostCoordsLong;
}
public void setTownRightmostCoordsLong(String townRightmostCoordsLong) {
this.townRightmostCoordsLong = townRightmostCoordsLong;
}
public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townUppermostCoordsLat, String townLowermostCoordsLat, String townLeftmostCoordsLong, String townRightmostCoordsLong) { public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townUppermostCoordsLat, String townLowermostCoordsLat, String townLeftmostCoordsLong, String townRightmostCoordsLong) {
this.townName = townName; this.townName = townName;
......
...@@ -36,10 +36,11 @@ public class SecurityConfiguration { ...@@ -36,10 +36,11 @@ public class SecurityConfiguration {
http http
.csrf(AbstractHttpConfigurer::disable) .csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests((requests) -> requests .authorizeHttpRequests((requests) -> requests
.requestMatchers(mvc.pattern("/user/**"), mvc.pattern("/userProfile")).authenticated() .requestMatchers(mvc.pattern("/user/**"), mvc.pattern("/userProfile"),mvc.pattern("/checkpointApproval")).authenticated()
.anyRequest().permitAll() .anyRequest().permitAll()
) ) //all user roles, defaulkt
.formLogin((login) -> login .formLogin((login) -> login
.loginPage("/login").permitAll() .loginPage("/login").permitAll()
.defaultSuccessUrl("/mobile-home") .defaultSuccessUrl("/mobile-home")
...@@ -59,6 +60,6 @@ public class SecurityConfiguration { ...@@ -59,6 +60,6 @@ public class SecurityConfiguration {
JdbcUserDetailsManager manager = new JdbcUserDetailsManager(dataSource); JdbcUserDetailsManager manager = new JdbcUserDetailsManager(dataSource);
return manager; return manager;
} }
//.requestMatchers("/checkpointApproval").hasRole(String.valueOf(mvc.pattern("/user/**")))
} }
...@@ -33,7 +33,7 @@ public class UserController { ...@@ -33,7 +33,7 @@ public class UserController {
mav.addObject("user", new NewUser( "", "", "")); mav.addObject("user", new NewUser( "", "", ""));
mav.addObject("error", ""); mav.addObject("error", "");
mav.addObject("status", ""); mav.addObject("status", "");
System.out.println(userRepository.findUserByName("Admin").getName()); // System.out.println(userRepository.findUserByName("Admin").getName());
return mav; return mav;
} }
......
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.url=jdbc:mariadb://localhost:3306/townstest
spring.datasource.username=sa spring.datasource.username=root
spring.datasource.password=password spring.datasource.password=comsc
spring.datasource.driver-class-name=org.h2.Driver spring.sql.init.platform=test
spring.sql.init.platform=mock \ No newline at end of file
spring.sql.init.mode=always
spring.autoconfigure.exclude=
spring.profiles.active=dev spring.profiles.active=test
\ No newline at end of file \ No newline at end of file
delete from trails;
insert into trails ( trailID, trailName, trailNumber, city) values ( 0101,'Caerphilly Castle Trail','0101', 'Caerphilly');
insert into trails ( trailID, trailName, trailNumber, city) values ( 0102,'Caerphilly Pub Trail','0102', 'Caerphilly');
insert into trails ( trailID, trailName, trailNumber, city) values ( 0103,'Caerphilly Heritage Trail','0103', 'Caerphilly');
insert into trails ( trailID, trailName, trailNumber, city) values ( 0201,'Risca Heritage Trail','0201', 'Risca');
insert into trails ( trailID, trailName, trailNumber, city) values ( 0301,'Penarth Esplanade Trail','0301', 'Penarth');
delete from locations;
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'St Cenydd','','Location description here','Caerphilly',0101, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Castle','','Location description here','Caerphilly',0101, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Medieval Trades','','Location description here','Caerphilly',0101, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Queen''s War','','Location description here','Caerphilly',0101, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Green Lady','','Location description here','Caerphilly',0101, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Armoury','','Location description here','Caerphilly',0101, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Architecture','','Location description here','Caerphilly',0101, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( '21st Century Landmark','','Location description here','Caerphilly',0101, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'JD Wetherspoons-Malcolm Uphill','','Location description here','Caerphilly',0102, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Caerphilly Cwtch','','Location description here','Caerphilly',0102, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Caerphilly Conservative Club','','Location description here','Caerphilly',0102, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The King''s Arms','','Location description here','Caerphilly',0102, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Caerphilly Bus Station','','Location description here','Caerphilly',0103, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Medieval Courthouse','','Location description here','Caerphilly',0103, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ('Caerphilly Castle','','Location description here','Caerphilly',0103, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Ty Vaughan House','','Location description here','Caerphilly',0103, false);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Risca Colliery','','Location description here','Risca',0201, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'Black Vein Colliery Disaster','','Location description here','Risca',0201, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Esplanade','','Location description here','Penarth',0301, true);
insert into locations ( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values ( 'The Old Swimming Baths','','Location description here','Penarth',0301, true);
DELETE FROM packs;
INSERT INTO packs (name, description) VALUES ('Wales Football Team', 'Pack of Welsh Football Players in the National Team');
INSERT INTO packs (name, description) VALUES ('Wales Rugby Team', 'Pack of Welsh Rugby Players in the National Team');
INSERT INTO packs (name, description) VALUES ('Welsh Heritage', 'Pack About Welsh Heritage');
DELETE FROM stickers;
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (1, 1, 'wayne_hennessey', 'Wales Football Team Player', '2');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (1, 2, 'neco_williams', 'Wales Football Team Player', '2');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (1, 3, 'joe_morrell', 'Wales Football Team Player', '2');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (1, 4, 'ethan_ampadu', 'Wales Football Team Player', '2');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (1, 5, 'connor_roberts', 'Wales Football Team Player', '2');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (2, 1, 'Taine_Basham', 'Wales Rugby Team Player', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (2, 2, 'Adam Beard', 'Wales Rugby Team Player', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (2, 3, 'Elliot Dee', 'Wales Rugby Team Player', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (2, 4, 'Corey Domachowski', 'Wales Rugby Team Player', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (2, 5, 'Ryan Elias', 'Wales Rugby Team Player', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (3, 1, 'Welsh Lady', 'Welsh Heritage', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (3, 2, 'Welsh Outline', 'Welsh Heritage', '1');
INSERT INTO stickers (packID, stickerID, name, description, rarity) VALUES (3, 3, 'Welsh Spoon', 'Welsh Heritage', '1');
delete from locationCoordinates;
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (2, 51.57623, -3.21910 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (3, 51.575372, -3.219186);
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (4, 51.576363, -3.220712 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (9, 51.57239, -3.21992);
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (10, 51.57230, -3.21938 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (13, 51.57168, -3.21861);
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (14, 51.57465, -3.22022 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (17, 51.61117, -3.10198 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (18, 51.61655, -3.12371 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (19, 51.43484, -3.16492 );
insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) values (20, 51.43547, -3.16789 );
delete from localauthority;
insert into localauthority ( localAuthorityName, address1, address2, city, county, postcode, website) values ( 'Caerphilly County Borough Council', 'Tredomen Park','', 'Ystrad Mynach, Hengoed', '', 'CF82 7PG', 'https://www.caerphilly.gov.uk/main.aspx?lang=en-GB');
insert into localauthority ( localAuthorityName, address1, address2, city, county, postcode, website) values ( 'Risca Town Council', 'Unit B, 75 Tredegar Street', '', 'Risca', '', 'NP11 6BW', 'https://www.riscatowncouncil.org.uk/');
insert into localauthority ( localAuthorityName, address1, address2, city, county, postcode, website) values ( 'Penarth Town Council West House', 'Stanwell Road', '', 'Penarth', '', 'CF64 2YG', 'https://www.penarthtowncouncil.gov.uk/your-council/');
delete from businesses;
insert into businesses ( businessName, address1, address2, city, county, postcode, website) values ( 'Caerphilly Castle', 'Castle Street','', 'Caerphilly', '', 'CF836 1JD', 'https://cadw.gov.wales/visit/places-to-visit/caerphilly-castle');
insert into businesses ( businessName, address1, address2, city, county, postcode, website) values ( 'Risca Museum', 'Grove Road', '', 'Risca', '', 'NP11 6GN', 'https://riscamuseum.wales/');
insert into businesses ( businessName, address1, address2, city, county, postcode, website) values ( 'Penarth Pier Pavillion Cinema', 'Windsor Court', 'The Esplanade', 'Penarth', '', 'CF64 3AU', 'https://www.valeofglamorgan.gov.uk/en/enjoying/Coast-and-Countryside/Dog-Beach-Ban.aspx');
delete from townsWithTrails;
insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) values ('Caerphilly', '51.57903','-3.22075 ','51.60418','51.55093','-3.25222','-3.17696');
insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) values ('Risca','51.61195','-3.09648','51.63039','51.59175','-3.12129','-3.06438');
insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) values ('Penarth','51.43893','-3.17354','51.44878','51.41233','-3.20271','-3.16005');
INSERT INTO users (username, password) VALUES ('Admin', 'admin');
INSERT INTO users (username, password) VALUES ('Hannah', 'root');
INSERT INTO users (username, password) VALUES ('Nigel', 'root');
INSERT INTO users (username, password) VALUES ('Oscar', 'root');
INSERT INTO authorities (username, authority) VALUES ('Admin', 'ADMIN');
INSERT INTO authorities (username, authority) VALUES ('Hannah', 'USER');
DELETE FROM stickerprogress;
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 1, 1);
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 1, 2);
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 1, 3);
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 1, 5);
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 2, 1);
INSERT INTO stickerprogress (username, packID, stickerID) VALUES ('Admin', 2, 3);
-- delete from dragonstale;
-- insert into dragonstale(landmarkID, landmarkName, landmarkDescription, imgPath) value (1, 'A scent of...Dragon', 'The Dragon has been spotted near by, find the QR code to continue', '~/images/dragonstale/DTLM1.png');
\ No newline at end of file
/* DELETES AND RECREATES DATABASE EVERY TIME THE SYSTEM IS BOOTED*/
DROP DATABASE IF EXISTS townstest;
CREATE DATABASE IF NOT EXISTS townstest;
USE townstest;
/****************************************************************/
/* DROPS ALL TABLES IF THEY EXIST (they wont but just in case) */
drop table if exists locationCoordinates;
drop table if exists locations;
drop table if exists trails;
DROP TABLE IF EXISTS stickerProgress;
drop table if exists users;
DROP TABLE IF EXISTS stickers;
DROP TABLE IF EXISTS packs;
/****************************************************************/
/* CREATES ALL TABLES */
CREATE TABLE IF NOT EXISTS trails
(trailID varchar(128) primary key,trailName varchar(128),trailNumber varchar(128),city varchar(128)
);
create table if not exists locations
(locationID bigint auto_increment primary key,
locationName varchar(128),
locationEmail varchar(128),
locationDescription longtext,
locationPlace varchar(255),
locationTrailID varchar(128),
locationApproved boolean
);
CREATE TABLE IF NOT EXISTS users (
username varchar(30) primary key NOT NULL,
id bigint auto_increment unique, /*DEPRECATED COLUMN, LEFT IN WHILE SOME OTHER FUNCTIONS STILL USE IT*/
email varchar(128),
password varchar(30) NOT NULL,
enabled boolean default true
);
CREATE TABLE IF NOT EXISTS authorities (
id bigint primary key auto_increment NOT NULL,
username varchar(30) NOT NULL ,
authority varchar(45) NOT NULL
);
CREATE TABLE IF NOT EXISTS packs (
id bigint auto_increment primary key,
name varchar(20) NOT NULL,
description text
);
CREATE TABLE IF NOT EXISTS stickers (
id bigint auto_increment primary key,
packID bigint NOT NULL,
FOREIGN KEY (packID) REFERENCES packs(id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
stickerID bigint NOT NULL, /*STICKER ID NUMBER WITHIN ITS OWN PACK*/
name varchar(30) NOT NULL,
description text NOT NULL,
rarity tinyint
);
CREATE TABLE IF NOT EXISTS stickerProgress (
id bigint auto_increment primary key,
username varchar(30) NOT NULL,
FOREIGN KEY (username) REFERENCES users(username)
ON DELETE CASCADE
ON UPDATE RESTRICT,
packID bigint NOT NULL,
FOREIGN KEY (packID) REFERENCES packs(id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
stickerID bigint NOT NULL,
FOREIGN KEY (stickerID) REFERENCES stickers(id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
create table if not exists locationCoordinates
(
locationCoordID bigint auto_increment primary key,
locationID bigint,
Foreign Key (locationID) REFERENCES locations(locationID)
ON DELETE CASCADE
ON UPDATE RESTRICT,
locationCoordsLat DECIMAL(8,6),
locationCoordsLong DECIMAL(8,6)
);
create table if not exists townsWithTrails
(
townID bigint auto_increment primary key,
townName varchar(128),
townCentreCoordsLat varchar(128),
townCentreCoordsLong varchar(128),
townUppermostCoordsLat varchar(128),
townLowermostCoordsLat varchar(128),
townLeftmostCoordsLong varchar(128),
townRightmostCoordsLong varchar(128)
);
create table if not exists localAuthority
(
localAuthorityID bigint auto_increment primary key,
localAuthorityName varchar(250),
address1 varchar(250),
address2 varchar(250),
city varchar(100),
county varchar(75),
postcode varchar(15),
website varchar(250)
);
create table if not exists businesses
(
businessID bigint auto_increment primary key,
businessName varchar(250),
address1 varchar(250),
address2 varchar(250),
city varchar(100),
county varchar(75),
postcode varchar(15),
website varchar(250)
)
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
<a class="submitLand" href="/landmarkSubmission"> <button> Submit Landmark!</button></a> <a class="submitLand" href="/landmarkSubmission"> <button> Submit Landmark!</button></a>
<a th:if="${#authentication.getName().equals('Admin')}" class="reviewLand" href="/checkpointApproval"> <button> Review Landmark!</button></a> <a th:if="${#authentication.getName().equals('Admin')}" class="reviewLand" href="/checkpointApproval"> <button> Review Landmark!</button></a>
<p class="small-text">Choose your town and start tracking your trails!</p> <p class="small-text">Choose your town and start tracking your trails!</p>
<!-- //todo check if you can do getrole instead of getname-->
</div> </div>
......
...@@ -11,6 +11,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock ...@@ -11,6 +11,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors;
@SpringBootTest @SpringBootTest
@AutoConfigureMockMvc @AutoConfigureMockMvc
...@@ -19,6 +20,7 @@ public class ContainerMockMVCTests { ...@@ -19,6 +20,7 @@ public class ContainerMockMVCTests {
@Autowired @Autowired
private MockMvc mockMvc; private MockMvc mockMvc;
// todo have to test
@Test @Test
public void a_testGreeting() throws Exception { public void a_testGreeting() throws Exception {
this.mockMvc.perform(get("/home")).andDo(print()).andExpect(status().isOk()) this.mockMvc.perform(get("/home")).andDo(print()).andExpect(status().isOk())
...@@ -30,5 +32,26 @@ public class ContainerMockMVCTests { ...@@ -30,5 +32,26 @@ public class ContainerMockMVCTests {
this.mockMvc.perform(get("/mobile-home")).andDo(print()).andExpect(status().isOk()) this.mockMvc.perform(get("/mobile-home")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Welcome to VZTA Smart Towns!"))); .andExpect(content().string(containsString("Welcome to VZTA Smart Towns!")));
} }
@Test
public void a_testGreeting3() throws Exception {
this.mockMvc.perform(get("/towns/Caerphilly")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Caerphilly Trails")));
}
@Test
public void a_testGreeting4() throws Exception {
this.mockMvc.perform(get("/mobile-home").with(SecurityMockMvcRequestPostProcessors.user("Admin").roles("ADMIN")))
.andDo(print())
.andExpect(content().string(containsString("Review Landmark!")));
}
} }
package Team5.SmartTowns;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HTTPConnectionTests {
@Value(value="${local.server.port}")
private int port;
@Autowired
private TestRestTemplate restTemplate;
//todo replace values with mockDB so can differentiate from project DB
@Test
public void greetingShouldReturnDefaultMessage() throws Exception {
assertThat(this.restTemplate.getForObject("http://localhost:" + port + "/mobile-home",
String.class)).contains("Welcome to VZTA Smart Towns!");
}
}
package Team5.SmartTowns; package Team5.SmartTowns;
import Team5.SmartTowns.data.Location; import Team5.SmartTowns.data.Location;
import Team5.SmartTowns.data.Trail;
import Team5.SmartTowns.landmarks.Landmarks; import Team5.SmartTowns.landmarks.Landmarks;
import Team5.SmartTowns.placeswithcoordinates.LocationsCoordinates; import Team5.SmartTowns.placeswithcoordinates.LocationsCoordinates;
import Team5.SmartTowns.placeswithcoordinates.PlacesController; import Team5.SmartTowns.placeswithcoordinates.PlacesController;
import Team5.SmartTowns.placeswithcoordinates.TownWithTrails; import Team5.SmartTowns.placeswithcoordinates.TownWithTrails;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
...@@ -15,12 +19,13 @@ import java.util.Comparator; ...@@ -15,12 +19,13 @@ import java.util.Comparator;
import java.util.List; import java.util.List;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JUnitSimpleTests { public class JUnitSimpleTests {
@Test @Test
@Order(1)
public void landmarksTest(){ // generic for all landmarks, trails+dragons tale public void landmarksTest(){ // generic for all landmarks, trails+dragons tale
Landmarks landmark = new Landmarks("99",1,"MockLandmark","Mock@Mock2.com", Landmarks landmark = new Landmarks("99",1,"MockLandmark","Mock@Mock2.com",
"MockLandmarkDesc","MockRisca","MockImage"); "MockLandmarkDesc","MockRisca","MockImage");
...@@ -50,6 +55,7 @@ public class JUnitSimpleTests { ...@@ -50,6 +55,7 @@ public class JUnitSimpleTests {
} }
@Test @Test
@Order(2)
public void locationsTest(){ //specific for trail locations public void locationsTest(){ //specific for trail locations
Location location = new Location(1,"MockLocation", "Mock@Test.co.uk", Location location = new Location(1,"MockLocation", "Mock@Test.co.uk",
"MockDescription","MockCaerphilly","99",false); "MockDescription","MockCaerphilly","99",false);
...@@ -85,6 +91,7 @@ public class JUnitSimpleTests { ...@@ -85,6 +91,7 @@ public class JUnitSimpleTests {
@Test @Test
@Order(3)
public void locationsCoordinatesTest(){ public void locationsCoordinatesTest(){
LocationsCoordinates locCoord = new LocationsCoordinates(1,51.57756,-3.22002); LocationsCoordinates locCoord = new LocationsCoordinates(1,51.57756,-3.22002);
assertEquals(locCoord.getLocationID(),1); assertEquals(locCoord.getLocationID(),1);
...@@ -99,6 +106,24 @@ public class JUnitSimpleTests { ...@@ -99,6 +106,24 @@ public class JUnitSimpleTests {
assertEquals(-5,locCoord.getLocationCoordsLong()); assertEquals(-5,locCoord.getLocationCoordsLong());
} }
@Test
public void trailTest(){
Trail trail = new Trail(101L, "MockTrail", "0101");
assertEquals(trail.getTrailsId(),101);
assertEquals(trail.getTrailName(),"MockTrail");
assertEquals(trail.getTrailNumber(),"0101");
assertTrue(trail.getTrailsId()<200);
assertTrue(trail.getTrailsId()>100);
trail.setTrailsId(202L);
assertEquals(trail.getTrailsId(),202);
trail.setTrailName("MockChange");
assertEquals(trail.getTrailName(),"MockChange");
trail.setTrailNumber("99");
assertEquals(trail.getTrailNumber(),"99");
}
@Test @Test
public void townWithTrailsTest(){ public void townWithTrailsTest(){
...@@ -112,13 +137,28 @@ public class JUnitSimpleTests { ...@@ -112,13 +137,28 @@ public class JUnitSimpleTests {
assertEquals(townTrail.getTownLeftmostCoordsLong(),"-3.25222"); assertEquals(townTrail.getTownLeftmostCoordsLong(),"-3.25222");
assertEquals(townTrail.getTownRightmostCoordsLong(),"-3.17696"); assertEquals(townTrail.getTownRightmostCoordsLong(),"-3.17696");
townTrail.setTownName("MockChangeTown");
assertEquals(townTrail.getTownName(),"MockChangeTown");
townTrail.setTownCentreCoordsLat("50.00");
assertEquals(townTrail.getTownCentreCoordsLat(),"50.00");
townTrail.setTownCentreCoordsLong("-5.00");
assertEquals(townTrail.getTownCentreCoordsLong(),"-5.00");
townTrail.setTownUppermostCoordsLat("55.00");
assertEquals(townTrail.getTownUppermostCoordsLat(),"55.00");
townTrail.setTownLowermostCoordsLat("45.00");
assertEquals(townTrail.getTownLowermostCoordsLat(),"45.00");
townTrail.setTownLeftmostCoordsLong("-6.00");
assertEquals(townTrail.getTownLeftmostCoordsLong(),"-6.00");
townTrail.setTownRightmostCoordsLong("-4.00");
assertEquals(townTrail.getTownRightmostCoordsLong(),"-4.00");
//no setters in file add?
} }
@Test @Test
@Order(4)
public void reorderingLocationCoordsListToMatchIDWithLocationListTest(){ public void reorderingLocationCoordsListToMatchIDWithLocationListTest(){
List<Location> locList = new ArrayList<>(); List<Location> locList = new ArrayList<>(); /// trail location list, w/ ID as expected from DB output
locList.add(new Location(1,"MockLocation", "Mock@Test.co.uk", locList.add(new Location(1,"MockLocation", "Mock@Test.co.uk",
"MockDescription","MockCaerphilly","99",false)); "MockDescription","MockCaerphilly","99",false));
locList.add(new Location(2,"MockLocation2", "Mock2@Test.co.uk", locList.add(new Location(2,"MockLocation2", "Mock2@Test.co.uk",
...@@ -126,15 +166,21 @@ public class JUnitSimpleTests { ...@@ -126,15 +166,21 @@ public class JUnitSimpleTests {
locList.add(new Location(3,"MockLocation3", "Mock3@Test.co.uk", locList.add(new Location(3,"MockLocation3", "Mock3@Test.co.uk",
"MockDescription","MockCaerphilly","99",false)); "MockDescription","MockCaerphilly","99",false));
List<LocationsCoordinates> locCoordsList = new ArrayList<>(); List<LocationsCoordinates> locCoordsListOriginal = new ArrayList<>(); // /// trail locationCoordinates list, w/ ID as expected from DB output, locationID is foreign key.
locCoordsList.add(new LocationsCoordinates(3,51.57756,-3.22002)); locCoordsListOriginal.add(new LocationsCoordinates(3,51.57756,-3.22002));
locCoordsList.add(new LocationsCoordinates(1,51.57756,-3.22002)); locCoordsListOriginal.add(new LocationsCoordinates(1,51.57756,-3.22002));
locCoordsList.add(new LocationsCoordinates(2,51.57756,-3.22002)); locCoordsListOriginal.add(new LocationsCoordinates(2,51.57756,-3.22002));
List<LocationsCoordinates> locCoordsReorder = new ArrayList<>(); // Same list as above, repeated to allow comparison w/ original
locCoordsReorder.add(new LocationsCoordinates(3,51.57756,-3.22002));
locCoordsReorder.add(new LocationsCoordinates(1,51.57756,-3.22002));
locCoordsReorder.add(new LocationsCoordinates(2,51.57756,-3.22002));
List<LocationsCoordinates> locCoordsReorder= PlacesController.reorderCoordsWRTLocations(locCoordsList); PlacesController.reorderCoordsWRTLocations(locCoordsReorder); // second list reordered to be ascending locationID order to match trail location ID list.
assertEquals(locList.get(0).getLocationID(),locCoordsReorder.get(0).getLocationID()); assertEquals(locList.get(0).getLocationID(),locCoordsReorder.get(0).getLocationID());
assertEquals(locList.get(2).getLocationID(),locCoordsReorder.get(2).getLocationID()); assertEquals(locList.get(2).getLocationID(),locCoordsReorder.get(2).getLocationID());
assertNotEquals(locList.get(1).getLocationID(),locCoordsReorder.get(2).getLocationID()); assertNotEquals(locList.get(1).getLocationID(),locCoordsReorder.get(2).getLocationID());
assertNotEquals(locList.get(0).getLocationID(),locCoordsListOriginal.get(0).getLocationID());
} }
} }
......
package Team5.SmartTowns; package Team5.SmartTowns;
import Team5.SmartTowns.data.*;
import Team5.SmartTowns.landmarks.LandmarksController;
import Team5.SmartTowns.placeswithcoordinates.LocationsCoordinates;
import Team5.SmartTowns.placeswithcoordinates.PlacesController;
import Team5.SmartTowns.placeswithcoordinates.PlacesCoordinatesRepository;
import Team5.SmartTowns.placeswithcoordinates.TownWithTrails;
import Team5.SmartTowns.rewards.RewardsRepository;
import Team5.SmartTowns.security.SecurityConfiguration;
import Team5.SmartTowns.towns.TownController;
import Team5.SmartTowns.towns.TownStorage;
import Team5.SmartTowns.towns.Towns;
import jakarta.servlet.ServletException;
import org.junit.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static net.bytebuddy.matcher.ElementMatchers.is;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.not;
import static org.hamcrest.Matchers.anything;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.BooleanSupplier;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
//@ExtendWith(SpringExtension.class)
@WebMvcTest({PlacesController.class, LandmarksController.class, TownController.class})
@Import(SecurityConfiguration.class)
@AutoConfigureTestDatabase //todo, check if this is okay - https://stackoverflow.com/questions/57958507/spring-boot-cannot-find-datasource-bean-in-junit-tests
public class LightweightMockMVCTests { public class LightweightMockMVCTests {
//todo check approvalform
@Autowired
private MockMvc mockMvc;
@MockBean
private PlacesCoordinatesRepository placesRepo;
@MockBean
private LocationRepository locationRepo;
@MockBean
private TrailsRepository trailsRepo;
@MockBean
private RewardsRepository rewardsRepository;
@MockBean
private TownRepository townRepo;
@MockBean
TownStorage townStore;
//todo test approval site lest, post as well?
@Test
public void homeGreetingTest() throws Exception {
this.mockMvc.perform(get("/mobile-home")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Welcome to VZTA Smart Towns!")));
}
// @Test
// public void noDBTest() throws Exception {
// TownWithTrails townTrail = new TownWithTrails("Caerphilly","51.57903","-3.22075",
// "51.60418", "51.55093", "-3.25222", "-3.17696");
// Trail trail = new Trail(102L, "Caerphilly Pub Trail","0101" );
//
// given(this.placesRepo.getAllTownCoords()).willReturn(Arrays.asList(townTrail));
// given(this.trailsRepo.getAllTrails()).willReturn(Arrays.asList(trail));
// this.mockMvc.perform(get("/towns/Caerphilly")).andDo(print()).andExpect(status().isOk())
// .andExpect(content().string(containsString("MockTrail")));
// }
@Test
public void ensureLandmarkFormButtonShowsTest() throws Exception {
// Towns town = new Towns("MockTown",01,99,67,"null"); //todo this is hard coded, fix.
//
// given(this.townStore.getTownList()).willReturn(Arrays.asList(town));
// this.mockMvc.perform(get("/mobile-home")).andExpect(status().isOk()) // check h1
// .andExpect(content().string(containsString("Welcome to VZTA Smart Towns!")))
// .andExpect(content().string(containsString("MockTown"+"99")))
// .andExpect(content().string(containsString("67%")));
this.mockMvc.perform(get("/mobile-home"))
.andExpect(content().string(containsString("Submit Landmark!"))); // all visitors can submit
// .andExpect(content().string(containsString("Review Landmark!")));
AssertionError thrown = assertThrows(AssertionError.class , () ->{
this.mockMvc.perform(get("/mobile-home")).andExpect(content().string(containsString("Review Landmark!")));;//review doesn't show for visitors
});
assertTrue(thrown.getMessage().contains("Expected: a string containing \"Review Landmark!\""));
}
@Test
public void checkLandmarkSubmissionFormDisplaysFieldsTest() throws Exception {
this.mockMvc.perform(get("/landmarkSubmission")).andExpect(status().isOk()) // check h1
.andExpect(content().string(containsString("Interested in joining our trails? Sign up Here!"))) //checks that all form criteria shows correctly
.andExpect(content().string(containsString("Business Name:"))) //input title for business name
.andExpect(content().string(containsString("Business name here..."))) //text box content indicator
.andExpect(content().string(containsString("Contact Address"))) //input title
.andExpect(content().string(containsString("E-mail here..."))) //text box indicator
.andExpect(content().string(containsString("Please Describe Your Business:")))//input title
.andExpect(content().string(containsString("Max 200 words please...")))//text box indicator
.andExpect(content().string(containsString("Your Location:")))//input title
.andExpect(content().string(containsString("Select Location")))//drop down default choice
.andExpect(content().string(containsString("Caerphilly"))) // checking all drop-down options - all hard-coded as of now todo change later?
.andExpect(content().string(containsString("Risca")))
.andExpect(content().string(containsString("Penarth")))
.andExpect(content().string(containsString("Trail:")))//input title
.andExpect(content().string(containsString("Select Trail")))//drop down default choice
.andExpect(content().string(containsString("(Caerphilly) Castle Trail"))) // checking all drop-down options
.andExpect(content().string(containsString("(Caerphilly) Pub Trail")))
.andExpect(content().string(containsString("(Caerphilly) Heritage Trail")))
.andExpect(content().string(containsString("(Risca) Heritage and Culture Trail")))
.andExpect(content().string(containsString("(Penarth) Esplanade Trail")))
.andExpect(content().string(containsString("Submit")));//button content
}
@Test
public void trailFragmentInitiallyLoadsCorrectlyForValidTrails() throws Exception {
Trail trail = new Trail(102L, "Mock Caerphilly Trail","0101" );
given(this.trailsRepo.getAllTrails()).willReturn(Arrays.asList(trail));
this.mockMvc.perform(get("/trails/Mock-Caerphilly-Trail")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Mock Caerphilly Trail")));
assertThrows(ServletException.class, () ->{
this.mockMvc.perform(get("/trails/This-Trail-Doesnt-Exist")).andExpect(status().isNotFound());
});
}
@Test
public void trailFragmentLoadsMapForValidTrails() throws Exception { //tests trails page (which shows a list of trail-locations)
Trail trail = new Trail(102L, "Caerphilly Castle Trail","0102" );
given(this.trailsRepo.getAllTrails()).willReturn(Arrays.asList(trail));
Location location = new Location(1,"MockLocation", "Mock@Test.co.uk", //mock trail location
"MockDescription","MockCaerphilly","102",true);
given(this.locationRepo.getAllApprovedLocations()).willReturn(Arrays.asList(location));
this.mockMvc.perform(get("/trails/Caerphilly-Castle-Trail")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Caerphilly Castle Trail"))) //tests that trail name loads correctly
.andExpect(content().string(containsString("MockLocation"))) // checks fake trail-location loads correctly
.andExpect(content().string(containsString("https://www.google.com/maps/dir/51.57623,-3.21910/51.575372,-3.219186/51.576363,-3.220712//@11z&output=svembed"))) //checks that href works
.andExpect(content().string(containsString("https://maps.google.com/maps?q=51.57623,-3.21910&output=svembed"))); //checks that current map-substitute shows
}
@Test
public void trailLocationPageTest() throws Exception { //tests individual trail-location page
Location location = new Location(1,"MockLocation", "Mock@Test.co.uk",
"MockDescription","MockCaerphilly","99",true);
given(this.locationRepo.getAllApprovedLocations()).willReturn(Arrays.asList(location));
LocationsCoordinates locCoords = new LocationsCoordinates(1,51.57756,-3.22002);
// LocationsCoordinates locCoords2 = new LocationsCoordinates(2,52.00,-3.10);
given(this.placesRepo.getAllLocationCoords()).willReturn(Arrays.asList(locCoords));
Trail trail = new Trail(99L, "MockLocation","0099");
String mock= "MockLocation";
given(this.trailsRepo.getTrailNameWithID("99")).willReturn(mock);
this.mockMvc.perform(get("/checkpoints/MockLocation")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("MockLocation"))) //checks mock-lkocation name is showing
.andExpect(content().string(containsString("MockDescription"))) //checks description shows
.andExpect(content().string(containsString("MockCaerphilly"))) //checks mock-town shows
.andExpect(content().string(containsString("https://maps.google.com/maps?q=51.57756,-3.22002&amp;hl=en&amp;z=20&amp;output=embed"))) //check iframe src is embedded correctly
.andExpect(content().string(containsString("<a href=\"/trails/MockLocation\">Return</a></H2>"))); //checks href leads back to parent trail-list
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment