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 extends GrantedAuthority> 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