Skip to content
Snippets Groups Projects
Verified Commit 93a12caa authored by Martin Weise's avatar Martin Weise
Browse files

Fixed some tests

parent ba8fcd60
No related branches found
No related tags found
2 merge requests!422Fixed a library issue where the value could not be empty,!421Fixed a library issue where the value could not be empty
......@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
#### Fixes
* Fixed a bug where another PID was registered when using the DOI profile in the Metadata Service.
* Fixed a bug where titles, descriptions, creators, etc. were not sorted to the user-specified ordering
in [#531](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/531).
* Fixed a design issue where the `get_identifier_data` method in the Python library only fetched the first 10.000 rows
......
package at.ac.tuwien.ifs.dbrepo.gateway;
import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
import at.ac.tuwien.ifs.dbrepo.core.api.orcid.OrcidDto;
import at.ac.tuwien.ifs.dbrepo.core.exception.OrcidNotFoundException;
import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpEntity;
......@@ -17,8 +18,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;
......@@ -28,14 +27,12 @@ import static org.mockito.Mockito.*;
public class OrcidGatewayUnitTest extends BaseTest {
@MockBean
@Qualifier("restTemplate")
private RestTemplate restTemplate;
@Autowired
private OrcidGateway orcidGateway;
public OrcidGatewayUnitTest() throws IOException {
}
@Test
public void findByUrl_succeeds() throws OrcidNotFoundException {
......
......@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpEntity;
......@@ -26,6 +27,7 @@ import static org.mockito.Mockito.*;
public class RorGatewayUnitTest extends BaseTest {
@MockBean
@Qualifier("restTemplate")
private RestTemplate restTemplate;
@Autowired
......
package at.ac.tuwien.ifs.dbrepo.service;
import at.ac.tuwien.ifs.dbrepo.auth.InternalRequestInterceptor;
import at.ac.tuwien.ifs.dbrepo.config.RabbitConfig;
import at.ac.tuwien.ifs.dbrepo.core.api.amqp.GrantExchangePermissionsDto;
import at.ac.tuwien.ifs.dbrepo.core.api.amqp.GrantVirtualHostPermissionsDto;
import at.ac.tuwien.ifs.dbrepo.core.api.amqp.TopicPermissionDto;
import at.ac.tuwien.ifs.dbrepo.core.api.amqp.VirtualHostPermissionDto;
import at.ac.tuwien.ifs.dbrepo.config.RabbitConfig;
import at.ac.tuwien.ifs.dbrepo.core.entity.database.DatabaseAccess;
import at.ac.tuwien.ifs.dbrepo.core.entity.user.User;
import at.ac.tuwien.ifs.dbrepo.core.exception.BrokerServiceConnectionException;
......@@ -12,15 +13,20 @@ import at.ac.tuwien.ifs.dbrepo.core.exception.BrokerServiceException;
import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
import at.ac.tuwien.ifs.dbrepo.utils.AmqpUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.client.support.BasicAuthenticationInterceptor;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import org.testcontainers.containers.RabbitMQContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
......@@ -29,6 +35,8 @@ import java.util.List;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
@Slf4j
@Testcontainers
......@@ -43,6 +51,10 @@ public class BrokerServiceIntegrationTest extends BaseTest {
@Autowired
private BrokerService brokerService;
@Autowired
@Qualifier("brokerRestTemplate")
private RestTemplate restTemplate;
@Container
private static final RabbitMQContainer rabbitContainer = new RabbitMQContainer("rabbitmq:3-management")
.withUser(USER_1_USERNAME, USER_1_PASSWORD, Set.of("administrator"))
......@@ -53,6 +65,12 @@ public class BrokerServiceIntegrationTest extends BaseTest {
registry.add("dbrepo.endpoints.brokerService", rabbitContainer::getHttpUrl);
}
@BeforeEach
public void beforeEach() {
restTemplate.setInterceptors(List.of(new BasicAuthenticationInterceptor(rabbitContainer.getAdminUsername(),
rabbitContainer.getAdminPassword())));
}
@Test
public void updatePermissions_empty_succeeds() throws BrokerServiceException, BrokerServiceConnectionException {
......@@ -168,20 +186,18 @@ public class BrokerServiceIntegrationTest extends BaseTest {
.read("")
.write("")
.build();
final AmqpUtils amqpUtils = new AmqpUtils(rabbitContainer.getHttpUrl());
/* mock */
amqpUtils.setVirtualHostPermissions(REALM_DBREPO_NAME, USER_1_USERNAME, permissions);
AmqpUtils.setVirtualHostPermissions(restTemplate, REALM_DBREPO_NAME, USER_1_USERNAME, permissions);
/* test */
brokerService.setVirtualHostPermissions(USER_1);
return amqpUtils.getVirtualHostPermissions(USER_1_USERNAME);
return AmqpUtils.getVirtualHostPermissions(restTemplate, USER_1_USERNAME);
}
@Transactional(readOnly = true)
protected TopicPermissionDto setTopicExchangePermissions_generic(List<DatabaseAccess> accesses)
throws BrokerServiceException, BrokerServiceConnectionException {
final AmqpUtils amqpUtils = new AmqpUtils(rabbitContainer.getHttpUrl());
final GrantExchangePermissionsDto request = GrantExchangePermissionsDto.builder()
.exchange(rabbitConfig.getExchangeName())
.read("")
......@@ -194,12 +210,12 @@ public class BrokerServiceIntegrationTest extends BaseTest {
.build();
/* mock */
amqpUtils.setVirtualHostPermissions(REALM_DBREPO_NAME, USER_1_USERNAME, VIRTUAL_HOST_GRANT_DTO);
amqpUtils.setTopicPermissions(REALM_DBREPO_NAME, USER_1_USERNAME, request);
AmqpUtils.setVirtualHostPermissions(restTemplate, REALM_DBREPO_NAME, USER_1_USERNAME, VIRTUAL_HOST_GRANT_DTO);
AmqpUtils.setTopicPermissions(restTemplate, REALM_DBREPO_NAME, USER_1_USERNAME, request);
/* test */
brokerService.setTopicExchangePermissions(user);
return amqpUtils.getTopicPermissions(USER_1_USERNAME);
return AmqpUtils.getTopicPermissions(restTemplate, USER_1_USERNAME);
}
}
......@@ -4,19 +4,13 @@ import at.ac.tuwien.ifs.dbrepo.core.api.amqp.*;
import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.support.BasicAuthenticationInterceptor;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.DefaultUriBuilderFactory;
import java.nio.charset.Charset;
import java.util.Arrays;
......@@ -28,17 +22,7 @@ public class AmqpUtils extends BaseTest {
private static final String BASIC_AUTH = new String(Base64.encodeBase64((USER_1_USERNAME + ":" + USER_1_PASSWORD).getBytes(Charset.defaultCharset())));
private final RestTemplate restTemplate;
public AmqpUtils(String endpoint) {
final RestTemplate restTemplate = new RestTemplate();
restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(endpoint));
restTemplate.getInterceptors()
.add(new BasicAuthenticationInterceptor(USER_1_USERNAME, USER_1_PASSWORD));
this.restTemplate = restTemplate;
}
public boolean exchangeExists(String exchange) {
public static boolean exchangeExists(RestTemplate restTemplate, String exchange) {
final String url = "/api/exchanges";
log.debug("get exchange: {}", url);
final ResponseEntity<ExchangeDto[]> response = restTemplate.exchange(url, HttpMethod.GET, null, ExchangeDto[].class);
......@@ -58,7 +42,7 @@ public class AmqpUtils extends BaseTest {
return true;
}
public VirtualHostPermissionDto getVirtualHostPermissions(String username) {
public static VirtualHostPermissionDto getVirtualHostPermissions(RestTemplate restTemplate, String username) {
final String url = "/api/users/" + username + "/permissions";
log.debug("get virtual host permissions: {}", url);
final ResponseEntity<VirtualHostPermissionDto[]> response = restTemplate.exchange(url, HttpMethod.GET, null, VirtualHostPermissionDto[].class);
......@@ -75,7 +59,7 @@ public class AmqpUtils extends BaseTest {
return response.getBody()[0];
}
public TopicPermissionDto getTopicPermissions(String username) {
public static TopicPermissionDto getTopicPermissions(RestTemplate restTemplate, String username) {
final String url = "/api/topic-permissions/dbrepo/" + username;
log.debug("get topic permissions: {}", url);
final ResponseEntity<TopicPermissionDto[]> response = restTemplate.exchange(url, HttpMethod.GET, null, TopicPermissionDto[].class);
......@@ -92,7 +76,7 @@ public class AmqpUtils extends BaseTest {
return response.getBody()[0];
}
public void createUser(String username, CreateUserDto data) {
public static void createUser(RestTemplate restTemplate, String username, CreateUserDto data) {
final String url = "/api/users/" + username;
log.debug("add user: {}", url);
log.trace("body: {}", data);
......@@ -103,7 +87,7 @@ public class AmqpUtils extends BaseTest {
}
}
public void setVirtualHostPermissions(String vhost, String username, GrantVirtualHostPermissionsDto data) {
public static void setVirtualHostPermissions(RestTemplate restTemplate, String vhost, String username, GrantVirtualHostPermissionsDto data) {
final String url = "/api/permissions/" + vhost + "/" + username;
log.trace("body: {}", data);
final MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
......@@ -116,7 +100,7 @@ public class AmqpUtils extends BaseTest {
}
}
public void setTopicPermissions(String vhost, String username, GrantExchangePermissionsDto data) {
public static void setTopicPermissions(RestTemplate restTemplate, String vhost, String username, GrantExchangePermissionsDto data) {
final String url = "/api/topic-permissions/" + vhost + "/" + username;
log.debug("set topic permissions: {}", url);
log.trace("body: {}", data);
......@@ -129,7 +113,7 @@ public class AmqpUtils extends BaseTest {
}
}
public boolean queueExists(String queue) {
public static boolean queueExists(RestTemplate restTemplate, String queue) {
final ResponseEntity<QueueDto[]> response = restTemplate.exchange("/api/queues/{1}/", HttpMethod.GET, new HttpEntity<>(null), QueueDto[].class, "/");
if (!response.getStatusCode().equals(HttpStatus.OK)) {
log.error("Failed to find queue, code is {}", response.getStatusCode());
......
package at.ac.tuwien.ifs.dbrepo.utils;
import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.UserCreateDto;
import at.ac.tuwien.ifs.dbrepo.config.KeycloakConfig;
import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.UserCreateDto;
import at.ac.tuwien.ifs.dbrepo.core.exception.UserNotFoundException;
import at.ac.tuwien.ifs.dbrepo.core.mapper.MetadataMapper;
import jakarta.ws.rs.core.Response;
......
# disable discovery
spring.cloud.discovery.enabled=false
# internal datasource
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS DBREPO;NON_KEYWORDS=value
spring.datasource.driverClassName=org.h2.Driver
......@@ -10,7 +9,6 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath*:init/schema.sql
spring.jpa.hibernate.ddl-auto=create
# logging
logging.level.root=error
logging.level.at.tuwien.=trace
......@@ -18,13 +16,11 @@ logging.level.org.testcontainers.=info
logging.level.tc.=info
logging.level.com.github.dockerjava.=warn
logging.level.com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.wire.=off
# datacite
dbrepo.datacite.url=https://api.test.datacite.org
dbrepo.datacite.prefix=10.12345
dbrepo.datacite.username=test-user
dbrepo.datacite.password=test-password
# s3
dbrepo.s3.accessKeyId=minioadmin
dbrepo.s3.secretAccessKey=minioadmin
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment