diff --git a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java index fa3ebffda00f7c1c5509529c04fbd47732918852..5488575f3c53ca510b8db43c5cda0d48699abf5b 100644 --- a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java +++ b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java @@ -27,42 +27,6 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } - @Hidden - @ResponseStatus(HttpStatus.NOT_FOUND) - @ExceptionHandler(ContainerNotFoundException.class) - public ResponseEntity<ApiErrorDto> handle(ContainerNotFoundException e, WebRequest request) { - final ApiErrorDto response = ApiErrorDto.builder() - .status(HttpStatus.NOT_FOUND) - .message(e.getLocalizedMessage()) - .code("error.container.notfound") - .build(); - return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); - } - - @Hidden - @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED) - @ExceptionHandler(NotAllowedException.class) - public ResponseEntity<ApiErrorDto> handle(NotAllowedException e, WebRequest request) { - final ApiErrorDto response = ApiErrorDto.builder() - .status(HttpStatus.METHOD_NOT_ALLOWED) - .message(e.getLocalizedMessage()) - .code("error.container.notallowed") - .build(); - return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); - } - - @Hidden - @ResponseStatus(HttpStatus.BAD_REQUEST) - @ExceptionHandler(ImageInvalidException.class) - public ResponseEntity<ApiErrorDto> handle(ImageInvalidException e, WebRequest request) { - final ApiErrorDto response = ApiErrorDto.builder() - .status(HttpStatus.BAD_REQUEST) - .message(e.getLocalizedMessage()) - .code("error.image.invalid") - .build(); - return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); - } - @Hidden @ResponseStatus(HttpStatus.GONE) @ExceptionHandler(ContainerAlreadyRemovedException.class) @@ -99,6 +63,18 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } + @Hidden + @ResponseStatus(HttpStatus.NOT_FOUND) + @ExceptionHandler(ContainerNotFoundException.class) + public ResponseEntity<ApiErrorDto> handle(ContainerNotFoundException e, WebRequest request) { + final ApiErrorDto response = ApiErrorDto.builder() + .status(HttpStatus.NOT_FOUND) + .message(e.getLocalizedMessage()) + .code("error.container.notfound") + .build(); + return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); + } + @Hidden @ResponseStatus(HttpStatus.BAD_GATEWAY) @ExceptionHandler(ContainerNotRunningException.class) @@ -118,7 +94,7 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { final ApiErrorDto response = ApiErrorDto.builder() .status(HttpStatus.CONFLICT) .message(e.getLocalizedMessage()) - .code("error.container.running") + .code("error.container.stillrunning") .build(); return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } @@ -147,6 +123,18 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } + @Hidden + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(ImageInvalidException.class) + public ResponseEntity<ApiErrorDto> handle(ImageInvalidException e, WebRequest request) { + final ApiErrorDto response = ApiErrorDto.builder() + .status(HttpStatus.BAD_REQUEST) + .message(e.getLocalizedMessage()) + .code("error.image.invalid") + .build(); + return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); + } + @Hidden @ResponseStatus(HttpStatus.NOT_FOUND) @ExceptionHandler(ImageNotFoundException.class) @@ -159,6 +147,18 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } + @Hidden + @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED) + @ExceptionHandler(NotAllowedException.class) + public ResponseEntity<ApiErrorDto> handle(NotAllowedException e, WebRequest request) { + final ApiErrorDto response = ApiErrorDto.builder() + .status(HttpStatus.METHOD_NOT_ALLOWED) + .message(e.getLocalizedMessage()) + .code("error.container.notallowed") + .build(); + return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); + } + @Hidden @ResponseStatus(HttpStatus.FORBIDDEN) @ExceptionHandler(PersistenceException.class) diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index 211d5118040e455b121b2321591fc1b08de7f286..88e2943220db0ad616e7534e2658e4c22744756b 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -5,7 +5,6 @@ import at.tuwien.api.container.ContainerCreateRequestDto; import at.tuwien.config.DockerConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.container.Container; -import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.*; import at.tuwien.repository.jpa.ContainerRepository; import at.tuwien.repository.jpa.ImageRepository; @@ -55,9 +54,10 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { /* create networks */ DockerConfig.createAllNetworks(); /* mock data */ + realmRepository.save(REALM_DBREPO); userRepository.save(USER_1_SIMPLE); + userRepository.save(USER_2_SIMPLE); imageRepository.save(IMAGE_1_SIMPLE); - realmRepository.save(REALM_DBREPO); } @AfterEach @@ -81,7 +81,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { assertEquals(CONTAINER_1_NAME, container.getName()); assertEquals(USER_1_USERNAME, container.getCreator().getUsername()); assertEquals(USER_1_USERNAME, container.getOwner().getUsername()); - assertEquals(1, userRepository.findAll().size()); } @Test diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index 124a27ebdab6a67514d9191c1a87fa2bee878624..a3f620572aabc234756f2a151c192f7d86e95832 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -121,6 +121,8 @@ public class ContainerServiceImpl implements ContainerService { } container.setHash(response1.getId()); container = containerRepository.save(container); + container.setCreator(user); + container.setOwner(user); log.info("Created container {}", container.getId()); return container; } diff --git a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java index d69203d9051e5f5587f8fa8188f9dc0599a256db..27a6c76130c2e77ee3dfe95b84a4e21e15b03646 100644 --- a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java +++ b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/handlers/ApiExceptionHandler.java @@ -15,6 +15,18 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExcep @ControllerAdvice public class ApiExceptionHandler extends ResponseEntityExceptionHandler { + @Hidden + @ResponseStatus(HttpStatus.FORBIDDEN) + @ExceptionHandler(AccessDeniedException.class) + public ResponseEntity<ApiErrorDto> handle(AccessDeniedException e, WebRequest request) { + final ApiErrorDto response = ApiErrorDto.builder() + .status(HttpStatus.FORBIDDEN) + .message(e.getLocalizedMessage()) + .code("error.identifier.accessdenied") + .build(); + return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); + } + @Hidden @ResponseStatus(HttpStatus.NOT_FOUND) @ExceptionHandler(DatabaseNotFoundException.class) @@ -87,6 +99,18 @@ public class ApiExceptionHandler extends ResponseEntityExceptionHandler { return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); } + @Hidden + @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED) + @ExceptionHandler(NotAllowedException.class) + public ResponseEntity<ApiErrorDto> handle(NotAllowedException e, WebRequest request) { + final ApiErrorDto response = ApiErrorDto.builder() + .status(HttpStatus.METHOD_NOT_ALLOWED) + .message(e.getLocalizedMessage()) + .code("error.identifier.notallowed") + .build(); + return new ResponseEntity<>(response, new HttpHeaders(), response.getStatus()); + } + @Hidden @ResponseStatus(HttpStatus.NOT_FOUND) @ExceptionHandler(QueryNotFoundException.class) diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java index 138ce5ce9ca56df82d2245160a8dbf26f951be8d..831bf171d56a2512a056a6f14fcc6fd0db43e56f 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java @@ -6,11 +6,9 @@ import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.IndexInitializer; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.IdentifierEndpoint; -import at.tuwien.exception.*; import at.tuwien.repository.jpa.*; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -58,9 +56,6 @@ public class IdentifierEndpointIntegrationTest extends BaseUnitTest { @Autowired private RealmRepository realmRepository; - @Autowired - private AccessRepository accessRepository; - @Autowired private IdentifierEndpoint identifierEndpoint; @@ -70,6 +65,8 @@ public class IdentifierEndpointIntegrationTest extends BaseUnitTest { realmRepository.save(REALM_DBREPO); userRepository.save(USER_1); userRepository.save(USER_2); + userRepository.save(USER_3); + userRepository.save(USER_4); containerRepository.save(CONTAINER_1_SIMPLE); containerRepository.save(CONTAINER_2_SIMPLE); databaseRepository.save(DATABASE_1_SIMPLE); diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java index db3137f98672500b4f4ee64d6bdc7dee428fb4c6..8fb1f607d9552021598254f1df8e1c36f34d6b33 100644 --- a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java @@ -813,6 +813,8 @@ public abstract class BaseTest { .hash(CONTAINER_1_HASH) .created(CONTAINER_1_CREATED) .ipAddress(CONTAINER_1_IP) + .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .creator(USER_1) .owner(USER_1) .build(); @@ -826,6 +828,8 @@ public abstract class BaseTest { .hash(CONTAINER_1_HASH) .created(CONTAINER_1_CREATED) .ipAddress(CONTAINER_1_IP) + .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .build(); @@ -850,6 +854,8 @@ public abstract class BaseTest { .hash(CONTAINER_2_HASH) .created(CONTAINER_2_CREATED) .ipAddress(CONTAINER_2_IP) + .createdBy(USER_2_ID) + .ownedBy(USER_2_ID) .creator(USER_2) .owner(USER_2) .build(); @@ -863,6 +869,8 @@ public abstract class BaseTest { .hash(CONTAINER_2_HASH) .created(CONTAINER_2_CREATED) .ipAddress(CONTAINER_2_IP) + .createdBy(USER_2_ID) + .ownedBy(USER_2_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .build(); @@ -887,6 +895,8 @@ public abstract class BaseTest { .hash(CONTAINER_3_HASH) .created(CONTAINER_3_CREATED) .ipAddress(CONTAINER_3_IP) + .createdBy(USER_3_ID) + .ownedBy(USER_3_ID) .creator(USER_3) .owner(USER_3) .build(); @@ -900,6 +910,8 @@ public abstract class BaseTest { .hash(CONTAINER_3_HASH) .created(CONTAINER_3_CREATED) .ipAddress(CONTAINER_3_IP) + .createdBy(USER_3_ID) + .ownedBy(USER_3_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .build(); @@ -924,6 +936,8 @@ public abstract class BaseTest { .hash(CONTAINER_4_HASH) .created(CONTAINER_4_CREATED) .ipAddress(CONTAINER_4_IP) + .createdBy(USER_4_ID) + .ownedBy(USER_4_ID) .creator(USER_4) .owner(USER_4) .build(); @@ -937,6 +951,8 @@ public abstract class BaseTest { .hash(CONTAINER_4_HASH) .created(CONTAINER_4_CREATED) .ipAddress(CONTAINER_4_IP) + .createdBy(USER_4_ID) + .ownedBy(USER_4_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .build(); @@ -1007,6 +1023,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_1_EXCHANGE) .created(DATABASE_1_CREATED) .lastModified(DATABASE_1_LAST_MODIFIED) + .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) + .contactPerson(USER_1_ID) + .contact(USER_1) .creator(DATABASE_1_CREATOR) .owner(DATABASE_1_OWNER) .tables(List.of()) /* TABLE_1, TABLE_2, TABLE_3, TABLE_7 */ @@ -1025,6 +1045,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_1_EXCHANGE) .created(DATABASE_1_CREATED) .lastModified(DATABASE_1_LAST_MODIFIED) + .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) + .contactPerson(USER_1_ID) + .contact(null /* for jpa */) .creator(null /* for jpa */) .owner(null /* for jpa */) .tables(List.of() /* for jpa */) @@ -1124,6 +1148,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_2_EXCHANGE) .created(DATABASE_2_CREATED) .lastModified(DATABASE_2_LAST_MODIFIED) + .createdBy(USER_2_ID) + .contactPerson(USER_2_ID) + .contact(USER_2) + .ownedBy(USER_2_ID) .creator(DATABASE_2_CREATOR) .owner(DATABASE_2_OWNER) .tables(List.of()) /* TABLE_4, TABLE_5, TABLE_6 */ @@ -1142,6 +1170,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_2_EXCHANGE) .created(DATABASE_2_CREATED) .lastModified(DATABASE_2_LAST_MODIFIED) + .createdBy(USER_2_ID) + .ownedBy(USER_2_ID) + .contactPerson(USER_1_ID) + .contact(null /* for jpa */) .creator(null /* for jpa */) .owner(null /* for jpa */) .tables(List.of() /* for jpa */) @@ -1247,6 +1279,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_3_EXCHANGE) .created(DATABASE_3_CREATED) .lastModified(DATABASE_3_LAST_MODIFIED) + .contactPerson(USER_3_ID) + .contact(USER_3) + .createdBy(USER_3_ID) + .ownedBy(USER_3_ID) .creator(DATABASE_3_CREATOR) .owner(DATABASE_3_OWNER) .tables(List.of()) /* TABLE_8 */ @@ -1265,6 +1301,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_3_EXCHANGE) .created(DATABASE_3_CREATED) .lastModified(DATABASE_3_LAST_MODIFIED) + .contactPerson(USER_3_ID) + .contact(null /* for jpa */) + .createdBy(USER_3_ID) + .ownedBy(USER_3_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .tables(List.of() /* for jpa */) @@ -1362,6 +1402,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_4_EXCHANGE) .created(DATABASE_4_CREATED) .lastModified(DATABASE_4_LAST_MODIFIED) + .contactPerson(USER_4_ID) + .contact(USER_4) + .createdBy(USER_4_ID) + .ownedBy(USER_4_ID) .creator(USER_4) .owner(USER_4) .tables(List.of()) @@ -1380,6 +1424,10 @@ public abstract class BaseTest { .exchangeName(DATABASE_4_EXCHANGE) .created(DATABASE_4_CREATED) .lastModified(DATABASE_4_LAST_MODIFIED) + .contactPerson(USER_4_ID) + .contact(null /* for jpa */) + .createdBy(USER_4_ID) + .ownedBy(USER_4_ID) .creator(null /* for jpa */) .owner(null /* for jpa */) .tables(List.of() /* for jpa */) @@ -1571,6 +1619,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_7_QUEUE_NAME) .routingKey(TABLE_7_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(TABLE_7_COLUMNS) .creator(USER_1) .created(TABLE_7_CREATED) @@ -1586,6 +1635,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_7_QUEUE_NAME) .routingKey(TABLE_7_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(List.of() /* for jpa */) .creator(null /* for jpa */) .created(TABLE_7_CREATED) @@ -1636,6 +1686,7 @@ public abstract class BaseTest { .autoGenerated(false) .isPrimaryKey(false) .build())) + .createdBy(USER_1_ID) .creator(USER_1) .created(TABLE_8_CREATED) .lastModified(TABLE_8_LAST_MODIFIED) @@ -2482,6 +2533,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_1_QUEUE_NAME) .routingKey(TABLE_1_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(TABLE_1_COLUMNS) .constraints(null) /* TABLE_1_CONSTRAINTS */ .creator(USER_1) @@ -2500,6 +2552,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_1_QUEUE_NAME) .routingKey(TABLE_1_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(List.of() /* for jpa */) .constraints(null /* for jpa */) /* TABLE_1_CONSTRAINTS */ .creator(null /* for jpa */) @@ -2561,6 +2614,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_2_QUEUE_NAME) .routingKey(TABLE_2_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(TABLE_2_COLUMNS) .creator(USER_1) .created(TABLE_2_CREATED) @@ -2578,6 +2632,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_2_QUEUE_NAME) .routingKey(TABLE_2_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(List.of() /* for jpa */) .creator(null /* for jpa */) .created(TABLE_2_CREATED) @@ -3072,6 +3127,7 @@ public abstract class BaseTest { .routingKey(TABLE_3_ROUTING_KEY) .columns(TABLE_3_COLUMNS) .constraints(TABLE_3_CONSTRAINTS) + .createdBy(USER_1_ID) .creator(USER_1) .created(TABLE_3_CREATED) .lastModified(TABLE_3_LAST_MODIFIED) @@ -3090,6 +3146,7 @@ public abstract class BaseTest { .routingKey(TABLE_3_ROUTING_KEY) .columns(List.of() /* for jpa */) .constraints(TABLE_3_CONSTRAINTS) + .createdBy(USER_1_ID) .creator(null /* for jpa */) .created(TABLE_3_CREATED) .lastModified(TABLE_3_LAST_MODIFIED) @@ -3406,6 +3463,7 @@ public abstract class BaseTest { .routingKey(TABLE_4_ROUTING_KEY) .columns(TABLE_4_COLUMNS) .constraints(TABLE_4_CONSTRAINTS) + .createdBy(USER_1_ID) .creator(USER_1) .build(); @@ -3518,6 +3576,7 @@ public abstract class BaseTest { .routingKey(TABLE_5_ROUTING_KEY) .columns(TABLE_5_COLUMNS) .constraints(TABLE_5_CONSTRAINTS) + .createdBy(USER_1_ID) .creator(USER_1) .created(TABLE_5_CREATED) .lastModified(TABLE_5_LAST_MODIFIED) @@ -3648,6 +3707,7 @@ public abstract class BaseTest { .tdbid(DATABASE_2_ID) .queueName(TABLE_6_QUEUE_NAME) .routingKey(TABLE_6_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(TABLE_6_COLUMNS) .creator(USER_1) .created(TABLE_6_CREATED) @@ -3664,6 +3724,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .queueName(TABLE_7_QUEUE_NAME) .routingKey(TABLE_7_ROUTING_KEY) + .createdBy(USER_1_ID) .columns(List.of()) .creator(USER_1) .build(); @@ -3686,6 +3747,7 @@ public abstract class BaseTest { .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) .query(VIEW_1_QUERY) + .createdBy(USER_1_ID) .creator(USER_1) .build(); @@ -3696,6 +3758,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) + .createdBy(USER_1_ID) .query(VIEW_1_QUERY) .build(); @@ -3718,6 +3781,7 @@ public abstract class BaseTest { .isPublic(VIEW_2_PUBLIC) .query(VIEW_2_QUERY) .creator(USER_1) + .createdBy(USER_1_ID) .build(); public final static ViewDto VIEW_2_DTO = ViewDto.builder() @@ -3728,6 +3792,7 @@ public abstract class BaseTest { .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) .query(VIEW_2_QUERY) + .createdBy(USER_1_ID) .build(); public final static Long VIEW_3_ID = 3L; @@ -3749,6 +3814,7 @@ public abstract class BaseTest { .isPublic(VIEW_3_PUBLIC) .query(VIEW_3_QUERY) .creator(USER_1) + .createdBy(USER_1_ID) .build(); public final static ViewDto VIEW_3_DTO = ViewDto.builder() @@ -3759,6 +3825,7 @@ public abstract class BaseTest { .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) .query(VIEW_3_QUERY) + .createdBy(USER_1_ID) .build(); public final static Long VIEW_4_ID = 4L; @@ -3779,6 +3846,8 @@ public abstract class BaseTest { .vdbid(VIEW_4_DATABASE_ID) .isPublic(VIEW_4_PUBLIC) .query(VIEW_4_QUERY) + .createdBy(USER_1_ID) + .creator(USER_1) .build(); public final static Long VIEW_5_ID = 5L; @@ -3799,6 +3868,8 @@ public abstract class BaseTest { .vdbid(VIEW_5_DATABASE_ID) .isPublic(VIEW_5_PUBLIC) .query(VIEW_5_QUERY) + .creator(USER_1) + .createdBy(USER_1_ID) .build(); public final static Long QUERY_1_RESULT_ID = 1L; @@ -3904,6 +3975,8 @@ public abstract class BaseTest { public final static String IDENTIFIER_1_PUBLISHER = "Austrian Government"; public final static IdentifierType IDENTIFIER_1_TYPE = IdentifierType.SUBSET; public final static IdentifierTypeDto IDENTIFIER_1_TYPE_DTO = IdentifierTypeDto.DATABASE; + public final static UUID IDENTIFIER_1_CREATED_BY = USER_1_ID; + public final static User IDENTIFIER_1_CREATOR = USER_1; public final static Creator IDENTIFIER_1_CREATOR_1 = Creator.builder() .id(CREATOR_1_ID) @@ -3912,6 +3985,8 @@ public abstract class BaseTest { .lastname(CREATOR_1_LASTNAME) .orcid(CREATOR_1_ORCID) .affiliation(CREATOR_1_AFFIL) + .createdBy(IDENTIFIER_1_CREATED_BY) + .creator(IDENTIFIER_1_CREATOR) .build(); public final static CreatorDto IDENTIFIER_1_CREATOR_1_DTO = CreatorDto.builder() @@ -3943,6 +4018,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) + .createdBy(USER_1_ID) .creator(USER_1) .creators(List.of(IDENTIFIER_1_CREATOR_1)) .build(); @@ -3968,6 +4044,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) + .createdBy(USER_1_ID) .creator(null /* for jpa */) .creators(List.of() /* for jpa */) .build(); @@ -3993,6 +4070,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) + .creator(USER_1) + .createdBy(USER_1_ID) .creators(List.of(IDENTIFIER_1_CREATOR_1)) .build(); @@ -4069,6 +4148,8 @@ public abstract class BaseTest { public final static String IDENTIFIER_2_PUBLISHER = "Australian Government"; public final static IdentifierType IDENTIFIER_2_TYPE = IdentifierType.SUBSET; public final static IdentifierTypeDto IDENTIFIER_2_TYPE_DTO = IdentifierTypeDto.SUBSET; + public final static UUID IDENTIFIER_2_CREATED_BY = USER_2_ID; + public final static User IDENTIFIER_2_CREATOR = USER_2; public final static Creator IDENTIFIER_2_CREATOR_1 = Creator.builder() .id(CREATOR_1_ID) @@ -4077,6 +4158,8 @@ public abstract class BaseTest { .lastname(CREATOR_1_LASTNAME) .orcid(CREATOR_1_ORCID) .affiliation(CREATOR_1_AFFIL) + .createdBy(IDENTIFIER_2_CREATED_BY) + .creator(IDENTIFIER_2_CREATOR) .build(); public final static CreatorDto IDENTIFIER_2_CREATOR_1_DTO = CreatorDto.builder() @@ -4094,6 +4177,8 @@ public abstract class BaseTest { .lastname(CREATOR_2_LASTNAME) .orcid(CREATOR_2_ORCID) .affiliation(CREATOR_2_AFFIL) + .createdBy(IDENTIFIER_2_CREATED_BY) + .creator(IDENTIFIER_2_CREATOR) .build(); public final static CreatorDto IDENTIFIER_2_CREATOR_2_DTO = CreatorDto.builder() @@ -4126,6 +4211,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_2_RESULT_NUMBER) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE) + .createdBy(USER_2_ID) .creator(USER_2) .creators(List.of(IDENTIFIER_2_CREATOR_1, IDENTIFIER_2_CREATOR_2)) .build(); @@ -4152,6 +4238,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_2_RESULT_NUMBER) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE) + .createdBy(USER_2_ID) .creator(null /* for jpa */) .creators(List.of() /* for jpa */) .build(); @@ -4366,6 +4453,8 @@ public abstract class BaseTest { public final static String IDENTIFIER_3_PUBLISHER = "Norwegian Government"; public final static IdentifierType IDENTIFIER_3_TYPE = IdentifierType.SUBSET; public final static IdentifierTypeDto IDENTIFIER_3_TYPE_DTO = IdentifierTypeDto.SUBSET; + public final static UUID IDENTIFIER_3_CREATOR_ID = USER_3_ID; + public final static User IDENTIFIER_3_CREATOR = USER_3; public final static Creator IDENTIFIER_3_CREATOR_1 = Creator.builder() .id(CREATOR_1_ID) @@ -4374,6 +4463,8 @@ public abstract class BaseTest { .lastname(CREATOR_1_LASTNAME) .orcid(CREATOR_1_ORCID) .affiliation(CREATOR_1_AFFIL) + .createdBy(IDENTIFIER_3_CREATOR_ID) + .creator(IDENTIFIER_3_CREATOR) .build(); public final static CreatorDto IDENTIFIER_3_CREATOR_1_DTO = CreatorDto.builder() @@ -4391,6 +4482,8 @@ public abstract class BaseTest { .lastname(CREATOR_2_LASTNAME) .orcid(CREATOR_2_ORCID) .affiliation(CREATOR_2_AFFIL) + .createdBy(IDENTIFIER_3_CREATOR_ID) + .creator(IDENTIFIER_3_CREATOR) .build(); public final static CreatorDto IDENTIFIER_3_CREATOR_2_DTO = CreatorDto.builder() @@ -4408,6 +4501,8 @@ public abstract class BaseTest { .lastname(CREATOR_3_LASTNAME) .orcid(CREATOR_3_ORCID) .affiliation(CREATOR_3_AFFIL) + .createdBy(IDENTIFIER_3_CREATOR_ID) + .creator(IDENTIFIER_3_CREATOR) .build(); public final static CreatorDto IDENTIFIER_3_CREATOR_3_DTO = CreatorDto.builder() @@ -4440,7 +4535,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_3_RESULT_NUMBER) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE) - .creator(USER_3) + .createdBy(IDENTIFIER_3_CREATOR_ID) + .creator(IDENTIFIER_3_CREATOR) .creators(List.of(IDENTIFIER_3_CREATOR_1, IDENTIFIER_3_CREATOR_2, IDENTIFIER_3_CREATOR_3)) .build(); @@ -4466,6 +4562,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_3_RESULT_NUMBER) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE) + .createdBy(USER_3_ID) .creator(null /* for jpa */) .creators(List.of() /* for jpa */) .build(); @@ -4556,6 +4653,8 @@ public abstract class BaseTest { public final static Long IDENTIFIER_4_RESULT_NUMBER = 2L; public final static String IDENTIFIER_4_PUBLISHER = "Swedish Government"; public final static IdentifierType IDENTIFIER_4_TYPE = IdentifierType.DATABASE; + public final static UUID IDENTIFIER_4_CREATOR_ID = USER_4_ID; + public final static User IDENTIFIER_4_CREATOR = USER_4; public final static Identifier IDENTIFIER_4 = Identifier.builder() .id(IDENTIFIER_4_ID) @@ -4578,6 +4677,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_4_RESULT_NUMBER) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE) + .createdBy(USER_3_ID) .creator(USER_3) .creators(List.of()) .build(); @@ -4603,6 +4703,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_4_RESULT_NUMBER) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE) + .createdBy(USER_3_ID) .creator(null /* for jpa */) .creators(List.of() /* for jpa */) .build(); diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java index c356639c9d23b08854d38e140b5a31e9a0c2c922..ff6762bcbe721cf34b12c54526b1f6cdfbcb0e44 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java @@ -13,10 +13,9 @@ import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; import at.tuwien.repository.jpa.DatabaseAccessRepository; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.jpa.UserRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; -import at.tuwien.service.QueryService; import at.tuwien.service.impl.StoreServiceImpl; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; @@ -54,11 +53,9 @@ public class StoreEndpointUnitTest extends BaseUnitTest { @MockBean private IndexConfig indexInitializer; - /* keep */ @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; @@ -77,6 +74,9 @@ public class StoreEndpointUnitTest extends BaseUnitTest { @MockBean private AccessService accessService; + @MockBean + private UserRepository userRepository; + @Test @WithAnonymousUser public void findAll_anonymous_succeeds() throws QueryStoreException, DatabaseNotFoundException, ImageNotSupportedException, @@ -108,10 +108,6 @@ public class StoreEndpointUnitTest extends BaseUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"list-queries"}) public void findAll_noAccess_fails() { - /* mock */ - when(accessRepository.findByDatabaseIdAndUsername(DATABASE_2_ID, USER_1_USERNAME)) - .thenReturn(Optional.of(DATABASE_1_RESEARCHER_READ_ACCESS)); - /* test */ assertThrows(NotAllowedException.class, () -> { findAll_generic(CONTAINER_2_ID, DATABASE_2_ID, DATABASE_2, USER_1_PRINCIPAL); @@ -150,134 +146,111 @@ public class StoreEndpointUnitTest extends BaseUnitTest { findAll_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, USER_3_PRINCIPAL); } - @Test - public void find_anonymous_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, - ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { - - /* test */ - final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_ID, null, null); - assertEquals(QUERY_1_ID, response.getId()); - assertEquals(QUERY_1_STATEMENT, response.getQuery()); - } - @Test @WithAnonymousUser - public void find_anonymous2_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, + public void find_anonymous_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { - /* test */ - final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_ID, null, null); - assertEquals(QUERY_1_ID, response.getId()); - assertEquals(QUERY_1_STATEMENT, response.getQuery()); - } - - @Test - @WithMockUser(username = USER_1_USERNAME, roles = "RESEARCHER") - public void find_researcher_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, - ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { + /* mock */ + when(userRepository.findByUsername(USER_1_USERNAME)) + .thenReturn(Optional.of(USER_1)); /* test */ - final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_ID, USER_1, USER_1_PRINCIPAL); + final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, null, null); assertEquals(QUERY_1_ID, response.getId()); assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - @WithMockUser(username = USER_2_USERNAME, roles = "DATA_STEWARD") - public void find_dataSteward_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, + @WithMockUser(username = USER_1_USERNAME, authorities = "find-query") + public void find_hasRole_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { /* test */ - final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_2_ID, USER_2, USER_2_PRINCIPAL); + final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL); assertEquals(QUERY_1_ID, response.getId()); assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - @WithMockUser(username = USER_3_USERNAME, roles = "DEVELOPER") - public void find_developer_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, + @WithMockUser(username = USER_1_USERNAME) + public void find_noRole_succeeds() throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { /* test */ - final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_3_ID, USER_3, USER_3_PRINCIPAL); + final QueryDto response = find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL); assertEquals(QUERY_1_ID, response.getId()); assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - @WithMockUser(username = USER_1_USERNAME, roles = "RESEARCHER") + @WithMockUser(username = USER_1_USERNAME, authorities = "find-query") public void find_notFound_fails() { /* test */ assertThrows(QueryNotFoundException.class, () -> { - find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, null, USER_1_ID, USER_1, USER_1_PRINCIPAL); + find_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, null, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL); }); } @Test - @WithMockUser(username = USER_1_USERNAME, roles = "RESEARCHER") + @WithMockUser(username = USER_1_USERNAME, authorities = "find-query") public void find_databaseNotFound_fails() { /* test */ assertThrows(NotAllowedException.class, () -> { - find_generic(CONTAINER_1_ID, DATABASE_1_ID, null, QUERY_1_ID, QUERY_1, USER_1_ID, USER_1, USER_1_PRINCIPAL); - }); - } - - @Test - public void persist_publicAnonymous_fails() { - - /* test */ - assertThrows(NotAllowedException.class, () -> { - persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, null, null, null); - }); - } - - @Test - public void persist_publicRead_fails() { - - /* test */ - assertThrows(NotAllowedException.class, () -> { - persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_2_USERNAME, USER_2_PRINCIPAL, DATABASE_1_RESEARCHER_READ_ACCESS); + find_generic(CONTAINER_1_ID, DATABASE_1_ID, null, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL); }); } @Test - public void persist_publicWriteOwn_fails() { + @WithMockUser(username = USER_1_USERNAME, authorities = "persist-query") + public void persist_ownRead_succeeds() throws UserNotFoundException, QueryStoreException, + NotAllowedException, DatabaseConnectionException, QueryAlreadyPersistedException, QueryNotFoundException, + DatabaseNotFoundException, ImageNotSupportedException { /* test */ - assertThrows(NotAllowedException.class, () -> { - persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_2_USERNAME, USER_2_PRINCIPAL, DATABASE_1_RESEARCHER_WRITE_OWN_ACCESS); - }); + final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL, DATABASE_1_RESEARCHER_READ_ACCESS); + assertEquals(QUERY_1_ID, response.getId()); + assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - public void persist_publicWriteAll_succeeds() throws UserNotFoundException, QueryStoreException, + @WithMockUser(username = USER_1_USERNAME, authorities = "persist-query") + public void persist_ownWriteOwn_succeeds() throws UserNotFoundException, QueryStoreException, NotAllowedException, DatabaseConnectionException, QueryAlreadyPersistedException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException { /* test */ - final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_2_USERNAME, USER_2_PRINCIPAL, DATABASE_1_RESEARCHER_WRITE_ALL_ACCESS); + final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL, DATABASE_1_RESEARCHER_WRITE_OWN_ACCESS); assertEquals(QUERY_1_ID, response.getId()); assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - public void persist_publicWriteAllAlreadyPersisted_succeeds() { + @WithMockUser(username = USER_1_USERNAME, authorities = "persist-query") + public void persist_ownWriteAll_succeeds() throws UserNotFoundException, QueryStoreException, + NotAllowedException, DatabaseConnectionException, QueryAlreadyPersistedException, QueryNotFoundException, + DatabaseNotFoundException, ImageNotSupportedException { /* test */ - assertThrows(QueryAlreadyPersistedException.class, () -> { - persist_generic(CONTAINER_2_ID, DATABASE_2_ID, DATABASE_2, QUERY_2_ID, QUERY_2, USER_2_USERNAME, USER_2_PRINCIPAL, DATABASE_2_RESEARCHER_WRITE_ALL_ACCESS); - }); + final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1, USER_1_PRINCIPAL, DATABASE_1_RESEARCHER_WRITE_ALL_ACCESS); + assertEquals(QUERY_1_ID, response.getId()); + assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @Test - public void persist_publicOwner_succeeds() throws UserNotFoundException, QueryStoreException, + @WithMockUser(username = USER_2_USERNAME, authorities = "persist-query") + public void persist_foreignWriteAll_succeeds() throws UserNotFoundException, QueryStoreException, NotAllowedException, DatabaseConnectionException, QueryAlreadyPersistedException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException { + /* mock */ + when(userRepository.findByUsername(USER_1_USERNAME)) + .thenReturn(Optional.of(USER_1)); + /* test */ - final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_1_USERNAME, USER_1_PRINCIPAL, DATABASE_1_RESEARCHER_WRITE_ALL_ACCESS); + final QueryDto response = persist_generic(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, QUERY_1_ID, QUERY_1, USER_2_USERNAME, USER_2, USER_2_PRINCIPAL, DATABASE_1_DEVELOPER_WRITE_ALL_ACCESS); assertEquals(QUERY_1_ID, response.getId()); assertEquals(QUERY_1_STATEMENT, response.getQuery()); } @@ -287,7 +260,7 @@ public class StoreEndpointUnitTest extends BaseUnitTest { /* ################################################################################################### */ protected QueryDto persist_generic(Long containerId, Long databaseId, Database database, Long queryId, Query query, - String username, Principal principal, DatabaseAccess access) + String username, User user, Principal principal, DatabaseAccess access) throws DatabaseNotFoundException, UserNotFoundException, QueryStoreException, QueryNotFoundException, ImageNotSupportedException, NotAllowedException, DatabaseConnectionException, QueryAlreadyPersistedException { @@ -308,6 +281,8 @@ public class StoreEndpointUnitTest extends BaseUnitTest { when(accessService.find(databaseId, username)) .thenThrow(NotAllowedException.class); } + when(userRepository.findByUsername(username)) + .thenReturn(Optional.of(user)); /* test */ final ResponseEntity<QueryDto> response = storeEndpoint.persist(containerId, databaseId, queryId, principal); @@ -337,7 +312,7 @@ public class StoreEndpointUnitTest extends BaseUnitTest { } protected QueryDto find_generic(Long containerId, Long databaseId, Database database, Long queryId, Query query, - UUID userId, User user, Principal principal) throws QueryStoreException, + String username, User user, Principal principal) throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, UserNotFoundException, NotAllowedException, DatabaseConnectionException { @@ -356,6 +331,13 @@ public class StoreEndpointUnitTest extends BaseUnitTest { when(databaseService.find(containerId, databaseId)) .thenThrow(DatabaseNotFoundException.class); } + if (user != null) { + when(userRepository.findByUsername(username)) + .thenReturn(Optional.of(user)); + } else { + when(userRepository.findByUsername(username)) + .thenReturn(Optional.empty()); + } /* test */ final ResponseEntity<QueryDto> response = storeEndpoint.find(CONTAINER_1_ID, DATABASE_1_ID, QUERY_1_ID, principal);