1

Merge remote-tracking branch 'origin/master' into edit-User

This commit is contained in:
killerber4t
2020-03-17 16:16:44 +01:00
10 changed files with 90 additions and 48 deletions

View File

@ -117,6 +117,15 @@ public class Gruppen2Controller {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found");
} }
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@PostMapping("/detailsBeitreten")
public String joinGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException {
model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token));
Account account = keyCloakService.createAccountFromPrincipal (token);
controllerService.addUser(account,id);
return "redirect:/gruppen2/";
}
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@GetMapping("/detailsSearch") @GetMapping("/detailsSearch")
public String showGroupDetailsNoMember (KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException { public String showGroupDetailsNoMember (KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException {

View File

@ -1,9 +0,0 @@
package mops.gruppen2.domain.Exceptions;
import mops.gruppen2.domain.event.Event;
public class GroupDoesNotExistException extends EventException {
public GroupDoesNotExistException(String msg) {
super(msg);
}
}

View File

@ -3,7 +3,10 @@ package mops.gruppen2.domain.event;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
/** /**
@ -24,8 +27,14 @@ public class AddUserEvent extends Event {
this.email = email; this.email = email;
} }
public void apply(Group group) { public void apply(Group group) throws EventException{
User user = new User(this.user_id, this.givenname, this.familyname, this.email); User user = new User(this.user_id, this.givenname, this.familyname, this.email);
if (group.getMembers().contains(user)){
throw new UserAlreadyExistsException("Der User existiert bereits");
}
group.getMembers().add(user); group.getMembers().add(user);
group.getRoles().put(user_id, Role.MEMBER);
} }
} }

View File

@ -1,6 +1,8 @@
package mops.gruppen2.domain.event; package mops.gruppen2.domain.event;
import lombok.*; import lombok.*;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Exceptions.UserNotFoundException;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
@ -15,7 +17,7 @@ public class DeleteUserEvent extends Event {
super(group_id, user_id); super(group_id, user_id);
} }
public void apply(Group group) { public void apply(Group group) throws EventException {
for (User user : group.getMembers()) { for (User user : group.getMembers()) {
if (user.getUser_id().equals(this.user_id)) { if (user.getUser_id().equals(this.user_id)) {
group.getMembers().remove(user); group.getMembers().remove(user);
@ -23,5 +25,6 @@ public class DeleteUserEvent extends Event {
return; return;
} }
} }
throw new UserNotFoundException("Der User existiert nicht");
} }
} }

View File

@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
@ -31,5 +32,6 @@ public class Event {
String user_id; String user_id;
public void apply(Group group){} public void apply(Group group) throws EventException {
}
} }

View File

@ -24,7 +24,10 @@ public class UpdateRoleEvent extends Event {
this.newRole = newRole; this.newRole = newRole;
} }
public void apply(Group group) { public void apply(Group group) throws UserNotFoundException{
if (!group.getRoles().containsKey(user_id)){
throw new UserNotFoundException("Der User wurde nicht gefunden");
}
group.getRoles().put(this.user_id, this.newRole); group.getRoles().put(this.user_id, this.newRole);
} }

View File

@ -29,7 +29,6 @@
<div class="row"> <div class="row">
<div class="col-9"> <div class="col-9">
<div class="shadow-sm p-4" style="border: 10px solid aliceblue; background: aliceblue"> <div class="shadow-sm p-4" style="border: 10px solid aliceblue; background: aliceblue">
<form action="/" method="get">
<h1 style="color: dodgerblue; font-weight: bold" th:text="${group.getTitle()}"></h1> <h1 style="color: dodgerblue; font-weight: bold" th:text="${group.getTitle()}"></h1>
<p style="font-weight: bold"> <p style="font-weight: bold">
<span class="badge badge-pill badge-dark" style="background: darkslategray" th:if="${group.getVisibility() == group.getVisibility().PRIVATE }">Private Gruppe</span> <span class="badge badge-pill badge-dark" style="background: darkslategray" th:if="${group.getVisibility() == group.getVisibility().PRIVATE }">Private Gruppe</span>
@ -39,10 +38,11 @@
<p th:text="${group.getDescription()}"></p> <p th:text="${group.getDescription()}"></p>
<div class="form-group"> <div class="form-group">
<div class="text-right"> <div class="text-right">
<button class="btn btn-primary" style="border-style: none;">Gruppe beitreten</button> <form method="post" action="/gruppen2/detailsBeitreten">
<button type="submit" th:href="@{/gruppen2/detailsBeitreten(id=${group.getId()})}" th:name="id" th:value="${group.id}" class="btn btn-primary" style="border-style: none;">Gruppe beitreten</button>
</form>
</div> </div>
</div> </div>
</form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,35 @@
package mops.gruppen2.domain.event;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User;
import org.junit.jupiter.api.Test;
import static mops.gruppen2.domain.Role.MEMBER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class AddUserEventTest {
@Test
public void userAllreadyExistExeption() throws EventException {
Group group = new Group();
User user = new User("user1","Stein", "Speck", "@sdasd");
group.getMembers().add(user);
Event event1 = new AddUserEvent(4L, "user2", "Rock", "Roll", "and");
event1.apply(group);
Event event2 = new AddUserEvent(4L, "user1", "Rock", "Roll", "and");
assertThrows(UserAlreadyExistsException.class, ()->
event2.apply(group)
);
assertThat(group.getMembers().size()).isEqualTo(2);
}
}

View File

@ -1,5 +1,8 @@
package mops.gruppen2.domain.event; package mops.gruppen2.domain.event;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException;
import mops.gruppen2.domain.Exceptions.UserNotFoundException;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -11,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.*;
class DeleteUserEventTest { class DeleteUserEventTest {
@Test @Test
void apply() { void applyDeleteUser() throws EventException {
Group group = new Group(); Group group = new Group();
User user = new User("user1","Stein", "Speck", "@sdasd"); User user = new User("user1","Stein", "Speck", "@sdasd");
@ -32,4 +35,22 @@ class DeleteUserEventTest {
assertThat(group.getRoles().size()).isEqualTo(1); assertThat(group.getRoles().size()).isEqualTo(1);
} }
@Test
void userDoesNotExistExeption() {
Group group = new Group();
User user = new User("user1","Stein", "Speck", "@sdasd");
group.getMembers().add(user);
group.getRoles().put("user1", MEMBER);
Event event = new DeleteUserEvent(17L,"user5");
assertThrows(UserNotFoundException.class, ()->
event.apply(group)
);
assertThat(group.getMembers().size()).isEqualTo(1);
}
} }

View File

@ -1,6 +1,5 @@
package mops.gruppen2.service; package mops.gruppen2.service;
import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.Visibility;
@ -29,36 +28,6 @@ class GroupServiceTest {
groupService = new GroupService(mock(EventService.class), eventRepository); groupService = new GroupService(mock(EventService.class), eventRepository);
} }
@Disabled
@Test
void applyEventOnGroupThatIsDeleted() throws Exception {
List<Event> eventList = new ArrayList<>();
eventList.add(new CreateGroupEvent(1L,"Ulli", null, GroupType.LECTURE, Visibility.PRIVATE));
eventList.add(new DeleteGroupEvent(10, "loescher78"));
eventList.add(new AddUserEvent(10L, "Ulli", "Ulli", "Honnis", "FC@B.de"));
Assertions.assertThrows(GroupDoesNotExistException.class, () -> {
groupService.projectEventList(eventList);
});
}
@Disabled
@Test
void returnDeletedGroup() throws Exception {
List<Event> eventList = new ArrayList<>();
eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE));
eventList.add(new DeleteGroupEvent(1L, "loescher78"));
List<Group> list = new ArrayList<>();
assertThat(groupService.projectEventList(eventList)).isEqualTo(list);
}
@Test @Test
void rightClassForSucsessfulGroup() throws Exception { void rightClassForSucsessfulGroup() throws Exception {