From 8976f8a4d7394d17ce4381ded2d24bb1728447ae Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 20 Nov 2022 12:00:56 +0100 Subject: [PATCH] Added Unit test --- .../src/test/java/at/tuwien/BaseUnitTest.java | 1 + .../service/ContainerServiceUnitTest.java | 72 +++++++++++++++++++ .../service/impl/ContainerServiceImpl.java | 2 +- .../container/image/ContainerImage.java | 1 + .../image/ContainerImageEnvironmentItem.java | 1 + 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java index bca4a20283..79202e1277 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java @@ -144,6 +144,7 @@ public abstract class BaseUnitTest { .driverClass(IMAGE_1_DRIVER) .compiled(IMAGE_1_BUILT) .size(IMAGE_1_SIZE) + .environment(IMAGE_1_ENV) .defaultPort(IMAGE_1_PORT) .build(); diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java new file mode 100644 index 0000000000..9a1ccac5d9 --- /dev/null +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java @@ -0,0 +1,72 @@ +package at.tuwien.service; + +import at.tuwien.BaseUnitTest; +import at.tuwien.api.container.ContainerCreateRequestDto; +import at.tuwien.config.ReadyConfig; +import at.tuwien.entities.container.Container; +import at.tuwien.exception.ContainerAlreadyExistsException; +import at.tuwien.exception.DockerClientException; +import at.tuwien.exception.ImageNotFoundException; +import at.tuwien.exception.UserNotFoundException; +import at.tuwien.repository.jpa.ContainerRepository; +import at.tuwien.repository.jpa.ImageRepository; +import at.tuwien.repository.jpa.UserRepository; +import lombok.extern.log4j.Log4j2; +import org.apache.http.auth.BasicUserPrincipal; +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.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.security.Principal; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +@Log4j2 +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +@SpringBootTest +@ExtendWith(SpringExtension.class) +public class ContainerServiceUnitTest extends BaseUnitTest { + + @MockBean + private ReadyConfig readyConfig; + + @Autowired + private ContainerRepository containerRepository; + + @Autowired + private ImageRepository imageRepository; + + @Autowired + private UserRepository userRepository; + + @Autowired + private ContainerService containerService; + + @BeforeEach + public void beforeEach() { + /* mock data */ + userRepository.save(USER_1); + imageRepository.save(IMAGE_1); + containerRepository.save(CONTAINER_1); + } + + @Test + public void create_nameExists_fails() { + final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() + .name(CONTAINER_1_NAME) + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) + .build(); + final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); + + /* test */ + assertThrows(ContainerAlreadyExistsException.class, () -> { + containerService.create(request, principal); + }); + } +} diff --git a/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index c5cbc523a9..eadb36f909 100644 --- a/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -110,7 +110,7 @@ public class ContainerServiceImpl implements ContainerService { .exec(); } catch (ConflictException e) { log.error("Conflicting names {}, reason: {}", createDto.getName(), e.getMessage()); - throw new ContainerAlreadyExistsException("Unexpected behavior", e); + throw new ContainerAlreadyExistsException("Conflicting names", e); } catch (NotFoundException e) { log.error("The image {}:{} not available on the container service", createDto.getRepository(), createDto.getTag()); diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java index 8704b32853..1be33c681f 100644 --- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java +++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java @@ -61,6 +61,7 @@ public class ContainerImage { @Column(nullable = false) private Integer defaultPort; + @ToString.Exclude @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "iid", insertable = false, updatable = false) private List<ContainerImageEnvironmentItem> environment; diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java index 208c2143cd..3b0df1ac6d 100644 --- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java +++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java @@ -46,6 +46,7 @@ public class ContainerImageEnvironmentItem { @Enumerated(EnumType.STRING) private ContainerImageEnvironmentItemType type; + @ToString.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumns({ -- GitLab