Skip to content
This repository was archived by the owner on Apr 5, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@

import de.filefighter.rest.domain.user.data.dto.User;
import de.filefighter.rest.domain.user.role.Role;
import lombok.Getter;

@Getter
public class PermissionSet {
private Role[] visibleForRoles;
private Role[] editableForRoles;
private User[] visibleForUsers;
private User[] editableForUsers;
private final Role[] visibleForRoles;
private final Role[] editableForRoles;
private final User[] visibleForUsers;
private final User[] editableForUsers;

public PermissionSet(Role[] visibleForRoles, Role[] editableForRoles, User[] visibleForUsers, User[] editableForUsers) {
this.visibleForRoles = visibleForRoles;
this.editableForRoles = editableForRoles;
this.visibleForUsers = visibleForUsers;
this.editableForUsers = editableForUsers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package de.filefighter.rest.domain.permission.data.dto.request;

import lombok.Getter;
import lombok.ToString;

@Getter
@ToString
public class PermissionRecipient{
private final PermissionRecipientType permissionRecipientType;
private final long userOrGroupId;

private PermissionRecipient(PermissionRecipientType permissionRecipientType, long userOrGroupId) {
this.permissionRecipientType = permissionRecipientType;
this.userOrGroupId = userOrGroupId;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package de.filefighter.rest.domain.permission.data.dto.request;

public enum PermissionRecipientType {
GROUP, USER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package de.filefighter.rest.domain.permission.data.dto.request;

import lombok.Data;

@Data
public class PermissionRequest {
PermissionType permission;
PermissionRecipient[] permissionRecipients;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package de.filefighter.rest.domain.permission.data.dto.request;

public enum PermissionType {
READ_ACCESS, WRITE_ACCESS
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package de.filefighter.rest.domain.permission.rest;

import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
import de.filefighter.rest.rest.ServerResponse;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -21,8 +23,9 @@ public PermissionRestController(PermissionRestServiceInterface permissionsRestSe
this.permissionsRestService = permissionsRestService;
}

//R
@GetMapping(FS_BASE_URI+"{fsItemId}/permission")
public EntityModel<PermissionSet> getPermissionsOfFileOrFolder(
public EntityModel<PermissionSet> getPermissionSetForFileOrFolder(
@PathVariable long fsItemId,
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
){
Expand All @@ -31,25 +34,27 @@ public EntityModel<PermissionSet> getPermissionsOfFileOrFolder(
return permissionsRestService.getPermissionSetByIdAndToken(fsItemId, accessToken);
}

@PostMapping(FS_BASE_URI+"{fsItemId}/permission")
public EntityModel<PermissionSet> setPermissionSetForId(
//C U
@PutMapping(FS_BASE_URI+"{fsItemId}/permission")
public EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolder(
@PathVariable long fsItemId,
@RequestBody PermissionSet newPermissionSet,
@RequestBody PermissionRequest permissionRequest,
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
){

LOG.info("Requested PermissionSet for FileSystemItem {}", fsItemId);
return permissionsRestService.setPermissionSetByIdAndToken(newPermissionSet, fsItemId, accessToken);
LOG.info("Requested new User or Group permissions {} for Id {}.",permissionRequest, fsItemId);
return permissionsRestService.addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(permissionRequest,fsItemId, accessToken);
}

@PutMapping(FS_BASE_URI+"{fsItemId}/permission")
public EntityModel<PermissionSet> updatePermissionSetForId(
//D
@DeleteMapping(FS_BASE_URI+"{fsItemId}/permission")
public EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolder(
@PathVariable long fsItemId,
@RequestBody PermissionSet updatedPermissionSet,
@RequestBody PermissionRequest permissionRequest,
@RequestHeader(value = "Authorization", defaultValue = AUTHORIZATION_BEARER_PREFIX + "token") String accessToken
){

LOG.info("Requested PermissionSet for FileSystemItem {}", fsItemId);
return permissionsRestService.updatePermissionSetByIdAndToken(updatedPermissionSet,fsItemId, accessToken);
LOG.info("Requested removal of User or Group permissions {} for Id {}.",permissionRequest, fsItemId);
return permissionsRestService.removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(permissionRequest,fsItemId, accessToken);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package de.filefighter.rest.domain.permission.rest;

import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
import de.filefighter.rest.rest.ServerResponse;
import org.springframework.hateoas.EntityModel;
import org.springframework.stereotype.Service;

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

@Override
public EntityModel<PermissionSet> setPermissionSetByIdAndToken(PermissionSet newPermissionSet, long fsItemId, String accessToken) {
public EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken) {
return null;
}

@Override
public EntityModel<PermissionSet> updatePermissionSetByIdAndToken(PermissionSet updatedPermissionSet, long fsItemId, String accessToken) {
public EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken) {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package de.filefighter.rest.domain.permission.rest;

import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
import de.filefighter.rest.rest.ServerResponse;
import org.springframework.hateoas.EntityModel;

public interface PermissionRestServiceInterface {
EntityModel<PermissionSet> getPermissionSetByIdAndToken(long fsItemId, String accessToken);
EntityModel<PermissionSet> setPermissionSetByIdAndToken(PermissionSet newPermissionSet, long fsItemId, String accessToken);
EntityModel<PermissionSet> updatePermissionSetByIdAndToken(PermissionSet updatedPermissionSet, long fsItemId, String accessToken);
EntityModel<ServerResponse> addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken);
EntityModel<ServerResponse> removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(PermissionRequest permissionRequest, long fsItemId, String accessToken);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package de.filefighter.rest.domain.permission.rest;

import de.filefighter.rest.domain.permission.data.dto.PermissionSet;
import de.filefighter.rest.domain.permission.data.dto.request.PermissionRequest;
import de.filefighter.rest.domain.user.data.dto.User;
import de.filefighter.rest.rest.ServerResponse;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.hateoas.EntityModel;

import java.security.Permission;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

class PermissionRestControllerUnitTest {

private final PermissionRestServiceInterface permissionRestService = mock(PermissionRestService.class);
private PermissionRestController permissionRestController;

@BeforeEach
void setUp() {
permissionRestController = new PermissionRestController(permissionRestService);
}

@Test
void getPermissionSetForFileOrFolder() {
String token = "token";
long id = 420;
User dummyUser = User.builder().create();
EntityModel<PermissionSet> expected = EntityModel.of(new PermissionSet(null, null, new User[]{dummyUser}, null));

when(permissionRestService.getPermissionSetByIdAndToken(id, token)).thenReturn(expected);

EntityModel<PermissionSet> actual = permissionRestController.getPermissionSetForFileOrFolder(420, token);

assertEquals(expected, actual);
}

@Test
void addUsersOrGroupsToPermissionSetForFileOrFolder() {
String token = "token";
long id = 420;
ServerResponse dummyResponse = new ServerResponse("ok", "baum");
PermissionRequest dummyRequest = new PermissionRequest();

EntityModel<ServerResponse> expected = EntityModel.of(dummyResponse);


when(permissionRestService.addUsersOrGroupsToPermissionSetForFileOrFolderWithAccessToken(dummyRequest, id, token)).thenReturn(expected);

EntityModel<ServerResponse> actual = permissionRestController.addUsersOrGroupsToPermissionSetForFileOrFolder(420, dummyRequest, token);

assertEquals(expected, actual);
}

@Test
void removeUsersOrGroupsFromPermissionSetForFileOrFolder() {
String token = "token";
long id = 420;
ServerResponse dummyResponse = new ServerResponse("ok", "baum");
PermissionRequest dummyRequest = new PermissionRequest();

EntityModel<ServerResponse> expected = EntityModel.of(dummyResponse);


when(permissionRestService.removeUsersOrGroupsFromPermissionSetForFileOrFolderWithAccessToken(dummyRequest, id, token)).thenReturn(expected);

EntityModel<ServerResponse> actual = permissionRestController.removeUsersOrGroupsFromPermissionSetForFileOrFolder(420, dummyRequest, token);

assertEquals(expected, actual);
}
}