Skip to content
Snippets Groups Projects
Commit 0eae8d0e authored by Martin Weise's avatar Martin Weise
Browse files

made real integration test

Former-commit-id: 6f015bc1
parent f48bad67
No related branches found
No related tags found
1 merge request!42Fixed the query service tests
......@@ -3,6 +3,10 @@ package at.tuwien;
import at.tuwien.api.zenodo.deposit.*;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.api.zenodo.files.FileLinksDto;
import at.tuwien.entities.container.Container;
import at.tuwien.entities.container.image.ContainerImage;
import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
import at.tuwien.entities.container.image.ContainerImageEnvironmentItemType;
import at.tuwien.entities.database.Database;
import at.tuwien.entities.database.table.Table;
import org.apache.commons.lang.RandomStringUtils;
......@@ -12,12 +16,21 @@ import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.List;
import static java.time.temporal.ChronoUnit.HOURS;
@TestPropertySource(locations = "classpath:application.properties")
public abstract class BaseUnitTest {
public final static Long DATABASE_1_ID = 1L;
public final static String DATABASE_1_NAME = "Test Database";
public final static String DATABASE_1_INTERNAL_NAME = "test_dataase";
public final static String DATABASE_1_EXCHANGE = "fda." + DATABASE_1_INTERNAL_NAME;
public final static Boolean DATABASE_1_PUBLIC = true;
public final static Long TABLE_1_ID = 1L;
public final static String TABLE_1_NAME = "Rainfall";
public final static String TABLE_1_INTERNAL_NAME = "rainfall";
public final static String TABLE_1_TOPIC = DATABASE_1_EXCHANGE + "." + TABLE_1_INTERNAL_NAME;
public final static Long DEPOSIT_1_ID = 1L;
public final static String DEPOSIT_1_TITLE = "Super cool document";
......@@ -68,14 +81,78 @@ public abstract class BaseUnitTest {
public final static String DEPOSIT_1_DOI = "10.5072/zenodo.542201";
public final static Long DEPOSIT_1_REC_ID = 542201L;
public final static Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(DEPOSIT_1_ID)
public final static Long IMAGE_1_ID = 1L;
public final static String IMAGE_1_REPOSITORY = "postgres";
public final static String IMAGE_1_TAG = "13-alpine";
public final static String IMAGE_1_HASH = "83b40f2726e5";
public final static Integer IMAGE_1_PORT = 5432;
public final static String IMAGE_1_DIALECT = "org.hibernate.dialect.PostgreSQLDialect";
public final static String IMAGE_1_DRIVER = "org.postgresql.Driver";
public final static String IMAGE_1_JDBC = "postgresql";
public final static Long IMAGE_1_SIZE = 12000L;
public final static String IMAGE_1_LOGO = "AAAA";
public final static Instant IMAGE_1_BUILT = Instant.now().minus(40, HOURS);
public final static List<ContainerImageEnvironmentItem> IMAGE_1_ENV = List.of(ContainerImageEnvironmentItem.builder()
.key("POSTGRES_USER")
.value("postgres")
.type(ContainerImageEnvironmentItemType.USERNAME)
.build(),
ContainerImageEnvironmentItem.builder()
.key("POSTGRES_PASSWORD")
.value("postgres")
.type(ContainerImageEnvironmentItemType.PASSWORD)
.build());
public final static ContainerImage IMAGE_1 = ContainerImage.builder()
.id(IMAGE_1_ID)
.repository(IMAGE_1_REPOSITORY)
.tag(IMAGE_1_TAG)
.hash(IMAGE_1_HASH)
.jdbcMethod(IMAGE_1_JDBC)
.dialect(IMAGE_1_DIALECT)
.driverClass(IMAGE_1_DRIVER)
.containers(List.of())
.compiled(IMAGE_1_BUILT)
.size(IMAGE_1_SIZE)
.environment(IMAGE_1_ENV)
.defaultPort(IMAGE_1_PORT)
.logo(IMAGE_1_LOGO)
.build();
public final static Long CONTAINER_1_ID = 1L;
public final static String CONTAINER_1_HASH = "deadbeef";
public final static ContainerImage CONTAINER_1_IMAGE = IMAGE_1;
public final static String CONTAINER_1_NAME = "fda-userdb-u01";
public final static String CONTAINER_1_INTERNALNAME = "fda-userdb-u01";
public final static String CONTAINER_1_DATABASE = "univie";
public final static String CONTAINER_1_IP = "172.28.0.5";
public final static Instant CONTAINER_1_CREATED = Instant.now().minus(1, HOURS);
public final static Container CONTAINER_1 = Container.builder()
.id(CONTAINER_1_ID)
.name(CONTAINER_1_NAME)
.internalName(CONTAINER_1_INTERNALNAME)
.image(CONTAINER_1_IMAGE)
.hash(CONTAINER_1_HASH)
.containerCreated(CONTAINER_1_CREATED)
.build();
public final static Database DATABASE_1 = Database.builder()
.id(DATABASE_1_ID)
.tables(List.of(TABLE_1))
.name(DATABASE_1_NAME)
.isPublic(DATABASE_1_PUBLIC)
.internalName(DATABASE_1_INTERNAL_NAME)
.exchange(DATABASE_1_EXCHANGE)
.tables(List.of())
.build();
public final static Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.name(TABLE_1_NAME)
.internalName(TABLE_1_INTERNAL_NAME)
.topic(TABLE_1_TOPIC)
.tdbid(DATABASE_1_ID)
.depositId(DEPOSIT_1_ID)
.build();
public final static CreatorDto CREATOR_1 = CreatorDto.builder()
......
......@@ -5,11 +5,13 @@ import at.tuwien.api.zenodo.deposit.DepositChangeResponseDto;
import at.tuwien.api.zenodo.files.FileResponseDto;
import at.tuwien.api.zenodo.files.FileUploadDto;
import at.tuwien.config.ReadyConfig;
import at.tuwien.entities.database.Database;
import at.tuwien.entities.database.table.Table;
import at.tuwien.exception.*;
import at.tuwien.repository.jpa.ContainerRepository;
import at.tuwien.repository.jpa.DatabaseRepository;
import at.tuwien.repository.jpa.TableRepository;
import org.apache.commons.io.FileUtils;
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;
......@@ -17,36 +19,46 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.util.ResourceUtils;
import java.io.FileNotFoundException;
import javax.transaction.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;
@SpringBootTest
@ExtendWith(SpringExtension.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
public class FileServiceIntegrationTest extends BaseUnitTest {
@MockBean
private ReadyConfig readyConfig;
@MockBean
@Autowired
private TableRepository tableRepository;
@Autowired
private ContainerRepository containerRepository;
@Autowired
private DatabaseRepository databaseRepository;
@Autowired
private ZenodoFileService fileService;
@Autowired
private ZenodoMetadataService metadataService;
final Database DATABASE_1 = Database.builder()
.id(DATABASE_1_ID)
.build();
@BeforeEach
@Transactional
public void beforeEach() {
containerRepository.save(CONTAINER_1);
databaseRepository.save(DATABASE_1);
tableRepository.save(TABLE_1);
}
@Test
public void createResource_succeeds() throws IOException, ZenodoApiException, ZenodoNotFoundException,
......@@ -55,22 +67,12 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
final MockMultipartFile file = new MockMultipartFile("testdata.csv", FileUtils.readFileToByteArray(
ResourceUtils.getFile("classpath:csv/testdata.csv")));
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* request */
final DepositChangeResponseDto deposit = metadataService.storeCitation(DATABASE_1_ID, TABLE_1_ID);
final FileUploadDto request = FileUploadDto.builder()
.name(FILE_1_NAME)
.build();
/* mock */
final Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(deposit.getId())
.build();
/* test */
final FileResponseDto response = fileService.createResource(DATABASE_1_ID, TABLE_1_ID, request, file);
assertEquals(FILE_1_NAME, response.getFilename());
......@@ -86,22 +88,12 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
final MockMultipartFile file = new MockMultipartFile("weatherAUS.csv", FileUtils.readFileToByteArray(
ResourceUtils.getFile("classpath:csv/weatherAUS.csv")));
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* request */
final DepositChangeResponseDto deposit = metadataService.storeCitation(DATABASE_1_ID, TABLE_1_ID);
final FileUploadDto request = FileUploadDto.builder()
.name(FILE_2_NAME)
.build();
/* mock */
final Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(deposit.getId())
.build();
/* test */
final FileResponseDto response = fileService.createResource(DATABASE_1_ID, TABLE_1_ID, request, file);
assertEquals(FILE_2_NAME, response.getFilename());
......@@ -111,13 +103,6 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
@Test
public void listAll_notFound_fails() {
final Table TABLE_1 = Table.builder()
.id(-1L)
.build();
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* test */
assertThrows(ZenodoNotFoundException.class, () -> {
......@@ -132,25 +117,13 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
final MockMultipartFile file = new MockMultipartFile("testdata.csv", FileUtils.readFileToByteArray(
ResourceUtils.getFile("classpath:csv/testdata.csv")));
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* request */
final DepositChangeResponseDto deposit = metadataService.storeCitation(DATABASE_1_ID, TABLE_1_ID);
final FileUploadDto upload = FileUploadDto.builder()
.name(FILE_1_NAME)
.build();
final Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(deposit.getId())
.build();
final FileResponseDto fileResponse = fileService.createResource(DATABASE_1_ID, TABLE_1_ID, upload, file);
/* mock */
when(tableRepository.findById(TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* test */
final List<FileResponseDto> listResponse = fileService.listResources(DATABASE_1_ID, TABLE_1_ID);
assertEquals(1, listResponse.size());
......@@ -165,25 +138,13 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
final MockMultipartFile file = new MockMultipartFile("testdata.csv", FileUtils.readFileToByteArray(
ResourceUtils.getFile("classpath:csv/testdata.csv")));
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* request */
final DepositChangeResponseDto deposit = metadataService.storeCitation(DATABASE_1_ID, TABLE_1_ID);
final FileUploadDto upload = FileUploadDto.builder()
.name(FILE_1_NAME)
.build();
final Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(deposit.getId())
.build();
final FileResponseDto fileResponse = fileService.createResource(DATABASE_1_ID, TABLE_1_ID, upload, file);
/* mock */
when(tableRepository.findById(TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* test */
final FileResponseDto findResponse = fileService.findResource(DATABASE_1_ID, TABLE_1_ID, fileResponse.getId());
assertEquals(FILE_1_CHECKSUM, findResponse.getChecksum());
......@@ -197,25 +158,13 @@ public class FileServiceIntegrationTest extends BaseUnitTest {
final MockMultipartFile file = new MockMultipartFile("testdata.csv", FileUtils.readFileToByteArray(
ResourceUtils.getFile("classpath:csv/testdata.csv")));
/* mock */
when(tableRepository.findByDatabaseAndId(DATABASE_1, TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* request */
final DepositChangeResponseDto deposit = metadataService.storeCitation(DATABASE_1_ID, TABLE_1_ID);
final FileUploadDto upload = FileUploadDto.builder()
.name(FILE_1_NAME)
.build();
final Table TABLE_1 = Table.builder()
.id(TABLE_1_ID)
.depositId(deposit.getId())
.build();
final FileResponseDto fileResponse = fileService.createResource(DATABASE_1_ID, TABLE_1_ID, upload, file);
/* mock */
when(tableRepository.findById(TABLE_1_ID))
.thenReturn(Optional.of(TABLE_1));
/* test */
fileService.deleteResource(DATABASE_1_ID, TABLE_1_ID, fileResponse.getId());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment