From 11ffa257466b0d1e36ab515ec19700c6396956d2 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 17 Sep 2023 16:09:39 +0200 Subject: [PATCH] Fixed some tests --- .gitlab-ci.yml | 2 ++ .../at/tuwien/endpoints/UserEndpoint.java | 2 +- .../endpoints/UserEndpointUnitTest.java | 4 +-- .../gateway/BrokerServiceGatewayTest.java | 6 ++--- .../DatabaseServiceIntegrationTest.java | 26 +++++++++---------- .../MessageQueueServiceIntegrationTest.java | 10 +++---- .../tuwien/gateway/BrokerServiceGateway.java | 10 ++++--- .../impl/BrokerServiceGatewayImpl.java | 9 ++++--- .../tuwien/service/MessageQueueService.java | 2 +- .../service/impl/RabbitMqServiceImpl.java | 5 ++-- 10 files changed, 41 insertions(+), 35 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6028862ea5..66bb59f7ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -130,6 +130,7 @@ test-default-deployment: - "make teardown" - "rm -f .env" - "docker compose up -d || docker compose down" + - "make teardown" coverage: '/TOTAL.*?([0-9]{1,3})%/' test-env-deployment: @@ -140,6 +141,7 @@ test-env-deployment: - "make teardown" - "cp .env.unix.example .env" - "docker compose up -d || docker compose down" + - "make teardown" scan-analyse-service: stage: scan-docker diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index ced4aa3410..ecd68ec53e 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -106,7 +106,7 @@ public class UserEndpoint { }) public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody SignupRequestDto data) throws UserAlreadyExistsException, UserEmailAlreadyExistsException, UserNotFoundException, - KeycloakRemoteException, AccessDeniedException, BrokerRemoteException { + KeycloakRemoteException, AccessDeniedException, BrokerRemoteException, BrokerVirtualHostCreationException { log.debug("endpoint create a user, data={}", data); /* check */ userService.validateUsernameNotExists(data.getUsername()); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java index e783f9b1ca..030f8e3c44 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java @@ -67,7 +67,7 @@ public class UserEndpointUnitTest extends BaseUnitTest { @WithAnonymousUser public void create_anonymous_succeeds() throws UserNotFoundException, UserEmailAlreadyExistsException, RealmNotFoundException, UserAlreadyExistsException, KeycloakRemoteException, - at.tuwien.exception.AccessDeniedException, BrokerRemoteException { + at.tuwien.exception.AccessDeniedException, BrokerRemoteException, BrokerVirtualHostCreationException { final SignupRequestDto request = SignupRequestDto.builder() .email(USER_1_EMAIL) .username(USER_1_USERNAME) @@ -304,7 +304,7 @@ public class UserEndpointUnitTest extends BaseUnitTest { protected void create_generic(SignupRequestDto data, User user) throws UserEmailAlreadyExistsException, RealmNotFoundException, UserAlreadyExistsException, UserNotFoundException, KeycloakRemoteException, - AccessDeniedException, BrokerRemoteException { + AccessDeniedException, BrokerRemoteException, BrokerVirtualHostCreationException { /* mock */ when(userService.create(data)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java index bfa22db2fb..567e9cbbc7 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java @@ -107,7 +107,7 @@ public class BrokerServiceGatewayTest extends BaseUnitTest { } @Test - public void grantPermission_virtualHostNoRightsBefore_succeeds() throws BrokerRemoteException { + public void grantPermission_virtualHostNoRightsBefore_succeeds() throws BrokerRemoteException, BrokerVirtualHostGrantException { final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.CREATED) .build(); @@ -120,7 +120,7 @@ public class BrokerServiceGatewayTest extends BaseUnitTest { } @Test - public void grantPermission_virtualHostRightsSame_succeeds() throws BrokerRemoteException { + public void grantPermission_virtualHostRightsSame_succeeds() throws BrokerRemoteException, BrokerVirtualHostGrantException { final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.NO_CONTENT) .build(); @@ -148,7 +148,7 @@ public class BrokerServiceGatewayTest extends BaseUnitTest { } @Test - public void createUser_succeeds() throws BrokerRemoteException { + public void createUser_succeeds() throws BrokerRemoteException, BrokerVirtualHostCreationException { final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.NO_CONTENT) .build(); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java index 426f086caa..20aadf3a08 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java @@ -117,7 +117,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { when(databaseIdxRepository.save(any(DatabaseDto.class))) .thenReturn(DATABASE_1_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_create(DATABASE_1_CREATE, DATABASE_1); @@ -133,7 +133,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { when(databaseIdxRepository.save(any(DatabaseDto.class))) .thenReturn(DATABASE_1_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_create(DATABASE_1_CREATE, DATABASE_1); @@ -151,7 +151,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { .thenReturn(DATABASE_2_DTO) .thenReturn(DATABASE_3_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_create(DATABASE_2_CREATE, DATABASE_2); @@ -169,7 +169,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { .thenReturn(DATABASE_3_DTO) .thenReturn(DATABASE_2_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_create(DATABASE_3_CREATE, DATABASE_3); @@ -185,7 +185,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { when(databaseIdxRepository.save(any(DatabaseDto.class))) .thenReturn(DATABASE_1_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); final Database database = generic_create(DATABASE_1_CREATE, DATABASE_1); @@ -202,7 +202,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { when(databaseIdxRepository.save(any(DatabaseDto.class))) .thenReturn(DATABASE_1_DTO); when(queryConfig.getGrantPrivileges()) - .thenReturn("" /* (1) */, "ALL"/* (2) */); + .thenReturn("" /* (1) */, "SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"/* (2) */); /* test */ assertThrows(DatabaseMalformedException.class, () -> { @@ -220,7 +220,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { when(databaseIdxRepository.save(any(DatabaseDto.class))) .thenReturn(DATABASE_1_DTO); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ assertThrows(SQLInvalidAuthorizationSpecException.class, () -> { @@ -239,7 +239,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { /* mock */ when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_insert(QUERY_4_STATEMENT, 1L); @@ -250,7 +250,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { /* mock */ when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_insert(QUERY_4_STATEMENT, 1L); @@ -263,7 +263,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { /* mock */ when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_system_insert(CONTAINER_1_PRIVILEGED_USERNAME, CONTAINER_1_PRIVILEGED_PASSWORD); @@ -274,7 +274,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { /* mock */ when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ assertThrows(SQLException.class, () -> { @@ -287,7 +287,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { /* mock */ when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_user_insert(CONTAINER_1_PRIVILEGED_USERNAME, CONTAINER_1_PRIVILEGED_PASSWORD); @@ -302,7 +302,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { mariaDbConfig.grantUserPermissions(CONTAINER_1, DATABASE_3, "junit1"); databaseAccessRepository.save(DATABASE_3_USER_1_WRITE_ALL_ACCESS); when(queryConfig.getGrantPrivileges()) - .thenCallRealMethod(); + .thenReturn("SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE"); /* test */ generic_user_insert("junit1", "junit1"); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java index a2059e3539..7c0c8c5b5c 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java @@ -86,14 +86,14 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { } @Test - public void createUser_succeeds() throws BrokerRemoteException { + public void createUser_succeeds() throws BrokerRemoteException, BrokerVirtualHostCreationException { /* test */ messageQueueService.createUser(USER_1_USERNAME); } @Test - public void updatePermissions_empty_succeeds() throws BrokerRemoteException { + public void updatePermissions_empty_succeeds() throws BrokerRemoteException, BrokerVirtualHostGrantException { /* test */ final PermissionDto permissions = updatePermissions_generic(); @@ -105,7 +105,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { } @Test - public void updatePermissions_owner_succeeds() throws BrokerRemoteException { + public void updatePermissions_owner_succeeds() throws BrokerRemoteException, BrokerVirtualHostGrantException { /* mock */ when(databaseRepository.findConfigureAccess(USER_1_ID)) @@ -125,7 +125,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { } @Test - public void updatePermissions_ownerNoAccess_succeeds() throws BrokerRemoteException { + public void updatePermissions_ownerNoAccess_succeeds() throws BrokerRemoteException, BrokerVirtualHostGrantException { /* mock */ when(databaseRepository.findConfigureAccess(USER_1_ID)) @@ -164,7 +164,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - protected PermissionDto updatePermissions_generic() throws BrokerRemoteException { + protected PermissionDto updatePermissions_generic() throws BrokerRemoteException, BrokerVirtualHostGrantException { /* mock */ amqpUtils.createUser(USER_1_USERNAME, USER_1_RABBITMQ_CREATE_DTO); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java index e1d3f15b8b..0484e1c29a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java @@ -43,16 +43,18 @@ public interface BrokerServiceGateway { * Create user on the broker service * * @param username The new username. - * @throws BrokerRemoteException The Broker Service did not respond within the 3s timeout. + * @throws BrokerRemoteException The Broker Service did not respond within the 3s timeout. + * @throws BrokerVirtualHostCreationException The user could not be created. */ - void createUser(String username) throws BrokerRemoteException; + void createUser(String username) throws BrokerRemoteException, BrokerVirtualHostCreationException; /** * Grants a user permission at a virtual host in the queue service. * * @param username The username of the user. * @param data The grant data. - * @throws BrokerRemoteException The Broker Service did not respond within the 3s timeout. + * @throws BrokerRemoteException The Broker Service did not respond within the 3s timeout. + * @throws BrokerVirtualHostGrantException The permissions could not be granted. */ - void grantPermission(String username, GrantVirtualHostPermissionsDto data) throws BrokerRemoteException; + void grantPermission(String username, GrantVirtualHostPermissionsDto data) throws BrokerRemoteException, BrokerVirtualHostGrantException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java index 1e44ecec62..23ab2985a1 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java @@ -85,7 +85,7 @@ public class BrokerServiceGatewayImpl implements BrokerServiceGateway { } @Override - public void createUser(String username) throws BrokerRemoteException { + public void createUser(String username) throws BrokerRemoteException, BrokerVirtualHostCreationException { final CreateUserDto data = CreateUserDto.builder() .passwordHash("") .tags("") @@ -101,13 +101,14 @@ public class BrokerServiceGatewayImpl implements BrokerServiceGateway { } if (!response.getStatusCode().equals(HttpStatus.CREATED) && !response.getStatusCode().equals(HttpStatus.NO_CONTENT)) { log.error("Failed to create user: {}", response.getStatusCode()); - throw new BrokerRemoteException("Failed to create user"); + throw new BrokerVirtualHostCreationException("Failed to create user"); } log.info("Created user with username {}", username); } @Override - public void grantPermission(String username, GrantVirtualHostPermissionsDto data) throws BrokerRemoteException { + public void grantPermission(String username, GrantVirtualHostPermissionsDto data) throws BrokerRemoteException, + BrokerVirtualHostGrantException { final String url = "/api/permissions/dbrepo/" + username; log.trace("PUT {}{}", gatewayConfig.getBrokerEndpoint(), url); final ResponseEntity<Void> response; @@ -119,7 +120,7 @@ public class BrokerServiceGatewayImpl implements BrokerServiceGateway { } if (!response.getStatusCode().equals(HttpStatus.CREATED) && !response.getStatusCode().equals(HttpStatus.NO_CONTENT)) { log.error("Failed to grant virtual host: {}", response.getStatusCode()); - throw new BrokerRemoteException("Failed to grant virtual host"); + throw new BrokerVirtualHostGrantException("Failed to grant virtual host"); } log.info("Grant permission for user with username {}", username); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MessageQueueService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MessageQueueService.java index 63d5bd064a..50fe523377 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MessageQueueService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MessageQueueService.java @@ -49,7 +49,7 @@ public interface MessageQueueService { * @param username The username. * @throws BrokerRemoteException The user could not be created. */ - void createUser(String username) throws BrokerRemoteException; + void createUser(String username) throws BrokerRemoteException, BrokerVirtualHostCreationException; /** diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java index 320c321614..56c102131a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java @@ -10,6 +10,7 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.AmqpException; import at.tuwien.exception.BrokerRemoteException; import at.tuwien.exception.BrokerVirtualHostCreationException; +import at.tuwien.exception.BrokerVirtualHostGrantException; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.mapper.AmqpMapper; import at.tuwien.repository.mdb.DatabaseRepository; @@ -103,12 +104,12 @@ public class RabbitMqServiceImpl implements MessageQueueService { } @Override - public void createUser(String username) throws BrokerRemoteException { + public void createUser(String username) throws BrokerRemoteException, BrokerVirtualHostCreationException { brokerServiceGateway.createUser(username); } @Override - public void updatePermissions(User user) throws BrokerRemoteException { + public void updatePermissions(User user) throws BrokerRemoteException, BrokerVirtualHostGrantException { final GrantVirtualHostPermissionsDto permissions = GrantVirtualHostPermissionsDto.builder() .configure(amqpMapper.databaseListToPermissionString(databaseRepository.findConfigureAccess(user.getId()))) .write(amqpMapper.databaseListToPermissionString(databaseRepository.findWriteAccess(user.getId()))) -- GitLab