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 a55126704a58056dc58df17de66cce64855ff8df..26f526ffa4c9fa239de2909f0d12d954dab0ee33 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 @@ -86,6 +86,68 @@ public abstract class BaseUnitTest { .roles(List.of()) .build(); + public final static Long IMAGE_1_ID = 1L; + public final static String IMAGE_1_REPOSITORY = "mariadb"; + public final static String IMAGE_1_TAG = "10.5"; + 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.MariaDBDialect"; + public final static String IMAGE_1_DRIVER = "org.mariadb.jdbc.Driver"; + public final static String IMAGE_1_JDBC = "mariadb"; + public final static Long IMAGE_1_SIZE = 12000L; + public final static Instant IMAGE_1_BUILT = Instant.now().minus(40, HOURS); + public final static List<ContainerImageEnvironmentItem> IMAGE_1_ENV = List.of(ContainerImageEnvironmentItem.builder() + .iid(IMAGE_1_ID) + .key("MARIADB_USER") + .value("mariadb") + .type(ContainerImageEnvironmentItemType.USERNAME) + .build(), + ContainerImageEnvironmentItem.builder() + .iid(IMAGE_1_ID) + .key("MARIADB_PASSWORD") + .value("mariadb") + .type(ContainerImageEnvironmentItemType.PASSWORD) + .build(), + ContainerImageEnvironmentItem.builder() + .iid(IMAGE_1_ID) + .key("MARIADB_ROOT_PASSWORD") + .value("mariadb") + .type(ContainerImageEnvironmentItemType.PRIVILEGED_PASSWORD) + .build(), + ContainerImageEnvironmentItem.builder() + .iid(IMAGE_1_ID) + .key("UZERNAME") + .value("root") + .type(ContainerImageEnvironmentItemType.PRIVILEGED_USERNAME) + .build()); + + public final static List<ImageEnvItemDto> IMAGE_1_ENV_DTO = List.of(ImageEnvItemDto.builder() + .iid(IMAGE_1_ID) + .key("MARIADB_USER") + .value("mariadb") + .type(ImageEnvItemTypeDto.USERNAME) + .build(), + ImageEnvItemDto.builder() + .iid(IMAGE_1_ID) + .key("MARIADB_PASSWORD") + .value("mariadb") + .type(ImageEnvItemTypeDto.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) + .compiled(IMAGE_1_BUILT) + .size(IMAGE_1_SIZE) + .environment(IMAGE_1_ENV) + .defaultPort(IMAGE_1_PORT) + .build(); + public final static Long IMAGE_2_ID = 2L; public final static String IMAGE_2_REPOSITORY = "mariadb"; public final static String IMAGE_2_TAG = "10.5"; @@ -95,7 +157,7 @@ public abstract class BaseUnitTest { public final static String IMAGE_2_DRIVER = "org.mariadb.jdbc.Driver"; public final static String IMAGE_2_JDBC = "mariadb"; public final static Long IMAGE_2_SIZE = 12000L; - public final static Instant IMAGE_2_BUILT = Instant.now().minus(40, HOURS); + public final static Instant IMAGE_2_BUILT = Instant.now().minus(38, HOURS); public final static List<ContainerImageEnvironmentItem> IMAGE_2_ENV = List.of(ContainerImageEnvironmentItem.builder() .iid(IMAGE_2_ID) @@ -123,13 +185,13 @@ public abstract class BaseUnitTest { .build()); public final static List<ImageEnvItemDto> IMAGE_2_ENV_DTO = List.of(ImageEnvItemDto.builder() - .iid(IMAGE_2_ID) + .iid(IMAGE_1_ID) .key("MARIADB_USER") .value("mariadb") .type(ImageEnvItemTypeDto.USERNAME) .build(), ImageEnvItemDto.builder() - .iid(IMAGE_2_ID) + .iid(IMAGE_1_ID) .key("MARIADB_PASSWORD") .value("mariadb") .type(ImageEnvItemTypeDto.PASSWORD) @@ -161,7 +223,7 @@ public abstract class BaseUnitTest { .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) - .image(IMAGE_2) + .image(IMAGE_1) .hash(CONTAINER_1_HASH) .ipAddress(CONTAINER_1_IP) .created(CONTAINER_1_CREATED) @@ -179,7 +241,7 @@ public abstract class BaseUnitTest { .id(CONTAINER_2_ID) .name(CONTAINER_2_NAME) .internalName(CONTAINER_2_INTERNALNAME) - .image(IMAGE_2) + .image(IMAGE_1) .hash(CONTAINER_2_HASH) .ipAddress(CONTAINER_2_IP) .created(CONTAINER_2_CREATED) @@ -197,7 +259,7 @@ public abstract class BaseUnitTest { .id(CONTAINER_3_ID) .name(CONTAINER_3_NAME) .internalName(CONTAINER_3_INTERNALNAME) - .image(IMAGE_2) + .image(IMAGE_1) .hash(CONTAINER_3_HASH) .ipAddress(CONTAINER_3_IP) .created(CONTAINER_3_CREATED) diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index 77cc63eaa49b93de451a50b9f5578d5449a35013..1c1f89acbf0ad64f7a2fa12f5a36fd1f8c7c079d 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -79,7 +79,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { /* mock data */ userRepository.save(USER_1); - imageRepository.save(IMAGE_2); + imageRepository.save(IMAGE_1); } @AfterEach @@ -114,8 +114,8 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { throws DockerClientException, ImageNotFoundException, ContainerAlreadyExistsException, UserNotFoundException { final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() - .repository(IMAGE_2_REPOSITORY) - .tag(IMAGE_2_TAG) + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) .name(CONTAINER_1_NAME) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); 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 index 15b25f9061a4f3e3e8fc4377409dbea5608d5fa9..7494a4f2e08866b1b696512febc36a9f7fe1a018 100644 --- 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 @@ -47,6 +47,7 @@ public class ContainerServiceUnitTest extends BaseUnitTest { public void beforeEach() { /* mock data */ userRepository.save(USER_1); + imageRepository.save(IMAGE_1); imageRepository.save(IMAGE_2); containerRepository.save(CONTAINER_1); } @@ -55,8 +56,8 @@ public class ContainerServiceUnitTest extends BaseUnitTest { public void create_nameExists_fails() { final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() .name(CONTAINER_1_NAME) - .repository(IMAGE_2_REPOSITORY) - .tag(IMAGE_2_TAG) + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java index 0cef37349458d9bb41f92b388fccc38d15d02b79..2f98337c1feccba36706c41b89b2a3e062d1a1b9 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java @@ -3,6 +3,7 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.container.image.ImageCreateDto; import at.tuwien.config.ReadyConfig; +import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.*; import at.tuwien.repository.jpa.ContainerRepository; import at.tuwien.repository.jpa.ImageRepository; @@ -47,6 +48,7 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { userRepository.save(USER_1); + imageRepository.save(IMAGE_1); imageRepository.save(IMAGE_2); } @@ -60,7 +62,7 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { .driverClass(IMAGE_2_DRIVER) .jdbcMethod(IMAGE_2_JDBC) .defaultPort(IMAGE_2_PORT) - .environment(IMAGE_2_ENV_DTO) + .environment(IMAGE_1_ENV_DTO) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); @@ -82,11 +84,11 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { final ImageCreateDto request = ImageCreateDto.builder() .repository("s0m3th1ng_n0t3x1st1ng") .tag("d3v_h3ll") - .dialect(IMAGE_2_DIALECT) - .driverClass(IMAGE_2_DRIVER) - .jdbcMethod(IMAGE_2_JDBC) - .defaultPort(IMAGE_2_PORT) - .environment(IMAGE_2_ENV_DTO) + .dialect(IMAGE_1_DIALECT) + .driverClass(IMAGE_1_DRIVER) + .jdbcMethod(IMAGE_1_JDBC) + .defaultPort(IMAGE_1_PORT) + .environment(IMAGE_1_ENV_DTO) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); @@ -99,13 +101,13 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { @Test public void create_duplicate_fails() { final ImageCreateDto request = ImageCreateDto.builder() - .repository(IMAGE_2_REPOSITORY) - .tag(IMAGE_2_TAG) - .defaultPort(IMAGE_2_PORT) - .driverClass(IMAGE_2_DRIVER) - .jdbcMethod(IMAGE_2_JDBC) - .dialect(IMAGE_2_DIALECT) - .environment(IMAGE_2_ENV_DTO) + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) + .defaultPort(IMAGE_1_PORT) + .driverClass(IMAGE_1_DRIVER) + .jdbcMethod(IMAGE_1_JDBC) + .dialect(IMAGE_1_DIALECT) + .environment(IMAGE_1_ENV_DTO) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); @@ -119,18 +121,18 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { public void delete_hasNoContainer_succeeds() throws ImageNotFoundException, PersistenceException { /* test */ - imageService.delete(IMAGE_2_ID); - assertTrue(imageRepository.findById(IMAGE_2_ID).isEmpty()); + imageService.delete(IMAGE_1_ID); + assertTrue(imageRepository.findById(IMAGE_1_ID).isEmpty()); assertFalse(containerRepository.findById(CONTAINER_1_ID).isPresent()); /* container should NEVER be deletable in the metadata db */ } @Test public void delete_noContainer_succeeds() throws ImageNotFoundException, PersistenceException { - imageRepository.save(IMAGE_2); + imageRepository.save(IMAGE_1); /* test */ - imageService.delete(IMAGE_2_ID); - assertTrue(imageRepository.findById(IMAGE_2_ID).isEmpty()); + imageService.delete(IMAGE_1_ID); + assertTrue(imageRepository.findById(IMAGE_1_ID).isEmpty()); } } diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java index 77654bacbeff74482dcc43326235390243958c54..2d8be88ad788e185db64c6e91ccfd7ad31f83b38 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java @@ -44,48 +44,48 @@ public class ImageServiceUnitTest extends BaseUnitTest { /* mock */ when(imageRepository.findAll()) - .thenReturn(List.of(IMAGE_2)); + .thenReturn(List.of(IMAGE_1)); /* test */ final List<ContainerImage> response = imageService.getAll(); assertEquals(1, response.size()); - assertEquals(IMAGE_2_REPOSITORY, response.get(0).getRepository()); - assertEquals(IMAGE_2_TAG, response.get(0).getTag()); + assertEquals(IMAGE_1_REPOSITORY, response.get(0).getRepository()); + assertEquals(IMAGE_1_TAG, response.get(0).getTag()); } @Test public void getById_succeeds() throws ImageNotFoundException { /* mock */ - when(imageRepository.findById(IMAGE_2_ID)) - .thenReturn(Optional.of(IMAGE_2)); + when(imageRepository.findById(IMAGE_1_ID)) + .thenReturn(Optional.of(IMAGE_1)); /* test */ - final ContainerImage response = imageService.find(IMAGE_2_ID); - assertEquals(IMAGE_2_REPOSITORY, response.getRepository()); - assertEquals(IMAGE_2_TAG, response.getTag()); + final ContainerImage response = imageService.find(IMAGE_1_ID); + assertEquals(IMAGE_1_REPOSITORY, response.getRepository()); + assertEquals(IMAGE_1_TAG, response.getTag()); } @Test public void getById_notFound_fails() { /* mock */ - when(imageRepository.findById(IMAGE_2_ID)) + when(imageRepository.findById(IMAGE_1_ID)) .thenReturn(Optional.empty()); /* test */ assertThrows(ImageNotFoundException.class, () -> { - imageService.find(IMAGE_2_ID); + imageService.find(IMAGE_1_ID); }); } @Test public void create_duplicate_fails() { final ImageCreateDto request = ImageCreateDto.builder() - .repository(IMAGE_2_REPOSITORY) - .tag(IMAGE_2_TAG) - .defaultPort(IMAGE_2_PORT) - .environment(IMAGE_2_ENV_DTO) + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) + .defaultPort(IMAGE_1_PORT) + .environment(IMAGE_1_ENV_DTO) .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); @@ -102,55 +102,55 @@ public class ImageServiceUnitTest extends BaseUnitTest { @Test public void update_succeeds() throws ImageNotFoundException, DockerClientException { final ImageChangeDto request = ImageChangeDto.builder() - .environment(IMAGE_2_ENV_DTO) - .defaultPort(IMAGE_2_PORT) + .environment(IMAGE_1_ENV_DTO) + .defaultPort(IMAGE_1_PORT) .build(); /* mock */ - when(imageRepository.findById(IMAGE_2_ID)) - .thenReturn(Optional.of(IMAGE_2)); + when(imageRepository.findById(IMAGE_1_ID)) + .thenReturn(Optional.of(IMAGE_1)); when(imageRepository.save(any())) - .thenReturn(IMAGE_2); + .thenReturn(IMAGE_1); /* test */ - final ContainerImage response = imageService.update(IMAGE_2_ID, request); - assertEquals(IMAGE_2_REPOSITORY, response.getRepository()); - assertEquals(IMAGE_2_TAG, response.getTag()); + final ContainerImage response = imageService.update(IMAGE_1_ID, request); + assertEquals(IMAGE_1_REPOSITORY, response.getRepository()); + assertEquals(IMAGE_1_TAG, response.getTag()); } @Test public void update_port_succeeds() throws ImageNotFoundException, DockerClientException { final ImageChangeDto request = ImageChangeDto.builder() - .environment(IMAGE_2_ENV_DTO) + .environment(IMAGE_1_ENV_DTO) .defaultPort(9999) .build(); /* mock */ - when(imageRepository.findById(IMAGE_2_ID)) - .thenReturn(Optional.of(IMAGE_2)); + when(imageRepository.findById(IMAGE_1_ID)) + .thenReturn(Optional.of(IMAGE_1)); when(imageRepository.save(any())) - .thenReturn(IMAGE_2); + .thenReturn(IMAGE_1); /* test */ - final ContainerImage response = imageService.update(IMAGE_2_ID, request); - assertEquals(IMAGE_2_REPOSITORY, response.getRepository()); - assertEquals(IMAGE_2_TAG, response.getTag()); + final ContainerImage response = imageService.update(IMAGE_1_ID, request); + assertEquals(IMAGE_1_REPOSITORY, response.getRepository()); + assertEquals(IMAGE_1_TAG, response.getTag()); } @Test public void update_notFound_fails() { final ImageChangeDto request = ImageChangeDto.builder() - .environment(IMAGE_2_ENV_DTO) - .defaultPort(IMAGE_2_PORT) + .environment(IMAGE_1_ENV_DTO) + .defaultPort(IMAGE_1_PORT) .build(); /* mock */ - when(imageRepository.findById(IMAGE_2_ID)) + when(imageRepository.findById(IMAGE_1_ID)) .thenReturn(Optional.empty()); /* test */ assertThrows(ImageNotFoundException.class, () -> { - imageService.update(IMAGE_2_ID, request); + imageService.update(IMAGE_1_ID, request); }); } @@ -160,10 +160,10 @@ public class ImageServiceUnitTest extends BaseUnitTest { /* mock */ doNothing() .when(imageRepository) - .deleteById(IMAGE_2_ID); + .deleteById(IMAGE_1_ID); /* test */ - imageService.delete(IMAGE_2_ID); + imageService.delete(IMAGE_1_ID); } @Test @@ -172,11 +172,11 @@ public class ImageServiceUnitTest extends BaseUnitTest { /* mock */ doThrow(EntityNotFoundException.class) .when(imageRepository) - .deleteById(IMAGE_2_ID); + .deleteById(IMAGE_1_ID); /* test */ assertThrows(ImageNotFoundException.class, () -> { - imageService.delete(IMAGE_2_ID); + imageService.delete(IMAGE_1_ID); }); } @@ -184,7 +184,7 @@ public class ImageServiceUnitTest extends BaseUnitTest { public void toString_omitSecrets_succeeds() { /* test */ - final String response = IMAGE_2.toString(); + final String response = IMAGE_1.toString(); assertFalse(response.contains("MARIADB_PASSWORD")); assertFalse(response.contains("MARIADB_ROOT_PASSWORD")); } diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/Old.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/Old.java index 2e796f2791f8b3188374ba42ba75b79342bbdef6..3a54d15686933aa2746930f4fbab6b7c176d802a 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/Old.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/Old.java @@ -80,7 +80,7 @@ public class Old extends BaseUnitTest { /* mock data */ userRepository.save(USER_1); - imageRepository.save(IMAGE_2); + imageRepository.save(IMAGE_1); } @AfterEach @@ -111,302 +111,302 @@ public class Old extends BaseUnitTest { } -// public void create_succeeds() -// throws DockerClientException, ImageNotFoundException, ContainerAlreadyExistsException, -// UserNotFoundException { -// final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() -// .repository(IMAGE_1_REPOSITORY) -// .tag(IMAGE_1_TAG) -// .name(CONTAINER_1_NAME) -// .build(); -// final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); -// -// /* mock */ -// when(containerRepository.findByInternalName(CONTAINER_1_INTERNALNAME)) -// .thenReturn(Optional.empty()); -// when(containerRepository.save(any(Container.class))) -// .thenReturn(CONTAINER_1); -// -// /* test */ -// final Container container = containerService.create(request, principal); -// assertEquals(CONTAINER_1_NAME, container.getName()); -// assertEquals(1, userRepository.findAll().size()); -// } -// -// -// public void create_conflictingNames_fails() { -// final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() -// .repository(IMAGE_1_REPOSITORY) -// .tag(IMAGE_1_TAG) -// .name(CONTAINER_1_NAME) -// .build(); -// final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); -// -// /* mock */ -// when(containerRepository.findByInternalName(CONTAINER_1_INTERNALNAME)) -// .thenReturn(Optional.of(CONTAINER_1)); -// -// /* test */ -// assertThrows(ContainerAlreadyExistsException.class, () -> { -// containerService.create(request, principal); -// }); -// } -// -// -// public void remove_alreadyRemoved_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.empty()); -// -// /* test */ -// assertThrows(ContainerNotFoundException.class, () -> { -// containerService.remove(CONTAINER_1_ID); -// }); -// } -// -// -// public void create_notFound_fails() { -// final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() -// .repository(IMAGE_2_REPOSITORY) -// .tag(IMAGE_2_TAG) -// .name(CONTAINER_3_NAME) -// .build(); -// final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); -// -// /* mock */ -// -// /* test */ -// assertThrows(ImageNotFoundException.class, () -> { -// containerService.create(request, principal); -// }); -// } -// -// -// -// public void findById_notFound_fails() { -// -// /* mock */ -// -// /* test */ -// assertThrows(ContainerNotFoundException.class, () -> { -// containerService.find(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_start_succeeds() throws DockerClientException, ContainerNotFoundException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// -// /* test */ -// containerService.start(CONTAINER_1_ID); -// } -// -// -// public void change_stop_succeeds() throws DockerClientException, InterruptedException, ContainerNotFoundException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.startContainer(CONTAINER_1); -// -// /* test */ -// containerService.stop(CONTAINER_1_ID); -// } -// -// -// public void change_startSavedButNotFound_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.start(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_removeSavedButNotFound_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.remove(CONTAINER_1_ID); -// }); -// } -// -// -// public void getAll_succeeds() { -// -// /* mock */ -// when(containerRepository.findAll()) -// .thenReturn(List.of(CONTAINER_1, CONTAINER_2)); -// -// /* test */ -// final List<Container> response = containerService.getAll(); -// assertEquals(2, response.size()); -// } -// -// -// public void remove_succeeds() throws DockerClientException, ContainerStillRunningException, ContainerNotFoundException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.stopContainer(CONTAINER_1); -// -// /* test */ -// containerService.remove(CONTAINER_1_ID); -// } -// -// -// public void remove_notFound_fails() { -// -// /* test */ -// assertThrows(ContainerNotFoundException.class, () -> { -// containerService.remove(CONTAINER_1_ID); -// }); -// } -// -// -// public void remove_stillRunning_fails() throws InterruptedException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.startContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(ContainerStillRunningException.class, () -> { -// containerService.remove(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_alreadyRunning_fails() throws InterruptedException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.startContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.start(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_startNotFound_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.empty()); -// dockerUtil.createContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(ContainerNotFoundException.class, () -> { -// containerService.start(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_alreadyStopped_fails() throws InterruptedException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.startContainer(CONTAINER_1); -// dockerUtil.stopContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.stop(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_stopNeverStarted_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.stop(CONTAINER_1_ID); -// }); -// } -// -// -// public void change_stopSavedButNotFound_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// -// /* test */ -// assertThrows(DockerClientException.class, () -> { -// containerService.stop(CONTAINER_1_ID); -// }); -// } -// -// -// public void inspect_succeeds() throws InterruptedException, DockerClientException, ContainerNotFoundException, -// ContainerNotRunningException { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// dockerUtil.startContainer(CONTAINER_1); -// -// /* test */ -// final Container response = containerService.inspect(CONTAINER_1_ID); -// assertEquals(CONTAINER_1_ID, response.getId()); -// assertEquals(CONTAINER_1_NAME, response.getName()); -// assertEquals(CONTAINER_1_INTERNALNAME, response.getInternalName()); -// assertEquals(CONTAINER_1_IP, response.getIpAddress()); -// } -// -// -// public void inspect_notFound_fails() { -// -// /* mock */ -// -// /* test */ -// assertThrows(ContainerNotFoundException.class, () -> { -// containerService.inspect(CONTAINER_2_ID); -// }); -// } -// -// -// public void inspect_notRunning_fails() { -// -// /* mock */ -// when(containerRepository.findById(CONTAINER_1_ID)) -// .thenReturn(Optional.of(CONTAINER_1)); -// dockerUtil.createContainer(CONTAINER_1); -// -// /* test */ -// assertThrows(ContainerNotRunningException.class, () -> { -// containerService.inspect(CONTAINER_1_ID); -// }); -// } + public void create_succeeds() + throws DockerClientException, ImageNotFoundException, ContainerAlreadyExistsException, + UserNotFoundException { + final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) + .name(CONTAINER_1_NAME) + .build(); + final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); + + /* mock */ + when(containerRepository.findByInternalName(CONTAINER_1_INTERNALNAME)) + .thenReturn(Optional.empty()); + when(containerRepository.save(any(Container.class))) + .thenReturn(CONTAINER_1); + + /* test */ + final Container container = containerService.create(request, principal); + assertEquals(CONTAINER_1_NAME, container.getName()); + assertEquals(1, userRepository.findAll().size()); + } + + + public void create_conflictingNames_fails() { + final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() + .repository(IMAGE_1_REPOSITORY) + .tag(IMAGE_1_TAG) + .name(CONTAINER_1_NAME) + .build(); + final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); + + /* mock */ + when(containerRepository.findByInternalName(CONTAINER_1_INTERNALNAME)) + .thenReturn(Optional.of(CONTAINER_1)); + + /* test */ + assertThrows(ContainerAlreadyExistsException.class, () -> { + containerService.create(request, principal); + }); + } + + + public void remove_alreadyRemoved_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.empty()); + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.remove(CONTAINER_1_ID); + }); + } + + + public void create_notFound_fails() { + final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() + .repository(IMAGE_2_REPOSITORY) + .tag(IMAGE_2_TAG) + .name(CONTAINER_3_NAME) + .build(); + final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); + + /* mock */ + + /* test */ + assertThrows(ImageNotFoundException.class, () -> { + containerService.create(request, principal); + }); + } + + + + public void findById_notFound_fails() { + + /* mock */ + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.find(CONTAINER_1_ID); + }); + } + + + public void change_start_succeeds() throws DockerClientException, ContainerNotFoundException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + + /* test */ + containerService.start(CONTAINER_1_ID); + } + + + public void change_stop_succeeds() throws DockerClientException, InterruptedException, ContainerNotFoundException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.startContainer(CONTAINER_1); + + /* test */ + containerService.stop(CONTAINER_1_ID); + } + + + public void change_startSavedButNotFound_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.start(CONTAINER_1_ID); + }); + } + + + public void change_removeSavedButNotFound_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.remove(CONTAINER_1_ID); + }); + } + + + public void getAll_succeeds() { + + /* mock */ + when(containerRepository.findAll()) + .thenReturn(List.of(CONTAINER_1, CONTAINER_2)); + + /* test */ + final List<Container> response = containerService.getAll(); + assertEquals(2, response.size()); + } + + + public void remove_succeeds() throws DockerClientException, ContainerStillRunningException, ContainerNotFoundException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.stopContainer(CONTAINER_1); + + /* test */ + containerService.remove(CONTAINER_1_ID); + } + + + public void remove_notFound_fails() { + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.remove(CONTAINER_1_ID); + }); + } + + + public void remove_stillRunning_fails() throws InterruptedException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.startContainer(CONTAINER_1); + + /* test */ + assertThrows(ContainerStillRunningException.class, () -> { + containerService.remove(CONTAINER_1_ID); + }); + } + + + public void change_alreadyRunning_fails() throws InterruptedException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.startContainer(CONTAINER_1); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.start(CONTAINER_1_ID); + }); + } + + + public void change_startNotFound_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.empty()); + dockerUtil.createContainer(CONTAINER_1); + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.start(CONTAINER_1_ID); + }); + } + + + public void change_alreadyStopped_fails() throws InterruptedException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.startContainer(CONTAINER_1); + dockerUtil.stopContainer(CONTAINER_1); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.stop(CONTAINER_1_ID); + }); + } + + + public void change_stopNeverStarted_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.stop(CONTAINER_1_ID); + }); + } + + + public void change_stopSavedButNotFound_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.stop(CONTAINER_1_ID); + }); + } + + + public void inspect_succeeds() throws InterruptedException, DockerClientException, ContainerNotFoundException, + ContainerNotRunningException { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + dockerUtil.startContainer(CONTAINER_1); + + /* test */ + final Container response = containerService.inspect(CONTAINER_1_ID); + assertEquals(CONTAINER_1_ID, response.getId()); + assertEquals(CONTAINER_1_NAME, response.getName()); + assertEquals(CONTAINER_1_INTERNALNAME, response.getInternalName()); + assertEquals(CONTAINER_1_IP, response.getIpAddress()); + } + + + public void inspect_notFound_fails() { + + /* mock */ + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.inspect(CONTAINER_2_ID); + }); + } + + + public void inspect_notRunning_fails() { + + /* mock */ + when(containerRepository.findById(CONTAINER_1_ID)) + .thenReturn(Optional.of(CONTAINER_1)); + dockerUtil.createContainer(CONTAINER_1); + + /* test */ + assertThrows(ContainerNotRunningException.class, () -> { + containerService.inspect(CONTAINER_1_ID); + }); + } }