diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/buisnesslogic/pom.xml b/buisnesslogic/pom.xml old mode 100644 new mode 100755 index 0306b93..73b3b1d --- a/buisnesslogic/pom.xml +++ b/buisnesslogic/pom.xml @@ -16,8 +16,8 @@ UTF-8 - 1.8 - 1.8 + 1.14 + 1.14 @@ -27,17 +27,17 @@ 4.12 test - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.vintage - junit-vintage-engine - - - + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + javax.xml.bind jaxb-api @@ -57,7 +57,7 @@ org.apache.poi poi-ooxml - 3.17 + 4.0.0 + + org.springframework.security + spring-security-test + 5.3.4.RELEASE + test + + org.springframework.boot spring-boot-starter-security diff --git a/restservice/src/main/java/com/plannaplan/App.java b/restservice/src/main/java/com/plannaplan/App.java old mode 100644 new mode 100755 index 7f8c652..b85cbb9 --- a/restservice/src/main/java/com/plannaplan/App.java +++ b/restservice/src/main/java/com/plannaplan/App.java @@ -13,26 +13,48 @@ import org.springframework.context.event.EventListener; @SpringBootApplication public class App { - public final static String API_VERSION = "v1"; + public final static String API_VERSION = "v1"; - @Autowired - UserService userService; + @Autowired + UserService userService; - public static void main(String[] args) { - Logo logo = new Logo("beta"); - System.out.println(logo.getLogo()); - System.out.println( - "|=============================================================================================|"); - SpringApplication.run(App.class, args); - } + public static void main(String[] args) { + Logo logo = new Logo("beta"); + System.out.println(logo.getLogo()); + System.out.println( + "|=============================================================================================|"); + SpringApplication.run(App.class, args); + } - @EventListener(ApplicationReadyEvent.class) - public void importData() { - User testUser = new User(); - testUser.setEmail("filizy@st.amu.edu.pl"); - testUser.setName("Filip"); - testUser.setSurname("Izydorczyk"); - testUser.setRole(UserRoles.STUDENT); - this.userService.save(testUser); - } + @EventListener(ApplicationReadyEvent.class) + public void importData() { + User filip = new User(); + filip.setEmail("filizy@st.amu.edu.pl"); + filip.setName("Filip"); + filip.setSurname("Izydorczyk"); + filip.setRole(UserRoles.STUDENT); + this.userService.save(filip); + + User hub = new User(); + hub.setEmail("hubwrz1@st.amu.edu.pl"); + hub.setName("Hubert"); + hub.setSurname("Wrzesiński"); + hub.setRole(UserRoles.STUDENT); + this.userService.save(hub); + + User mac = new User(); + mac.setEmail("macglo2@st.amu.edu.pl"); + mac.setName("Maciej"); + mac.setSurname("Głowacki"); + mac.setRole(UserRoles.STUDENT); + this.userService.save(mac); + + User mar = new User(); + mar.setEmail("marwoz16@st.amu.edu.pl"); + mar.setName("Marcin"); + mar.setSurname("Woźniak"); + mar.setRole(UserRoles.STUDENT); + this.userService.save(mar); + + } } diff --git a/restservice/src/main/java/com/plannaplan/Logo.java b/restservice/src/main/java/com/plannaplan/Logo.java old mode 100644 new mode 100755 diff --git a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java new file mode 100755 index 0000000..1ff8570 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java @@ -0,0 +1,47 @@ +package com.plannaplan.controllers; + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Optional; + +import com.plannaplan.App; +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Commision; +import com.plannaplan.entities.User; +import com.plannaplan.responses.mappers.AssignmentResponseMappers; +import com.plannaplan.responses.models.GetCurrentAssignmentsResponse; +import com.plannaplan.services.AssignmentService; +import com.plannaplan.services.CommisionService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; + +@RestController +@CrossOrigin +@RequestMapping("/api/" + App.API_VERSION + "/assignments") +public class AssignmentsController extends TokenBasedController { + + @Autowired + private CommisionService commisionService; + + @Autowired + private AssignmentService assignmentService; + + @GetMapping("/getCurrentAssignments") + public ResponseEntity> getCurrentAssignments() throws Exception { + User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException("User not found")); + Optional com = this.commisionService.getNewestCommision(user); + + if (com.isPresent()) { + List respone = this.assignmentService.getCommisionAssignments(com.get()); + return new ResponseEntity<>(AssignmentResponseMappers.mapToResponse(respone), HttpStatus.OK); + } + + return new ResponseEntity<>(null, HttpStatus.OK); + } +} diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java new file mode 100755 index 0000000..ea7d2aa --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -0,0 +1,69 @@ +package com.plannaplan.controllers; + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +import com.plannaplan.App; +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Commision; +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.User; +import com.plannaplan.exceptions.UserNotFoundException; +import com.plannaplan.responses.mappers.CommisionResponseMappers; +import com.plannaplan.responses.models.CommisionResponse; +import com.plannaplan.services.AssignmentService; +import com.plannaplan.services.CommisionService; +import com.plannaplan.services.GroupService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +@RestController +@CrossOrigin +@RequestMapping("/api/" + App.API_VERSION + "/commisions") +public class CommisionController extends TokenBasedController { + + @Autowired + private CommisionService commisionService; + + @Autowired + private GroupService groupServcicxe; + + @Autowired + private AssignmentService assignmentService; + + public CommisionController() { + } + + @PostMapping("/add") + public ResponseEntity addCommision(@RequestBody List groups) throws UserNotFoundException { + + User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); + Commision com = new Commision(user); + this.commisionService.save(com); + + groups.stream().forEach((groupId) -> { + Groups group = this.groupServcicxe.getGroupById(groupId).orElseThrow(() -> new NullPointerException()); + Assignment a = new Assignment(group, com); + this.assignmentService.save(a); + }); + + return new ResponseEntity<>("Succes", HttpStatus.OK); + } + + @GetMapping("/getAllCommisions") + public ResponseEntity> getAlCommisions() throws UserNotFoundException { + User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); + List result = CommisionResponseMappers + .mapToResponse(this.commisionService.getUsersCommisions(user)); + return new ResponseEntity<>(result, HttpStatus.OK); + } + +} diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java old mode 100644 new mode 100755 index 6438c74..5682e78 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import com.plannaplan.App; -import com.plannaplan.Controller; import com.plannaplan.models.ConfigData; +import com.plannaplan.services.ConfiguratorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -23,12 +23,12 @@ import org.springframework.web.multipart.MultipartFile; public class ConfigController { @Autowired - private Controller contrl; + private ConfiguratorService contrl; @PostMapping("/config") public ResponseEntity configApp(@RequestParam("file") MultipartFile file) { try { - ConfigData data = new ConfigData(null, null, file.getInputStream()); + final ConfigData data = new ConfigData(null, null, file.getInputStream()); this.contrl.config(data); return new ResponseEntity<>("Sucess", HttpStatus.OK); } catch (IOException e) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java old mode 100644 new mode 100755 index e56e294..204fbc3 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -1,13 +1,12 @@ package com.plannaplan.controllers; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; import java.util.List; import com.plannaplan.App; import com.plannaplan.entities.Course; -import com.plannaplan.entities.Groups; +import com.plannaplan.responses.mappers.CoursesResponseMappers; +import com.plannaplan.responses.models.GetCoursesResponse; +import com.plannaplan.responses.models.GetCoursesWithGroupsResponse; import com.plannaplan.services.CourseService; import org.springframework.beans.factory.annotation.Autowired; @@ -26,44 +25,19 @@ public class CoursesController { private CourseService courseService; @GetMapping("/getCourses") - public ResponseEntity>> getMethodName() { + public ResponseEntity> getMethodName() { List courses = this.courseService.getAllCourses(); - List> response = new ArrayList<>(); - for (Course c : courses) { - Dictionary element = new Hashtable<>(); - element.put("id", c.getId()); - element.put("name", c.getName()); - response.add(element); - } - + List response = CoursesResponseMappers.mapToGetCoursesResponse(courses); return new ResponseEntity<>(response, HttpStatus.OK); } @GetMapping("/getCoursesWithGroups") - public ResponseEntity>> getCoursesWithGroups() { - List courses = this.courseService.getAllCourses(); - List> response = new ArrayList<>(); - for (Course c : courses) { - Dictionary element = new Hashtable<>(); - element.put("id", c.getId()); - element.put("name", c.getName()); - List> groups = new ArrayList<>(); - for (Groups g : c.getGroups()) { - Dictionary group = new Hashtable<>(); - group.put("id", g.getId()); - group.put("day", g.getDay().label); - group.put("time", g.getTimeString()); - group.put("lecturer", g.getLecturer().toString()); - group.put("room", g.getRoom()); - group.put("type", g.getType()); - groups.add(group); - } - - element.put("groups", groups); - response.add(element); - } - + public ResponseEntity> getCoursesWithGroups() { + final List courses = this.courseService.getAllCourses(); + final List response = CoursesResponseMappers + .mapToGetCoursesWithGroupsResponse(courses); return new ResponseEntity<>(response, HttpStatus.OK); + } } \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java old mode 100644 new mode 100755 index 2b56024..478b6c1 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -1,12 +1,11 @@ package com.plannaplan.controllers; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; import java.util.List; import com.plannaplan.App; import com.plannaplan.entities.Groups; +import com.plannaplan.responses.mappers.GroupsMappers; +import com.plannaplan.responses.models.DefaultGroupResponse; import com.plannaplan.services.GroupService; import org.springframework.beans.factory.annotation.Autowired; @@ -26,26 +25,12 @@ public class GroupController { private GroupService groupService; @GetMapping("/getCourseGroups") - public ResponseEntity>> getCourses(@RequestParam("id") Long id, + public ResponseEntity> getCourses(@RequestParam("id") Long id, @RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) { List groups = this.groupService.getGroupsByCourse(id); - List> response = new ArrayList<>(); - - for (Groups g : groups) { - Dictionary group = new Hashtable<>(); - group.put("id", g.getId()); - group.put("day", g.getDay().label); - group.put("time", g.getTimeString()); - group.put("lecturer", g.getLecturer().toString()); - group.put("room", g.getRoom()); - if (capacity) { - group.put("capacity", g.getCapacity()); - } - group.put("type", g.getType()); - - response.add(group); + if (capacity) { + return new ResponseEntity<>(GroupsMappers.mapToCapacityResponse(groups), HttpStatus.OK); } - - return new ResponseEntity<>(response, HttpStatus.OK); + return new ResponseEntity<>(GroupsMappers.mapToDefaultResponse(groups), HttpStatus.OK); } } \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenBasedController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenBasedController.java new file mode 100755 index 0000000..504ce33 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenBasedController.java @@ -0,0 +1,30 @@ +package com.plannaplan.controllers; + +import java.util.Optional; + +import com.plannaplan.entities.User; +import com.plannaplan.exceptions.UserNotFoundException; +import com.plannaplan.services.UserService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.authentication.AnonymousAuthenticationToken; + +public abstract class TokenBasedController { + @Autowired + protected UserService userService; + + public TokenBasedController() { + } + + protected Optional getCurrentUser() throws UserNotFoundException { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if (!(authentication instanceof AnonymousAuthenticationToken)) { + return Optional.of(this.userService.getUserByEmail(authentication.getName())); + } else { + return Optional.empty(); + } + } +} \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java old mode 100644 new mode 100755 index f6ef1d1..5093783 --- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -17,14 +17,14 @@ import org.springframework.web.bind.annotation.RestController; @CrossOrigin public class TokenController { - public static String SERVICE_URL = "http://localhost:3000"; + private final static String SERVICE_URL = "http://localhost:3000"; @Autowired private UserService userService; @GetMapping("/token") public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { - CasValidator validator = new CasValidator(SERVICE_URL, ticket); + final CasValidator validator = new CasValidator(SERVICE_URL, ticket); try { String authority = validator.validate(); diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java new file mode 100755 index 0000000..abc7ddc --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java @@ -0,0 +1,16 @@ +package com.plannaplan.responses.mappers; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.responses.models.GetCurrentAssignmentsResponse; + +public class AssignmentResponseMappers { + + public static final List mapToResponse(List assignments) { + return assignments.stream().filter(Objects::nonNull).map(GetCurrentAssignmentsResponse::new) + .collect(Collectors.toList()); + } +} diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/CommisionResponseMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/CommisionResponseMappers.java new file mode 100755 index 0000000..3303e96 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/CommisionResponseMappers.java @@ -0,0 +1,14 @@ +package com.plannaplan.responses.mappers; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.plannaplan.entities.Commision; +import com.plannaplan.responses.models.CommisionResponse; + +public class CommisionResponseMappers { + public static final List mapToResponse(List commisions) { + return commisions.stream().filter(Objects::nonNull).map(CommisionResponse::new).collect(Collectors.toList()); + } +} diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java new file mode 100755 index 0000000..24958c5 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java @@ -0,0 +1,20 @@ +package com.plannaplan.responses.mappers; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.GetCoursesResponse; +import com.plannaplan.responses.models.GetCoursesWithGroupsResponse; + +public class CoursesResponseMappers { + public static final List mapToGetCoursesResponse(List courses) { + return courses.stream().filter(Objects::nonNull).map(GetCoursesResponse::new).collect(Collectors.toList()); + } + + public static final List mapToGetCoursesWithGroupsResponse(List courses) { + return courses.stream().filter(Objects::nonNull).map(GetCoursesWithGroupsResponse::new) + .collect(Collectors.toList()); + } +} diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java new file mode 100755 index 0000000..415be62 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -0,0 +1,20 @@ +package com.plannaplan.responses.mappers; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.plannaplan.entities.Groups; +import com.plannaplan.responses.models.DefaultGroupResponse; +import com.plannaplan.responses.models.WithCapacityGroupResponse; + +public class GroupsMappers { + public static List mapToDefaultResponse(List groups) { + return groups.stream().filter(Objects::nonNull).map(DefaultGroupResponse::new).collect(Collectors.toList()); + } + + public static List mapToCapacityResponse(List groups) { + return groups.stream().filter(Objects::nonNull).map(WithCapacityGroupResponse::new) + .collect(Collectors.toList()); + } +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/CommisionResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/CommisionResponse.java new file mode 100755 index 0000000..585d871 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/CommisionResponse.java @@ -0,0 +1,24 @@ +package com.plannaplan.responses.models; + +import java.sql.Timestamp; + +import com.plannaplan.entities.Commision; + +public class CommisionResponse { + private Long id; + private Timestamp commisionDate; + + public CommisionResponse(Commision commision) { + this.id = commision.getId(); + this.commisionDate = commision.getCommisionDate(); + } + + public Timestamp getCommisionDate() { + return commisionDate; + } + + public Long getId() { + return id; + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/DefaultGroupResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/DefaultGroupResponse.java new file mode 100755 index 0000000..6054be1 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/DefaultGroupResponse.java @@ -0,0 +1,53 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; +import com.plannaplan.types.GroupType; + +public class DefaultGroupResponse { + + private Long id; + private int day; + private String time; + private String lecturer; + private String room; + private GroupType type; + + public DefaultGroupResponse(Groups group) { + this.id = group.getId() != null ? group.getId() : null; + this.day = group.getDay() != null ? group.getDay().label : -1; + this.time = group.getTimeString() != null ? group.getTimeString() : ""; + this.lecturer = group.getLecturer() != null ? group.getLecturer().toString() : ""; + this.room = group.getRoom() != null ? group.getRoom() : ""; + this.type = group.getType() != null ? group.getType() : null; + } + + public DefaultGroupResponse(Assignment assignment) { + this(assignment.getGroup()); + } + + public GroupType getType() { + return type; + } + + public String getRoom() { + return room; + } + + public String getLecturer() { + return lecturer; + } + + public String getTime() { + return time; + } + + public int getDay() { + return day; + } + + public Long getId() { + return id; + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesResponse.java new file mode 100755 index 0000000..565eb80 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesResponse.java @@ -0,0 +1,12 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.abstracts.CoursesResponse; + +public class GetCoursesResponse extends CoursesResponse { + + public GetCoursesResponse(Course course) { + super(course); + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponse.java new file mode 100755 index 0000000..404366d --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponse.java @@ -0,0 +1,34 @@ +package com.plannaplan.responses.models; + +import java.util.ArrayList; +import java.util.List; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.abstracts.CoursesResponse; +import com.plannaplan.types.GroupType; + +public class GetCoursesWithGroupsResponse extends CoursesResponse { + + private List lectures = new ArrayList<>(); + private List classes = new ArrayList<>(); + + public GetCoursesWithGroupsResponse(Course course) { + super(course); + course.getGroups().stream().forEach(group -> { + if (group.getType() == GroupType.CLASS) { + this.classes.add(new DefaultGroupResponse(group)); + } else { + this.lectures.add(new DefaultGroupResponse(group)); + } + }); + } + + public List getClasses() { + return this.classes; + } + + public List getLectures() { + return this.lectures; + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponse.java new file mode 100755 index 0000000..b307a61 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponse.java @@ -0,0 +1,11 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Assignment; + +public class GetCurrentAssignmentsResponse extends WithCapacityGroupResponse { + + public GetCurrentAssignmentsResponse(Assignment assignment) { + super(assignment); + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/WithCapacityGroupResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/WithCapacityGroupResponse.java new file mode 100755 index 0000000..4b40dc4 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/WithCapacityGroupResponse.java @@ -0,0 +1,23 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; + +public class WithCapacityGroupResponse extends DefaultGroupResponse { + + private int capacity; + + public WithCapacityGroupResponse(Groups group) { + super(group); + this.capacity = group.getCapacity(); + } + + public WithCapacityGroupResponse(Assignment assignment) { + this(assignment.getGroup()); + } + + public int getCapacity() { + return capacity; + } + +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/abstracts/CoursesResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/abstracts/CoursesResponse.java new file mode 100755 index 0000000..6f1f916 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/abstracts/CoursesResponse.java @@ -0,0 +1,23 @@ +package com.plannaplan.responses.models.abstracts; + +import com.plannaplan.entities.Course; + +public abstract class CoursesResponse { + + private Long id; + private String name; + + public CoursesResponse(Course course) { + this.id = course.getId() != null ? course.getId() : null; + this.name = course.getName() != null ? course.getName() : ""; + } + + public String getName() { + return name; + } + + public Long getId() { + return id; + } + +} diff --git a/restservice/src/main/java/com/plannaplan/security/AuthenticationFilter.java b/restservice/src/main/java/com/plannaplan/security/AuthenticationFilter.java old mode 100644 new mode 100755 diff --git a/restservice/src/main/java/com/plannaplan/security/AuthenticationProvider.java b/restservice/src/main/java/com/plannaplan/security/AuthenticationProvider.java old mode 100644 new mode 100755 index aa9ff3d..110098d --- a/restservice/src/main/java/com/plannaplan/security/AuthenticationProvider.java +++ b/restservice/src/main/java/com/plannaplan/security/AuthenticationProvider.java @@ -23,7 +23,7 @@ public class AuthenticationProvider extends AbstractUserDetailsAuthenticationPro @Override protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { - // TODO Auto-generated method stub + // is being done in other task } @@ -31,24 +31,16 @@ public class AuthenticationProvider extends AbstractUserDetailsAuthenticationPro protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { - String token = authentication.getCredentials().toString(); - - User user = this.userService.getByToken(token); - - if (user == null) { - throw new UsernameNotFoundException("Cannot find user with authentication token=" + token); - } - + final String token = authentication.getCredentials().toString(); + User user = this.userService.getByToken(token) + .orElseThrow(() -> new UsernameNotFoundException("Cannot find user with given authority")); UserDetails response = new UserDetails() { - /** - * - */ private static final long serialVersionUID = 1L; @Override public Collection getAuthorities() { - // TODO Auto-generated method stub + // is being done in other task return null; } @@ -59,7 +51,7 @@ public class AuthenticationProvider extends AbstractUserDetailsAuthenticationPro @Override public String getUsername() { - return user.getName() + " " + user.getSurname(); + return user.getEmail(); } @Override @@ -74,7 +66,7 @@ public class AuthenticationProvider extends AbstractUserDetailsAuthenticationPro @Override public boolean isCredentialsNonExpired() { - // TODO Auto-generated method stub + // is being done in other task return true; } diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java b/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java old mode 100644 new mode 100755 diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidator.java b/restservice/src/main/java/com/plannaplan/security/CasValidator.java old mode 100644 new mode 100755 index 9813758..5ad718c --- a/restservice/src/main/java/com/plannaplan/security/CasValidator.java +++ b/restservice/src/main/java/com/plannaplan/security/CasValidator.java @@ -20,7 +20,7 @@ public class CasValidator { this.ticket = ticket; } - public String validate() throws Exception, CasValidationExcepiton{ + public String validate() throws Exception, CasValidationExcepiton { HttpGet request = new HttpGet(CasValidator.CAS_URL + "/validate?service=" + URLEncoder.encode(this.service, "UTF-8") + "&ticket=" + URLEncoder.encode(this.ticket, "UTF-8")); try (CloseableHttpResponse response = httpClient.execute(request)) { @@ -31,7 +31,7 @@ public class CasValidator { if (entity != null) { // return it as a String result = EntityUtils.toString(entity); - if(result.replace("\n", "").trim().equals("no")){ + if (result.replace("\n", "").trim().equals("no")) { throw new CasValidationExcepiton("Validation failed"); } } diff --git a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java old mode 100644 new mode 100755 diff --git a/restservice/src/main/resources/application.properties b/restservice/src/main/resources/application.properties old mode 100644 new mode 100755 diff --git a/restservice/src/test/java/com/plannaplan/AppTest.java b/restservice/src/test/java/com/plannaplan/AppTest.java deleted file mode 100644 index c2cebc0..0000000 --- a/restservice/src/test/java/com/plannaplan/AppTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.plannaplan; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -/** - * Unit test for simple App. - */ -public class AppTest -{ - /** - * Rigorous Test :-) - */ - @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); - } -} diff --git a/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java new file mode 100755 index 0000000..5e7e578 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java @@ -0,0 +1,51 @@ +package com.plannaplan.controllers; + +import com.plannaplan.entities.User; +import com.plannaplan.services.UserService; +import com.plannaplan.types.UserRoles; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class AssignmentsControllerTest { + + private static final String ASSIGFNMENTS_ENDPOINT = "/api/v1/assignments/getCurrentAssignments"; + private static final String TEST_MAIL = "notexistingassignmentuser@mail.domain"; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Autowired + private UserService service; + + @Test + public void shouldReturn4xx() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(ASSIGFNMENTS_ENDPOINT)).andExpect(status().is4xxClientError()); + } + + @Test + public void shouldReturnOk() throws Exception { + this.service.save(new User(null, null, TEST_MAIL, UserRoles.TEST_USER)); + final String token = this.service.login(TEST_MAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(ASSIGFNMENTS_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().isOk()); + } + +} diff --git a/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java new file mode 100755 index 0000000..bf371d7 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java @@ -0,0 +1,94 @@ +package com.plannaplan.controllers; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.nio.charset.Charset; + +import com.plannaplan.entities.User; +import com.plannaplan.services.UserService; +import com.plannaplan.types.UserRoles; + +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class CommisionControllerTest { + + @Autowired + private WebApplicationContext webApplicationContext; + + @Autowired + private UserService service; + + private static User user; + + private static final String ADD_COMMISION_ENDPOINT = "/api/v1/commisions/add"; + private static final String GET_COMMISIONS_ENDPOINT = "/api/v1/commisions/getAllCommisions"; + private static final String TEST_COMMISIONS_EMAIL = "commisions@notexisting.domain"; + private static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), + MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); + + @Test + public void shouldReturn4xxAddingCommision() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT)).andExpect(status().is4xxClientError()); + + } + + @Test + public void shouldFailedAddingCommisionDueToNoArgs() throws Exception { + this.checkUser(); + final String token = this.service.login(TEST_COMMISIONS_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().is4xxClientError()); + } + + @Test + public void shouldReturnOkAddingCommision() throws Exception { + this.checkUser(); + final String token = this.service.login(TEST_COMMISIONS_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT).header("Authorization", "Bearer " + token) + .contentType(APPLICATION_JSON_UTF8).content("[]")).andExpect(status().isOk()); + } + + @Test + public void shouldReturn4xxGettingAllCommisions() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(GET_COMMISIONS_ENDPOINT)).andExpect(status().is4xxClientError()); + } + + @Test + public void shouldReturnOkGettingAllCommisions() throws Exception { + this.checkUser(); + final String token = this.service.login(TEST_COMMISIONS_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(GET_COMMISIONS_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().isOk()); + } + + private void checkUser() { + if (CommisionControllerTest.user == null) { + CommisionControllerTest.user = new User(null, null, TEST_COMMISIONS_EMAIL, UserRoles.TEST_USER); + this.service.save(user); + } + } +} diff --git a/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java new file mode 100755 index 0000000..6fbab62 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java @@ -0,0 +1,75 @@ +package com.plannaplan.controllers; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; + +import java.io.InputStream; + +import com.plannaplan.entities.User; +import com.plannaplan.services.UserService; +import com.plannaplan.types.UserRoles; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class ConfigControllerTest { + + private static final String FILE_NAME = "Zajecia.xlsx"; + private static final String CONFIG_ENDPOINT = "/api/v1/configurator/config"; + private static final String TEST_MAIL = "notexisting@mail.domain"; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Autowired + private UserService service; + + @Test + public void shouldReturnOK() throws Exception { + final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); + final MockMultipartFile file = new MockMultipartFile("file", inputStream); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file)).andExpect(status().isOk()); + + } + + @Test + public void shouldReturnNoAuthorized() throws Exception { + final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); + final MockMultipartFile file = new MockMultipartFile("file", inputStream); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file)).andExpect(status().is4xxClientError()); + + } + + @Test + public void shouldReturnOKAuthorized() throws Exception { + final User usr = new User(null, null, TEST_MAIL, UserRoles.TEST_USER); + this.service.save(usr); + + final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); + final MockMultipartFile file = new MockMultipartFile("file", inputStream); + final String token = this.service.login(TEST_MAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).header("Authorization", "Bearer " + token)) + .andExpect(status().isOk()); + + } + +} diff --git a/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java new file mode 100755 index 0000000..67af08f --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java @@ -0,0 +1,41 @@ +package com.plannaplan.controllers; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class CoursesControllerTest { + + private static final String COURSES_ENDPOINT = "/api/v1/courses/getCourses"; + private static final String COURSESGROUPS_ENDPOINT = "/api/v1/courses/getCoursesWithGroups"; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Test + public void shouldReturnAllCoursesOk() throws Exception { + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(COURSES_ENDPOINT)).andExpect(status().isOk()); + } + + @Test + public void shouldReturnAllCoursesWithGroupsOk() throws Exception { + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(COURSESGROUPS_ENDPOINT)).andExpect(status().isOk()); + } + +} diff --git a/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java new file mode 100755 index 0000000..4698bdc --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java @@ -0,0 +1,36 @@ +package com.plannaplan.controllers; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class GroupControllerTest { + private static final String GROUPS_BY_COURSE_ENDPOINT = "/api/v1/groups/getCourseGroups"; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Test + public void shouldFailWithNoParaeter() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT)).andExpect(status().isBadRequest()); + } + + @Test + public void shouldReturnGroupsOk() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT).param("id", "2")).andExpect(status().isOk()); + } +} diff --git a/restservice/src/test/java/com/plannaplan/controllers/TokenControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/TokenControllerTest.java new file mode 100755 index 0000000..79ee95b --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/TokenControllerTest.java @@ -0,0 +1,46 @@ +package com.plannaplan.controllers; + +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class TokenControllerTest { + private final String TOKEN_ENDPOINT = "/token"; + @Autowired + private WebApplicationContext webApplicationContext; + + @Test + public void shouldFailWithNoParameter() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(TOKEN_ENDPOINT)).andExpect(status().isBadRequest()); + } + + @Test + public void shouldFailWithWrongTicket() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(TOKEN_ENDPOINT).param("ticket", "totaly-wrong-ticket")) + .andExpect(status().is4xxClientError()); + } + + @Test + @Ignore + public void shouldReturnToken() throws Exception { + // have no idea how to make this test independent from user that run this + String ticket = ""; + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + mockMvc.perform(get(TOKEN_ENDPOINT).param("ticket", ticket)).andExpect(status().isOk()); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/AssignmentResponseMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/AssignmentResponseMappersTest.java new file mode 100755 index 0000000..27eb13d --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/AssignmentResponseMappersTest.java @@ -0,0 +1,27 @@ +package com.plannaplan.responses.mappers; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Commision; +import com.plannaplan.entities.Groups; +import com.plannaplan.responses.models.GetCurrentAssignmentsResponse; + +import org.junit.Test; + +public class AssignmentResponseMappersTest { + @Test + public void shouldReturnNewList() { + final Commision com = new Commision(); + final List groups = Arrays.asList(new Assignment(new Groups(), com), + new Assignment(new Groups(), com)); + final List response = AssignmentResponseMappers.mapToResponse(groups); + + assertTrue(response.size() == 2); + assertTrue(response instanceof List); + assertTrue(response.get(0) instanceof GetCurrentAssignmentsResponse); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/CommisionResponseMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/CommisionResponseMappersTest.java new file mode 100755 index 0000000..95d02a6 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/CommisionResponseMappersTest.java @@ -0,0 +1,23 @@ +package com.plannaplan.responses.mappers; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import com.plannaplan.entities.Commision; +import com.plannaplan.responses.models.CommisionResponse; + +import org.junit.Test; + +public class CommisionResponseMappersTest { + @Test + public void shouldMapListWithEntityToListOfResponses() { + final List coms = Arrays.asList(new Commision(null), new Commision(null)); + final List resposne = CommisionResponseMappers.mapToResponse(coms); + + assertTrue(resposne.get(0) instanceof CommisionResponse); + assertTrue(resposne.get(0).getCommisionDate().equals(coms.get(0).getCommisionDate())); + assertTrue(resposne.get(1).getCommisionDate().equals(coms.get(1).getCommisionDate())); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java new file mode 100755 index 0000000..60bb9e0 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java @@ -0,0 +1,35 @@ +package com.plannaplan.responses.mappers; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.GetCoursesResponse; +import com.plannaplan.responses.models.GetCoursesWithGroupsResponse; + +import org.junit.Test; + +public class CoursesResponseMappersTest { + @Test + public void shouldMapListCoursesToResponseList() { + final List courses = Arrays.asList(new Course(), new Course()); + final List response = CoursesResponseMappers.mapToGetCoursesResponse(courses); + + assertTrue(response.size() == 2); + assertTrue(response.get(0) instanceof GetCoursesResponse); + + } + + @Test + public void shouldMapListCoursesToResponseWithGroupsList() { + final List courses = Arrays.asList(new Course(), new Course()); + final List response = CoursesResponseMappers + .mapToGetCoursesWithGroupsResponse(courses); + + assertTrue(response.size() == 2); + assertTrue(response.get(0) instanceof GetCoursesWithGroupsResponse); + + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java new file mode 100755 index 0000000..3f735a6 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -0,0 +1,35 @@ +package com.plannaplan.responses.mappers; + +import java.util.Arrays; +import java.util.List; + +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.Lecturer; +import com.plannaplan.responses.models.DefaultGroupResponse; +import com.plannaplan.responses.models.WithCapacityGroupResponse; +import com.plannaplan.types.WeekDay; + +import org.junit.Test; + +public class GroupsMappersTest { + @Test + public void shouldMapToResponseIncludingCapacity() { + final List gropus = Arrays.asList( + new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); + final List response = GroupsMappers.mapToCapacityResponse(gropus); + + assert (response.get(0).getCapacity() == 42); + assert (response.get(0) instanceof WithCapacityGroupResponse); + assert (response.size() == 1); + } + + @Test + public void shouldMapToResponseWiothoutCapacity() { + final List gropus = Arrays.asList( + new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); + final List response = GroupsMappers.mapToDefaultResponse(gropus); + + assert (response.get(0) instanceof DefaultGroupResponse); + assert (response.size() == 1); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/CommisionResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/CommisionResponseTest.java new file mode 100755 index 0000000..23edc29 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/CommisionResponseTest.java @@ -0,0 +1,17 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Commision; + +import org.junit.Test; + +public class CommisionResponseTest { + @Test + public void shouldMapCommisionToResponse() { + final Commision com = new Commision(null); + final CommisionResponse comResponse = new CommisionResponse(com); + + assertTrue(comResponse.getCommisionDate().equals(com.getCommisionDate())); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/DefaultGroupResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/DefaultGroupResponseTest.java new file mode 100755 index 0000000..e915566 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/DefaultGroupResponseTest.java @@ -0,0 +1,51 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.Lecturer; +import com.plannaplan.types.GroupType; +import com.plannaplan.types.WeekDay; + +import org.junit.Test; + +public class DefaultGroupResponseTest { + @Test + public void shouldMapAssignmentClassToResponse() { + final Assignment assignment = new Assignment( + new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), null); + + final DefaultGroupResponse response = new DefaultGroupResponse(assignment); + assertTrue(response.getDay() == 0); + assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki")); + assertTrue(response.getRoom().equals("A4-1")); + assertTrue(response.getTime().equals("8.40")); + assertTrue(response.getType() == GroupType.CLASS); + } + + @Test + public void shouldMapGroupClassToResponse() { + final Groups group = new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + + final DefaultGroupResponse response = new DefaultGroupResponse(group); + assertTrue(response.getDay() == 0); + assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki")); + assertTrue(response.getRoom().equals("A4-1")); + assertTrue(response.getTime().equals("8.40")); + assertTrue(response.getType() == GroupType.CLASS); + } + + @Test + public void shouldMapEmptyGroupClassToResponse() { + final Groups group = new Groups(); + + final DefaultGroupResponse response = new DefaultGroupResponse(group); + assertTrue(response.getDay() == -1); + assertTrue(response.getLecturer().equals("")); + assertTrue(response.getRoom().equals("")); + assertTrue(response.getTime().equals("0.00")); + assertTrue(response.getType() == null); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesResponseTest.java new file mode 100755 index 0000000..39f8b72 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesResponseTest.java @@ -0,0 +1,27 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Course; + +import org.junit.Test; + +public class GetCoursesResponseTest { + @Test + public void shouldMapFilledCourse() { + final Course course = new Course("Test", "XD"); + final GetCoursesResponse response = new GetCoursesResponse(course); + + assertTrue(response.getId() == null); + assertTrue(response.getName().equals("Test")); + } + + @Test + public void shouldMapEmptyCourse() { + final Course course = new Course(); + final GetCoursesResponse response = new GetCoursesResponse(course); + + assertTrue(response.getId() == null); + assertTrue(response.getName().equals("")); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponseTest.java new file mode 100755 index 0000000..422ca10 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/GetCoursesWithGroupsResponseTest.java @@ -0,0 +1,20 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Course; + +import org.junit.Test; + +public class GetCoursesWithGroupsResponseTest { + + @Test + public void shouldMapCourseToResponseWithGroupsIncluded() { + final GetCoursesWithGroupsResponse response = new GetCoursesWithGroupsResponse( + new Course("Programowanie funkcyjne", "xd")); + + assertTrue(response.getName() == "Programowanie funkcyjne"); + assertTrue(response.getClasses().size() == 0); + assertTrue(response.getLectures().size() == 0); + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponseTest.java new file mode 100755 index 0000000..0ff4e1a --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/GetCurrentAssignmentsResponseTest.java @@ -0,0 +1,29 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.Lecturer; +import com.plannaplan.types.GroupType; +import com.plannaplan.types.WeekDay; + +import org.junit.Test; + +public class GetCurrentAssignmentsResponseTest { + + @Test + public void shouldMapAssignmentClassToResponse() { + final Assignment assignment = new Assignment( + new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), null); + + final GetCurrentAssignmentsResponse response = new GetCurrentAssignmentsResponse(assignment); + assertTrue(response.getCapacity() == 42); + assertTrue(response.getDay() == 0); + assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki")); + assertTrue(response.getRoom().equals("A4-1")); + assertTrue(response.getTime().equals("8.40")); + assertTrue(response.getType() == GroupType.CLASS); + } + +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/WithCapacityGroupResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/WithCapacityGroupResponseTest.java new file mode 100755 index 0000000..1495cef --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/WithCapacityGroupResponseTest.java @@ -0,0 +1,55 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.Lecturer; +import com.plannaplan.types.GroupType; +import com.plannaplan.types.WeekDay; + +import org.junit.Test; + +public class WithCapacityGroupResponseTest { + @Test + public void shouldMapAssignmentClassToResponse() { + final Assignment assignment = new Assignment( + new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), null); + + final WithCapacityGroupResponse response = new WithCapacityGroupResponse(assignment); + assertTrue(response.getCapacity() == 42); + assertTrue(response.getDay() == 0); + assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki")); + assertTrue(response.getRoom().equals("A4-1")); + assertTrue(response.getTime().equals("8.40")); + assertTrue(response.getType() == GroupType.CLASS); + } + + @Test + public void shouldMapGroupClassToResponse() { + final Groups group = new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + + final WithCapacityGroupResponse response = new WithCapacityGroupResponse(group); + assertTrue(response.getCapacity() == 42); + assertTrue(response.getDay() == 0); + assertTrue(response.getLecturer().equals("krul. Wladyslaw Potocki")); + assertTrue(response.getRoom().equals("A4-1")); + assertTrue(response.getTime().equals("8.40")); + assertTrue(response.getType() == GroupType.CLASS); + } + + @Test + public void shouldMapEmptyGroupClassToResponse() { + final Groups group = new Groups(); + + final WithCapacityGroupResponse response = new WithCapacityGroupResponse(group); + assertTrue(response.getCapacity() == 0); + assertTrue(response.getDay() == -1); + assertTrue(response.getLecturer().equals("")); + assertTrue(response.getRoom().equals("")); + assertTrue(response.getTime().equals("0.00")); + assertTrue(response.getType() == null); + } + +} diff --git a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java old mode 100644 new mode 100755 index f825874..9772b08 --- a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java +++ b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java @@ -10,8 +10,9 @@ public class CasValidatorTest { @Test @Ignore public void shouldValidateTicket() { - //you need to privide fresh ticket to make this test pass that's why it is marked as ignored - CasValidator validator = new CasValidator("http://localhost:3000", + // you need to privide fresh ticket to make this test pass that's why it is + // marked as ignored + final CasValidator validator = new CasValidator("http://localhost:3000", "ST-572267-cbgKrcJLd0tdCubeLqdW-cas.amu.edu.pl"); try { System.out.println(validator.validate()); @@ -23,16 +24,12 @@ public class CasValidatorTest { @Test public void shouldNotValidateTicket() { - //you need to privide fresh ticket to make this test pass that's why it is marked as ignored - CasValidator validator = new CasValidator("http://localhost:3000", - "notticket"); + final CasValidator validator = new CasValidator("http://localhost:3000", "notticket"); try { assertTrue(validator.validate().trim().equals("")); - } - catch (CasValidationExcepiton e){ + } catch (CasValidationExcepiton e) { assertTrue(true); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); assertTrue(false); } diff --git a/restservice/src/test/resources/Zajecia.xlsx b/restservice/src/test/resources/Zajecia.xlsx new file mode 100755 index 0000000..57c8e9c Binary files /dev/null and b/restservice/src/test/resources/Zajecia.xlsx differ diff --git a/stack.yml b/stack.yml old mode 100644 new mode 100755