Skip to content
This repository was archived by the owner on Apr 5, 2024. It is now read-only.

Commit e02c117

Browse files
authored
PermissionRework (#5)
* reworked PermissionController and dtos * added unit test
1 parent 516474c commit e02c117

File tree

9 files changed

+147
-19
lines changed

9 files changed

+147
-19
lines changed

src/main/java/de/filefighter/rest/domain/permission/data/dto/PermissionSet.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@
22

33
import de.filefighter.rest.domain.user.data.dto.User;
44
import de.filefighter.rest.domain.user.role.Role;
5+
import lombok.Getter;
56

7+
@Getter
68
public class PermissionSet {
7-
private Role[] visibleForRoles;
8-
private Role[] editableForRoles;
9-
private User[] visibleForUsers;
10-
private User[] editableForUsers;
9+
private final Role[] visibleForRoles;
10+
private final Role[] editableForRoles;
11+
private final User[] visibleForUsers;
12+
private final User[] editableForUsers;
13+
14+
public PermissionSet(Role[] visibleForRoles, Role[] editableForRoles, User[] visibleForUsers, User[] editableForUsers) {
15+
this.visibleForRoles = visibleForRoles;
16+
this.editableForRoles = editableForRoles;
17+
this.visibleForUsers = visibleForUsers;
18+
this.editableForUsers = editableForUsers;
19+
}
1120
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.filefighter.rest.domain.permission.data.dto.request;
2+
3+
import lombok.Getter;
4+
import lombok.ToString;
5+
6+
@Getter
7+
@ToString
8+
public class PermissionRecipient{
9+
private final PermissionRecipientType permissionRecipientType;
10+
private final long userOrGroupId;
11+
12+
private PermissionRecipient(PermissionRecipientType permissionRecipientType, long userOrGroupId) {
13+
this.permissionRecipientType = permissionRecipientType;
14+
this.userOrGroupId = userOrGroupId;
15+
}
16+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package de.filefighter.rest.domain.permission.data.dto.request;
2+
3+
public enum PermissionRecipientType {
4+
GROUP, USER
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package de.filefighter.rest.domain.permission.data.dto.request;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class PermissionRequest {
7+
PermissionType permission;
8+
PermissionRecipient[] permissionRecipients;
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package de.filefighter.rest.domain.permission.data.dto.request;
2+
3+
public enum PermissionType {
4+
READ_ACCESS, WRITE_ACCESS
5+
}

src/main/java/de/filefighter/rest/domain/permission/rest/PermissionRestController.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.filefighter.rest.domain.permission.rest;
22

3+
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
34
import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
5+
import de.filefighter.rest.rest.ServerResponse;
46
import io.swagger.annotations.Api;
57
import org.slf4j.Logger;
68
import org.slf4j.LoggerFactory;
@@ -21,8 +23,9 @@ public PermissionRestController(PermissionRestServiceInterface permissionsRestSe
2123
this.permissionsRestService = permissionsRestService;
2224
}
2325

26+
//R
2427
@GetMapping(FS_BASE_URI+"{fsItemId}/permission")
25-
public EntityModel<PermissionSet> getPermissionsOfFileOrFolder(
28+
public EntityModel<PermissionSet> getPermissionSetForFileOrFolder(
2629
@PathVariable long fsItemId,
2730
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
2831
){
@@ -31,25 +34,27 @@ public EntityModel<PermissionSet> getPermissionsOfFileOrFolder(
3134
return permissionsRestService.getPermissionSetByIdAndToken(fsItemId, accessToken);
3235
}
3336

34-
@PostMapping(FS_BASE_URI+"{fsItemId}/permission")
35-
public EntityModel<PermissionSet> setPermissionSetForId(
37+
//C U
38+
@PutMapping(FS_BASE_URI+"{fsItemId}/permission")
39+
public EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolder(
3640
@PathVariable long fsItemId,
37-
@RequestBody PermissionSet newPermissionSet,
41+
@RequestBody PermissionRequest permissionRequest,
3842
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
3943
){
4044

41-
LOG.info("Requested PermissionSet for FileSystemItem {}", fsItemId);
42-
return permissionsRestService.setPermissionSetByIdAndToken(newPermissionSet, fsItemId, accessToken);
45+
LOG.info("Requested new User or Group permissions {} for Id {}.",permissionRequest, fsItemId);
46+
return permissionsRestService.addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(permissionRequest,fsItemId, accessToken);
4347
}
4448

45-
@PutMapping(FS_BASE_URI+"{fsItemId}/permission")
46-
public EntityModel<PermissionSet> updatePermissionSetForId(
49+
//D
50+
@DeleteMapping(FS_BASE_URI+"{fsItemId}/permission")
51+
public EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolder(
4752
@PathVariable long fsItemId,
48-
@RequestBody PermissionSet updatedPermissionSet,
53+
@RequestBody PermissionRequest permissionRequest,
4954
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
5055
){
5156

52-
LOG.info("Requested PermissionSet for FileSystemItem {}", fsItemId);
53-
return permissionsRestService.updatePermissionSetByIdAndToken(updatedPermissionSet,fsItemId, accessToken);
57+
LOG.info("Requested removal of User or Group permissions {} for Id {}.",permissionRequest, fsItemId);
58+
return permissionsRestService.removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(permissionRequest,fsItemId, accessToken);
5459
}
5560
}

src/main/java/de/filefighter/rest/domain/permission/rest/PermissionRestService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.filefighter.rest.domain.permission.rest;
22

33
import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
4+
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
5+
import de.filefighter.rest.rest.ServerResponse;
46
import org.springframework.hateoas.EntityModel;
57
import org.springframework.stereotype.Service;
68

@@ -12,12 +14,12 @@ public EntityModel<PermissionSet> getPermissionSetByIdAndToken(long fsItemId, St
1214
}
1315

1416
@Override
15-
public EntityModel<PermissionSet> setPermissionSetByIdAndToken(PermissionSet newPermissionSet, long fsItemId, String accessToken) {
17+
public EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken) {
1618
return null;
1719
}
1820

1921
@Override
20-
public EntityModel<PermissionSet> updatePermissionSetByIdAndToken(PermissionSet updatedPermissionSet, long fsItemId, String accessToken) {
22+
public EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken) {
2123
return null;
2224
}
2325
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package de.filefighter.rest.domain.permission.rest;
22

33
import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
4+
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
5+
import de.filefighter.rest.rest.ServerResponse;
46
import org.springframework.hateoas.EntityModel;
57

68
public interface PermissionRestServiceInterface {
79
EntityModel<PermissionSet> getPermissionSetByIdAndToken(long fsItemId, String accessToken);
8-
EntityModel<PermissionSet> setPermissionSetByIdAndToken(PermissionSet newPermissionSet, long fsItemId, String accessToken);
9-
EntityModel<PermissionSet> updatePermissionSetByIdAndToken(PermissionSet updatedPermissionSet, long fsItemId, String accessToken);
10+
EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken);
11+
EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken);
1012
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package de.filefighter.rest.domain.permission.rest;
2+
3+
import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
4+
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
5+
import de.filefighter.rest.domain.user.data.dto.User;
6+
import de.filefighter.rest.rest.ServerResponse;
7+
import org.junit.jupiter.api.BeforeEach;
8+
import org.junit.jupiter.api.Test;
9+
import org.springframework.hateoas.EntityModel;
10+
11+
import java.security.Permission;
12+
13+
import static org.junit.jupiter.api.Assertions.assertEquals;
14+
import static org.mockito.ArgumentMatchers.any;
15+
import static org.mockito.Mockito.mock;
16+
import static org.mockito.Mockito.when;
17+
18+
class PermissionRestControllerUnitTest {
19+
20+
private final PermissionRestServiceInterface permissionRestService = mock(PermissionRestService.class);
21+
private PermissionRestController permissionRestController;
22+
23+
@BeforeEach
24+
void setUp() {
25+
permissionRestController = new PermissionRestController(permissionRestService);
26+
}
27+
28+
@Test
29+
void getPermissionSetForFileOrFolder() {
30+
String token = "token";
31+
long id = 420;
32+
User dummyUser = User.builder().create();
33+
EntityModel<PermissionSet> expected = EntityModel.of(new PermissionSet(null, null, new User[]{dummyUser}, null));
34+
35+
when(permissionRestService.getPermissionSetByIdAndToken(id, token)).thenReturn(expected);
36+
37+
EntityModel<PermissionSet> actual = permissionRestController.getPermissionSetForFileOrFolder(420, token);
38+
39+
assertEquals(expected, actual);
40+
}
41+
42+
@Test
43+
void addUsersOrGroupsToPermissionSetForFileOrFolder() {
44+
String token = "token";
45+
long id = 420;
46+
ServerResponse dummyResponse = new ServerResponse("ok", "baum");
47+
PermissionRequest dummyRequest = new PermissionRequest();
48+
49+
EntityModel<ServerResponse> expected = EntityModel.of(dummyResponse);
50+
51+
52+
when(permissionRestService.addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(dummyRequest, id, token)).thenReturn(expected);
53+
54+
EntityModel<ServerResponse> actual = permissionRestController.addUsersOrGroupsToPermissionSetForFileOrFolder(420, dummyRequest, token);
55+
56+
assertEquals(expected, actual);
57+
}
58+
59+
@Test
60+
void removeUsersOrGroupsFromPermissionSetForFileOrFolder() {
61+
String token = "token";
62+
long id = 420;
63+
ServerResponse dummyResponse = new ServerResponse("ok", "baum");
64+
PermissionRequest dummyRequest = new PermissionRequest();
65+
66+
EntityModel<ServerResponse> expected = EntityModel.of(dummyResponse);
67+
68+
69+
when(permissionRestService.removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(dummyRequest, id, token)).thenReturn(expected);
70+
71+
EntityModel<ServerResponse> actual = permissionRestController.removeUsersOrGroupsFromPermissionSetForFileOrFolder(420, dummyRequest, token);
72+
73+
assertEquals(expected, actual);
74+
}
75+
}

0 commit comments

Comments
 (0)