diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/config/SecurityConfig.java b/fda-container-service/rest-service/src/test/java/at/tuwien/config/SecurityConfig.java deleted file mode 100644 index 532304a61b1b0ea7a4d5544d0a65240b904eaaf4..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/config/SecurityConfig.java +++ /dev/null @@ -1,39 +0,0 @@ -package at.tuwien.config; - -import at.tuwien.BaseUnitTest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.security.provisioning.InMemoryUserDetailsManager; - -import java.util.List; - -@Configuration -public class SecurityConfig extends BaseUnitTest { - - @Autowired - private PasswordEncoder passwordEncoder; - - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } - - @Bean - public UserDetailsService userDetailsService() { - return new InMemoryUserDetailsManager(List.of( - new User(USER_1_USERNAME, passwordEncoder.encode(USER_1_PASSWORD), List.of(USER_1_AUTHORITY)), - new User(USER_2_USERNAME, passwordEncoder.encode(USER_2_PASSWORD), List.of(USER_2_AUTHORITY)), - new User(USER_3_USERNAME, passwordEncoder.encode(USER_3_PASSWORD), List.of(USER_3_AUTHORITY)), - new User(USER_4_USERNAME, passwordEncoder.encode(USER_4_PASSWORD), List.of()) - )); - } - -} diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java deleted file mode 100644 index eb17402c9dfb9a672d1a3b0404ea4a6deb17bff3..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java +++ /dev/null @@ -1,188 +0,0 @@ -package at.tuwien.endpoint; - -import at.tuwien.BaseUnitTest; -import at.tuwien.api.container.*; -import at.tuwien.config.ReadyConfig; -import at.tuwien.endpoints.ContainerEndpoint; -import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.repository.jpa.UserRepository; -import at.tuwien.service.impl.ContainerServiceImpl; -import org.apache.http.auth.BasicUserPrincipal; -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.security.access.AccessDeniedException; -import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.security.Principal; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; - -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class ContainerEndpointUnitTest extends BaseUnitTest { - - @MockBean - private ReadyConfig readyConfig; - - @MockBean - private ImageRepository imageRepository; - - @MockBean - private UserRepository userRepository; - - @Autowired - private ContainerEndpoint containerEndpoint; - - @Autowired - private ContainerServiceImpl containerService; - - @Test - public void create_noAuth_fails() { - final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() - .name(CONTAINER_1_NAME) - .repository(IMAGE_1_REPOSITORY) - .tag(IMAGE_1_TAG) - .build(); - - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.of(IMAGE_1)); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); - - /* test */ - assertThrows(AuthenticationCredentialsNotFoundException.class, () -> { - containerEndpoint.create(request, null); - }); - } - - @Test - @WithUserDetails(USER_4_USERNAME) - public void create_notRole_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_4_USERNAME); - - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.of(IMAGE_1)); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); - - /* test */ - assertThrows(AccessDeniedException.class, () -> { - containerEndpoint.create(request, principal); - }); - } - - @Test - @WithUserDetails(USER_2_USERNAME) - public void create_notResearcher_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_2_USERNAME); - - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.of(IMAGE_1)); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); - - /* test */ - assertThrows(AccessDeniedException.class, () -> { - containerEndpoint.create(request, principal); - }); - } - - @Test - @WithUserDetails(USER_3_USERNAME) - public void create_notResearcher2_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_3_USERNAME); - - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.of(IMAGE_1)); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); - - /* test */ - assertThrows(AccessDeniedException.class, () -> { - containerEndpoint.create(request, principal); - }); - } - - @Test - @WithUserDetails(USER_1_USERNAME) - public void create_noImage_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); - - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.empty()); - - assertThrows(ImageNotFoundException.class, () -> { - containerEndpoint.create(request, principal); - }); - } - - @Test - public void findAll_noAuth_fails() { - /* mock */ - when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG)) - .thenReturn(Optional.empty()); - - containerEndpoint.findAll(null); - } - - @Test - @WithUserDetails(USER_4_USERNAME) - public void findAll_noRole_succeeds() { - final Principal principal = new BasicUserPrincipal(USER_4_USERNAME); - - containerEndpoint.findAll(principal); - } - - @Test - @WithUserDetails(USER_1_USERNAME) - public void delete_notDeveloper_fails() { - - /* test */ - assertThrows(AccessDeniedException.class, () -> { - containerEndpoint.delete(CONTAINER_1_ID); - }); - } - - @Test - @WithUserDetails(USER_1_USERNAME) - public void delete_noRoles_fails() { - - /* test */ - assertThrows(AccessDeniedException.class, () -> { - containerEndpoint.delete(CONTAINER_1_ID); - }); - } -} diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java deleted file mode 100644 index a493798a86c5d0b237ece8732324af3347569b1a..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java +++ /dev/null @@ -1,214 +0,0 @@ -package at.tuwien.endpoint; - -import at.tuwien.BaseUnitTest; -import at.tuwien.api.container.image.ImageBriefDto; -import at.tuwien.api.container.image.ImageChangeDto; -import at.tuwien.api.container.image.ImageCreateDto; -import at.tuwien.api.container.image.ImageDto; -import at.tuwien.config.ReadyConfig; -import at.tuwien.endpoints.ImageEndpoint; -import at.tuwien.exception.*; -import at.tuwien.service.impl.ImageServiceImpl; -import org.apache.http.auth.BasicUserPrincipal; -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.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.security.Principal; -import java.util.List; -import java.util.Objects; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.*; - -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class ImageEndpointUnitTest extends BaseUnitTest { - - @MockBean - private ReadyConfig readyConfig; - - @MockBean - private ImageServiceImpl imageService; - - @Autowired - private ImageEndpoint imageEndpoint; - - @Test - public void findAll_succeeds() { - when(imageService.getAll()) - .thenReturn(List.of(IMAGE_1)); - - /* test */ - final ResponseEntity<List<ImageBriefDto>> response = imageEndpoint.findAll(); - assertEquals(HttpStatus.OK, response.getStatusCode()); - assertEquals(1, Objects.requireNonNull(response.getBody()).size()); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void create_succeeds() - throws ImageNotFoundException, DockerClientException, ImageAlreadyExistsException, UserNotFoundException { - final ImageCreateDto request = ImageCreateDto.builder() - .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); - - /* mock */ - when(imageService.create(request, principal)) - .thenReturn(IMAGE_1); - - /* test */ - final ResponseEntity<ImageDto> response = imageEndpoint.create(request, principal); - assertEquals(HttpStatus.CREATED, response.getStatusCode()); - assertEquals(IMAGE_1_REPOSITORY, Objects.requireNonNull(response.getBody()).getRepository()); - assertEquals(IMAGE_1_TAG, Objects.requireNonNull(response.getBody()).getTag()); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void create_duplicate_fails() - throws ImageNotFoundException, DockerClientException, ImageAlreadyExistsException, UserNotFoundException { - final ImageCreateDto request = ImageCreateDto.builder() - .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); - - /* mock */ - given(imageService.create(request, principal)) - .willAnswer(invocation -> { - throw new ImageAlreadyExistsException("duplicate"); - }); - - /* test */ - assertThrows(ImageAlreadyExistsException.class, () -> { - imageEndpoint.create(request, principal); - }); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void create_notExists_fails() - throws ImageNotFoundException, DockerClientException, ImageAlreadyExistsException, UserNotFoundException { - final ImageCreateDto request = ImageCreateDto.builder() - .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); - - /* mock */ - given(imageService.create(request, principal)) - .willAnswer(invocation -> { - throw new ImageNotFoundException("not existing in docker hub"); - }); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageEndpoint.create(request, principal); - }); - } - - @Test - public void findById_succeeds() throws ImageNotFoundException { - - /* mock */ - when(imageService.find(IMAGE_1_ID)) - .thenReturn(IMAGE_1); - - /* test */ - final ResponseEntity<ImageDto> response = imageEndpoint.findById(IMAGE_1_ID); - assertEquals(HttpStatus.OK, response.getStatusCode()); - } - - @Test - public void findById_notFound_fails() throws ImageNotFoundException { - - /* mock */ - given(imageService.find(IMAGE_1_ID)) - .willAnswer(invocation -> { - throw new ImageNotFoundException("not existing in docker hub"); - }); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageEndpoint.findById(IMAGE_1_ID); - }); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void delete_success() throws ImageNotFoundException, PersistenceException { - - /* mock */ - doNothing() - .when(imageService) - .delete(IMAGE_1_ID); - - /* test */ - final ResponseEntity<?> response = imageEndpoint.delete(IMAGE_1_ID); - assertEquals(HttpStatus.OK, response.getStatusCode()); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void delete_fails() throws ImageNotFoundException, PersistenceException { - - /* mock */ - doThrow(new ImageNotFoundException("not found")) - .when(imageService) - .delete(IMAGE_1_ID); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageEndpoint.delete(IMAGE_1_ID); - }); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void update_succeeds() throws ImageNotFoundException, DockerClientException { - final ImageChangeDto request = ImageChangeDto.builder() - .defaultPort(1111) - .build(); - - /* test */ - final ResponseEntity<ImageDto> response = imageEndpoint.update(IMAGE_1_ID, request); - assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); - } - - @Test - @WithMockUser(roles = "DEVELOPER") - public void update_notFound_fails() throws ImageNotFoundException, DockerClientException { - final ImageChangeDto request = ImageChangeDto.builder() - .defaultPort(1111) - .environment(IMAGE_1_ENV_DTO) - .build(); - - /* mock */ - given(imageService.update(IMAGE_1_ID, request)) - .willAnswer(invocation -> { - throw new ImageNotFoundException("not existing in docker hub"); - }); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageEndpoint.update(IMAGE_1_ID, request); - }); - } -} diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/BaseMappingTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/BaseMappingTest.java deleted file mode 100644 index 0ed93482e34f9262300863a8f9a08e5949ced292..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/BaseMappingTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package at.tuwien.mapper; - -import com.github.dockerjava.api.command.InspectContainerResponse; -import com.github.dockerjava.api.model.ContainerNetwork; -import com.github.dockerjava.api.model.NetworkSettings; -import lombok.SneakyThrows; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.TestPropertySource; - -import java.lang.reflect.Field; -import java.util.Map; - -@TestPropertySource(locations = "classpath:application.properties") -public abstract class BaseMappingTest { - - @Configuration - @ComponentScan(basePackages = {"at.tuwien"}) - public static class BaseMappingContext { - } - - final String CONTAINER_ID = "deadbeef"; - final String CONTAINER_NETWORK_IP = "154.234.88.15"; - - @SneakyThrows - final InspectContainerResponse mockInspectResponse() { - final InspectContainerResponse responseC = new InspectContainerResponse(); - final Object response = responseC.getClass().getConstructor().newInstance(); - final Field idField = responseC.getClass().getDeclaredField("id"); - idField.setAccessible(true); - idField.set(response, CONTAINER_ID); - final Field networkSettingsField = responseC.getClass().getDeclaredField("networkSettings"); - networkSettingsField.setAccessible(true); - - // define the network and address - final ContainerNetwork networkC = new ContainerNetwork(); - final Object network = networkC.getClass().getConstructor().newInstance(); - final Field ipField = networkC.getClass().getDeclaredField("ipAddress"); - ipField.setAccessible(true); - ipField.set(network, CONTAINER_NETWORK_IP); - final Map<String, ContainerNetwork> map = Map.of("fda-userdb", (ContainerNetwork) network); - - // add to network settings - final NetworkSettings settingsC = new NetworkSettings(); - final Object settings = settingsC.getClass().getConstructor().newInstance(); - final Field networksField = settingsC.getClass().getDeclaredField("networks"); - networksField.setAccessible(true); - networksField.set(settings, map); - networkSettingsField.set(response, settings); - - return (InspectContainerResponse) response; - } - -} diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/ContainerMappingTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/ContainerMappingTest.java deleted file mode 100644 index bca70d34b278b97ec933f1a5eaa5e225ed307995..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/mapper/ContainerMappingTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package at.tuwien.mapper; - -import at.tuwien.config.ReadyConfig; -import com.github.dockerjava.api.command.InspectContainerResponse; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.test.context.junit.jupiter.SpringExtension; - - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class ContainerMappingTest extends BaseMappingTest { - - @MockBean - private ReadyConfig readyConfig; - - @Test - public void inspectContainerResponseToDatabaseContainerMappingTest_succeeds() { - final InspectContainerResponse response = mockInspectResponse(); - - assertNotNull(response, "response must not be null"); - assertEquals(CONTAINER_ID, response.getId()); - assertNotNull(response.getNetworkSettings(), "networkSettings must not be null"); - assertNotNull(response.getNetworkSettings().getNetworks(), "networkSettings.networks must not be null"); - assertNotNull(response.getNetworkSettings().getNetworks().get("fda-userdb"), "networkSettings.networks['fda-userdb'] must not be null"); - assertNotNull(response.getNetworkSettings().getNetworks().get("fda-userdb").getIpAddress(), "networkSettings.networks['fda-userdb'].ipAddress must not be null"); - assertEquals(CONTAINER_NETWORK_IP, response.getNetworkSettings().getNetworks().get("fda-userdb").getIpAddress()); - } - -} 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 b270b5e40343cfd057e747e839aa14fa566934ef..2747d51ef0877bb211124b1156232c8ea2847957 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 @@ -2,22 +2,23 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.container.ContainerCreateRequestDto; -import at.tuwien.config.DockerUtil; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.container.Container; -import at.tuwien.entities.container.image.ContainerImage; -import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ContainerRepository; +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.ImageRepository; import at.tuwien.repository.jpa.UserRepository; -import at.tuwien.service.impl.ContainerServiceImpl; import com.github.dockerjava.api.DockerClient; -import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.exception.NotModifiedException; -import com.github.dockerjava.api.model.*; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.Network; import lombok.extern.log4j.Log4j2; import org.apache.http.auth.BasicUserPrincipal; -import org.junit.jupiter.api.*; +import org.junit.jupiter.api.AfterEach; +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; @@ -25,45 +26,33 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.transaction.annotation.Transactional; - import java.security.Principal; -import java.util.List; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; @Log4j2 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -@ExtendWith(SpringExtension.class) @SpringBootTest +@ExtendWith(SpringExtension.class) public class ContainerServiceIntegrationTest extends BaseUnitTest { @MockBean private ReadyConfig readyConfig; - @MockBean - private UserService userService; - @Autowired - private UserRepository userRepository; - - @Autowired - private ContainerServiceImpl containerService; + private DockerClient dockerClient; @Autowired private HostConfig hostConfig; @Autowired - private DockerClient dockerClient; + private ContainerService containerService; @Autowired private ImageRepository imageRepository; @Autowired - private ContainerRepository containerRepository; - - @Autowired - private DockerUtil dockerUtil; + private UserRepository userRepository; @BeforeEach public void beforeEach() { @@ -84,25 +73,9 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { .withEnableIpv6(false) .exec(); - /* create weather container */ - final CreateContainerResponse request = dockerClient.createContainerCmd(IMAGE_1_REPOSITORY + ":" + IMAGE_1_TAG) - .withHostConfig(hostConfig.withNetworkMode("fda-userdb")) - .withName(CONTAINER_1_INTERNALNAME) - .withIpv4Address(CONTAINER_1_IP) - .withHostName(CONTAINER_1_INTERNALNAME) - .withEnv("MARIADB_USER=mariadb", "MARIADB_PASSWORD=mariadb", "MARIADB_ROOT_PASSWORD=mariadb", "MARIADB_DATABASE=weather") - .exec(); - - /* set hash */ - CONTAINER_1.setHash(request.getId()); - /* mock data */ - log.debug("save image {}", IMAGE_1); + userRepository.save(USER_1); imageRepository.save(IMAGE_1); - log.debug("save container {}", CONTAINER_1); - containerRepository.save(CONTAINER_1); - log.debug("save container {}", CONTAINER_2); - containerRepository.save(CONTAINER_2); } @AfterEach @@ -133,9 +106,8 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { } @Test - public void create_succeeds() - throws DockerClientException, ImageNotFoundException, ContainerAlreadyExistsException, - UserNotFoundException { + public void create_succeeds() throws UserNotFoundException, DockerClientException, ContainerAlreadyExistsException, + ImageNotFoundException { final ContainerCreateRequestDto request = ContainerCreateRequestDto.builder() .repository(IMAGE_1_REPOSITORY) .tag(IMAGE_1_TAG) @@ -143,283 +115,9 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { .build(); final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); - /* mock */ - userRepository.save(USER_1); - - /* test */ - final Container container = containerService.create(request, principal); - assertEquals(CONTAINER_1_NAME, container.getName()); - assertEquals(1, userRepository.findAll().size()); - } - - @Test - public void create_multiple_succeeds() - throws DockerClientException, ImageNotFoundException, ContainerAlreadyExistsException, - UserNotFoundException { - final ContainerCreateRequestDto request1 = ContainerCreateRequestDto.builder() - .repository(IMAGE_1_REPOSITORY) - .tag(IMAGE_1_TAG) - .name(CONTAINER_1_NAME) - .build(); - final ContainerCreateRequestDto request2 = ContainerCreateRequestDto.builder() - .repository(IMAGE_1_REPOSITORY) - .tag(IMAGE_1_TAG) - .name(CONTAINER_2_NAME) - .build(); - final ContainerCreateRequestDto request3 = ContainerCreateRequestDto.builder() - .repository(IMAGE_1_REPOSITORY) - .tag(IMAGE_1_TAG) - .name(CONTAINER_3_NAME) - .build(); - final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); - - /* mock */ - userRepository.save(USER_1); - /* test */ - final Container container1 = containerService.create(request1, principal); - assertEquals(CONTAINER_1_NAME, container1.getName()); - assertEquals(1, userRepository.findAll().size()); - final Container container2 = containerService.create(request2, principal); - assertEquals(CONTAINER_2_NAME, container2.getName()); - assertEquals(1, userRepository.findAll().size()); - final Container container3 = containerService.create(request3, principal); - assertEquals(CONTAINER_3_NAME, container3.getName()); - assertEquals(1, userRepository.findAll().size()); - } - - @Test - public void create_conflictingNames_fails() - 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 */ - userRepository.save(USER_1); - containerService.create(request, principal); - - /* test */ - assertThrows(ContainerAlreadyExistsException.class, () -> { - containerService.create(request, principal); - }); - } - - @Test - public void remove_hashNotFound_fails() { - final Container CONTAINER = Container.builder() - .id(CONTAINER_3_ID) - .name(CONTAINER_3_NAME) - .internalName(CONTAINER_3_INTERNALNAME) - .image(IMAGE_1) - .hash("deadbeef") - .created(CONTAINER_3_CREATED) - .build(); - - /* mock */ - final Container container = containerRepository.save(CONTAINER); - log.debug("inserted container with id {}", container.getId()); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.remove(CONTAINER_3_ID); - }); - } - - @Test - public void remove_alreadyRemoved_fails() throws DockerClientException, ContainerStillRunningException, - ContainerNotFoundException { - - /* mock */ - containerService.remove(CONTAINER_1_ID); - final Container container = containerRepository.save(CONTAINER_1); - log.debug("re-inserting container with id {}", container.getId()); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.remove(container.getId()); - }); - } - - @Test - 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); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - containerService.create(request, principal); - }); - } - - - @Test - public void findById_notFound_fails() { - - /* test */ - assertThrows(ContainerNotFoundException.class, () -> { - containerService.find(CONTAINER_3_ID); - }); - } - - @Test - public void change_start_succeeds() throws DockerClientException, ContainerNotFoundException { - - /* mock */ - dockerUtil.stopContainer(CONTAINER_1); - - /* test */ - containerService.start(CONTAINER_1_ID); - } - - @Test - public void change_stop_succeeds() throws DockerClientException, InterruptedException, ContainerNotFoundException { - - /* mock */ - dockerUtil.startContainer(CONTAINER_1); - - /* test */ - containerService.stop(CONTAINER_1_ID); - } - - @Test - public void change_stop_notFoundDocker_fails() { - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.stop(CONTAINER_2_ID); - }); - } - - @Test - public void getAll_succeeds() { - - /* test */ - final List<Container> response = containerService.getAll(); - assertEquals(2, response.size()); - } - - @Test - public void remove_succeeds() throws DockerClientException, ContainerStillRunningException, ContainerNotFoundException { - - /* mock */ - dockerUtil.stopContainer(CONTAINER_1); - - /* test */ - containerService.remove(CONTAINER_1_ID); - } - - @Test - public void remove_notFound_fails() { - - /* test */ - assertThrows(ContainerNotFoundException.class, () -> { - containerService.remove(9999999L); - }); - } - - @Test - public void remove_stillRunning_fails() throws InterruptedException { - - /* mock */ - dockerUtil.startContainer(CONTAINER_1); - - /* test */ - assertThrows(ContainerStillRunningException.class, () -> { - containerService.remove(CONTAINER_1_ID); - }); - } - - @Test - public void change_alreadyRunning_fails() throws InterruptedException { - - /* mock */ - dockerUtil.startContainer(CONTAINER_1); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.start(CONTAINER_1_ID); - }); - } - - @Test - public void change_startNotFound_fails() { - - /* mock */ - containerRepository.save(CONTAINER_3); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.start(CONTAINER_3_ID); - }); - } - - @Test - public void change_alreadyStopped_fails() { - - /* mock */ - dockerUtil.stopContainer(CONTAINER_1); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.stop(CONTAINER_1_ID); - }); - } - - @Test - public void change_stoppedNotFound_fails() { - - /* mock */ - dockerUtil.stopContainer(CONTAINER_1); - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.stop(CONTAINER_1_ID); - }); - } - - @Test - public void inspect_succeeds() throws InterruptedException, DockerClientException, ContainerNotFoundException, - ContainerNotRunningException { - - /* mock */ - dockerUtil.startContainer(CONTAINER_1); - - /* test */ - final Container response = containerService.inspect(CONTAINER_1_ID); - assertEquals(CONTAINER_1_ID, response.getId()); + final Container response = containerService.create(request, principal); assertEquals(CONTAINER_1_NAME, response.getName()); - assertEquals(CONTAINER_1_INTERNALNAME, response.getInternalName()); - assertEquals(CONTAINER_1_IP, response.getIpAddress()); - } - - @Test - public void inspect_notFound_fails() { - - /* test */ - assertThrows(DockerClientException.class, () -> { - containerService.inspect(CONTAINER_2_ID); - }); - } - - @Test - public void inspect_notRunning_fails() { - - /* mock */ - dockerUtil.stopContainer(CONTAINER_1); - - /* test */ - assertThrows(ContainerNotRunningException.class, () -> { - containerService.inspect(CONTAINER_1_ID); - }); } } 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 deleted file mode 100644 index 6d11f4dbdc131d3d9b971fc2ed83f12325c8eeaa..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java +++ /dev/null @@ -1,134 +0,0 @@ -package at.tuwien.service; - -import at.tuwien.BaseUnitTest; -import at.tuwien.api.container.image.ImageCreateDto; -import at.tuwien.config.ReadyConfig; -import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.service.impl.ImageServiceImpl; -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 org.springframework.transaction.annotation.Transactional; - -import java.security.Principal; - -import static org.junit.jupiter.api.Assertions.*; - -@Log4j2 -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class ImageServiceIntegrationTest extends BaseUnitTest { - - @MockBean - private ReadyConfig readyConfig; - - @Autowired - private ImageServiceImpl imageService; - - @Autowired - private ImageRepository imageRepository; - - @Autowired - private ContainerRepository containerRepository; - - @Transactional - @BeforeEach - public void beforeEach() { - log.debug("save container {}", CONTAINER_1); - containerRepository.save(CONTAINER_1); - } - - @Test - public void create_succeeds() - throws ImageAlreadyExistsException, DockerClientException, ImageNotFoundException, UserNotFoundException { - final ImageCreateDto request = ImageCreateDto.builder() - .repository(IMAGE_2_REPOSITORY) - .tag(IMAGE_2_TAG) - .dialect(IMAGE_2_DIALECT) - .driverClass(IMAGE_2_DRIVER) - .jdbcMethod(IMAGE_2_JDBC) - .defaultPort(IMAGE_2_PORT) - .environment(IMAGE_1_ENV_DTO) - .build(); - final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); - - /* test */ - imageService.create(request, principal); - } - - @Test - public void inspect_notFound_fails() { - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageService.inspect("abcdefu", "999.999"); - }); - } - - @Test - public void create_notFound_fails() { - final ImageCreateDto request = ImageCreateDto.builder() - .repository("s0m3th1ng_n0t3x1st1ng") - .tag("d3v_h3ll") - .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); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageService.create(request, principal); - }); - } - - @Test - public void create_duplicate_fails() { - final ImageCreateDto request = ImageCreateDto.builder() - .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); - - /* test */ - assertThrows(ImageAlreadyExistsException.class, () -> { - imageService.create(request, principal); - }); - } - - @Test - public void delete_hasContainer_succeeds() throws ImageNotFoundException, PersistenceException { - - /* test */ - imageService.delete(IMAGE_1_ID); - assertTrue(imageRepository.findById(IMAGE_1_ID).isEmpty()); - assertTrue(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_1); - - /* test */ - 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 deleted file mode 100644 index c1646f96efd2a463771e98eb1dfbfac4240fe3a9..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java +++ /dev/null @@ -1,183 +0,0 @@ -package at.tuwien.service; - -import at.tuwien.BaseUnitTest; -import at.tuwien.api.container.image.ImageChangeDto; -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.ImageRepository; -import at.tuwien.service.impl.ImageServiceImpl; -import org.apache.http.auth.BasicUserPrincipal; -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.context.junit.jupiter.SpringExtension; - -import javax.persistence.EntityNotFoundException; -import javax.validation.ConstraintViolationException; -import java.security.Principal; -import java.util.List; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; - -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class ImageServiceUnitTest extends BaseUnitTest { - - @MockBean - private ReadyConfig readyConfig; - - @Autowired - private ImageServiceImpl imageService; - - @MockBean - private ImageRepository imageRepository; - - @Test - public void getAll_succeeds() { - - /* mock */ - when(imageRepository.findAll()) - .thenReturn(List.of(IMAGE_1)); - - /* test */ - final List<ContainerImage> response = imageService.getAll(); - assertEquals(1, response.size()); - 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_1_ID)) - .thenReturn(Optional.of(IMAGE_1)); - - /* test */ - 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_1_ID)) - .thenReturn(Optional.empty()); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageService.find(IMAGE_1_ID); - }); - } - - @Test - public void create_duplicate_fails() { - final ImageCreateDto request = ImageCreateDto.builder() - .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); - - /* mock */ - when(imageRepository.save(any(ContainerImage.class))) - .thenThrow(ConstraintViolationException.class); - - /* test */ - assertThrows(ImageAlreadyExistsException.class, () -> { - imageService.create(request, principal); - }); - } - - @Test - public void update_succeeds() throws ImageNotFoundException, DockerClientException { - final ImageChangeDto request = ImageChangeDto.builder() - .environment(IMAGE_1_ENV_DTO) - .defaultPort(IMAGE_1_PORT) - .build(); - - /* mock */ - when(imageRepository.findById(IMAGE_1_ID)) - .thenReturn(Optional.of(IMAGE_1)); - when(imageRepository.save(any())) - .thenReturn(IMAGE_1); - - /* test */ - 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_1_ENV_DTO) - .defaultPort(9999) - .build(); - - /* mock */ - when(imageRepository.findById(IMAGE_1_ID)) - .thenReturn(Optional.of(IMAGE_1)); - when(imageRepository.save(any())) - .thenReturn(IMAGE_1); - - /* test */ - 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_1_ENV_DTO) - .defaultPort(IMAGE_1_PORT) - .build(); - - /* mock */ - when(imageRepository.findById(IMAGE_1_ID)) - .thenReturn(Optional.empty()); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageService.update(IMAGE_1_ID, request); - }); - } - - @Test - public void delete_succeeds() throws ImageNotFoundException, PersistenceException { - - /* mock */ - doNothing() - .when(imageRepository) - .deleteById(IMAGE_1_ID); - - /* test */ - imageService.delete(IMAGE_1_ID); - } - - @Test - public void delete_notFound_fails() { - - /* mock */ - doThrow(EntityNotFoundException.class) - .when(imageRepository) - .deleteById(IMAGE_1_ID); - - /* test */ - assertThrows(ImageNotFoundException.class, () -> { - imageService.delete(IMAGE_1_ID); - }); - } -} diff --git a/fda-container-service/rest-service/src/test/resources/docker/inspect_running.json b/fda-container-service/rest-service/src/test/resources/docker/inspect_running.json deleted file mode 100644 index 13b133312e8b5e8b99c7e9d129ce290735818104..0000000000000000000000000000000000000000 --- a/fda-container-service/rest-service/src/test/resources/docker/inspect_running.json +++ /dev/null @@ -1,251 +0,0 @@ -{ - "Id": "37e0b9e40c004e8765fcfcd8830c8b29988fb5f3e847ad2e822b73759a938bdb", - "Created": "2022-11-16T16:55:46.906703156Z", - "Path": "docker-entrypoint.sh", - "Args": [ - "mysqld" - ], - "State": { - "Status": "running", - "Running": true, - "Paused": false, - "Restarting": false, - "OOMKilled": false, - "Dead": false, - "Pid": 0, - "ExitCode": 0, - "Error": "", - "StartedAt": "0001-01-01T00:00:00Z", - "FinishedAt": "0001-01-01T00:00:00Z" - }, - "Image": "sha256:61ff56a02874cff48f63dd41974a64ecb00305e98f56f011da318079ab3a2aca", - "ResolvConfPath": "", - "HostnamePath": "", - "HostsPath": "", - "LogPath": "", - "Name": "/dbrepo-userdb-fda-userdb-u01", - "RestartCount": 0, - "Driver": "overlay2", - "Platform": "linux", - "MountLabel": "", - "ProcessLabel": "", - "AppArmorProfile": "", - "ExecIDs": null, - "HostConfig": { - "Binds": [ - "/tmp:/tmp:rw", - "dbrepo-userdb-fda-userdb-u01:/var/lib/mysql:rw" - ], - "ContainerIDFile": "", - "LogConfig": { - "Type": "json-file", - "Config": {} - }, - "NetworkMode": "userdb", - "PortBindings": { - "5432/tcp": [ - { - "HostIp": "", - "HostPort": "32125" - } - ] - }, - "RestartPolicy": { - "Name": "always", - "MaximumRetryCount": 0 - }, - "AutoRemove": false, - "VolumeDriver": "", - "VolumesFrom": null, - "CapAdd": null, - "CapDrop": null, - "CgroupnsMode": "host", - "Dns": null, - "DnsOptions": null, - "DnsSearch": null, - "ExtraHosts": null, - "GroupAdd": null, - "IpcMode": "private", - "Cgroup": "", - "Links": null, - "OomScoreAdj": 0, - "PidMode": "", - "Privileged": false, - "PublishAllPorts": false, - "ReadonlyRootfs": false, - "SecurityOpt": null, - "UTSMode": "", - "UsernsMode": "", - "ShmSize": 67108864, - "Runtime": "runc", - "ConsoleSize": [ - 0, - 0 - ], - "Isolation": "", - "CpuShares": 0, - "Memory": 0, - "NanoCpus": 0, - "CgroupParent": "", - "BlkioWeight": 0, - "BlkioWeightDevice": null, - "BlkioDeviceReadBps": null, - "BlkioDeviceWriteBps": null, - "BlkioDeviceReadIOps": null, - "BlkioDeviceWriteIOps": null, - "CpuPeriod": 0, - "CpuQuota": 0, - "CpuRealtimePeriod": 0, - "CpuRealtimeRuntime": 0, - "CpusetCpus": "", - "CpusetMems": "", - "Devices": null, - "DeviceCgroupRules": null, - "DeviceRequests": null, - "KernelMemory": 0, - "KernelMemoryTCP": 0, - "MemoryReservation": 0, - "MemorySwap": 0, - "MemorySwappiness": null, - "OomKillDisable": false, - "PidsLimit": null, - "Ulimits": null, - "CpuCount": 0, - "CpuPercent": 0, - "IOMaximumIOps": 0, - "IOMaximumBandwidth": 0, - "MaskedPaths": [ - "/proc/asound", - "/proc/acpi", - "/proc/kcore", - "/proc/keys", - "/proc/latency_stats", - "/proc/timer_list", - "/proc/timer_stats", - "/proc/sched_debug", - "/proc/scsi", - "/sys/firmware" - ], - "ReadonlyPaths": [ - "/proc/bus", - "/proc/fs", - "/proc/irq", - "/proc/sys", - "/proc/sysrq-trigger" - ] - }, - "GraphDriver": { - "Data": { - "LowerDir": "/var/lib/docker/overlay2/8a99e2be7f5bf6dec6f797f4d56f18ecd3da3c89618f5550a6ecafe9a4589ff2-init/diff:/var/lib/docker/overlay2/cb0b45ec25ff19bffbe3320ce72fbd9eb3a8c368277f5f059468043b2c329ed4/diff:/var/lib/docker/overlay2/919eb80e1f4e8923c5bd2386edcfd9a808971a11425d11101cf8ae7c800b08e7/diff:/var/lib/docker/overlay2/2fc5924ce3479c8d0e5786ee3a30d75a88683e8b6020b3350347de8217939305/diff:/var/lib/docker/overlay2/aeea12f97f79b33bc9d1533ebd69d474cb0e1251ba56690436bd12f56b3fdb74/diff:/var/lib/docker/overlay2/b0c45a33f5faf53ceb77f855b2edcbf005206af8fc3a6a80b1bb1215a1e8675e/diff:/var/lib/docker/overlay2/fb57deba6dcfda2684dbc39114e38eea34c27caca64960b7f16e1a6ffa7338ba/diff:/var/lib/docker/overlay2/bb27c7e4ba3673f3d06e2dbca624a55b93ae4996682fa572c3e8aa1ede6c341d/diff:/var/lib/docker/overlay2/f2b38526a2e3ba96ec37b2fd3348ae6b257a2c896e98b8bd02aaf460d8e8b168/diff", - "MergedDir": "/var/lib/docker/overlay2/8a99e2be7f5bf6dec6f797f4d56f18ecd3da3c89618f5550a6ecafe9a4589ff2/merged", - "UpperDir": "/var/lib/docker/overlay2/8a99e2be7f5bf6dec6f797f4d56f18ecd3da3c89618f5550a6ecafe9a4589ff2/diff", - "WorkDir": "/var/lib/docker/overlay2/8a99e2be7f5bf6dec6f797f4d56f18ecd3da3c89618f5550a6ecafe9a4589ff2/work" - }, - "Name": "overlay2" - }, - "Mounts": [ - { - "Type": "bind", - "Source": "/tmp", - "Destination": "/tmp", - "Mode": "rw", - "RW": true, - "Propagation": "rprivate" - }, - { - "Type": "volume", - "Name": "dbrepo-userdb-fda-userdb-u01", - "Source": "/var/lib/docker/volumes/dbrepo-userdb-fda-userdb-u01/_data", - "Destination": "/var/lib/mysql", - "Driver": "local", - "Mode": "rw", - "RW": true, - "Propagation": "" - } - ], - "Config": { - "Hostname": "dbrepo-userdb-fda-userdb-u01", - "Domainname": "", - "User": "", - "AttachStdin": false, - "AttachStdout": false, - "AttachStderr": false, - "ExposedPorts": { - "3306/tcp": {} - }, - "Tty": false, - "OpenStdin": false, - "StdinOnce": false, - "Env": [ - "MARIADB_USER=mariadb", - "MARIADB_PASSWORD=mariadb", - "MARIADB_ROOT_PASSWORD=mariadb", - "UZERNAME=root", - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "GOSU_VERSION=1.14", - "LANG=C.UTF-8", - "MARIADB_MAJOR=10.5", - "MARIADB_VERSION=1:10.5.18+maria~ubu2004" - ], - "Cmd": [ - "mysqld" - ], - "Image": "mariadb:10.5", - "Volumes": { - "/var/lib/mysql": {} - }, - "WorkingDir": "", - "Entrypoint": [ - "docker-entrypoint.sh" - ], - "OnBuild": null, - "Labels": { - "org.opencontainers.image.authors": "MariaDB Community", - "org.opencontainers.image.base.name": "docker.io/library/ubuntu:focal", - "org.opencontainers.image.description": "MariaDB Database for relational SQL", - "org.opencontainers.image.documentation": "https://hub.docker.com/_/mariadb/", - "org.opencontainers.image.licenses": "GPL-2.0", - "org.opencontainers.image.source": "https://github.com/MariaDB/mariadb-docker", - "org.opencontainers.image.title": "MariaDB Database", - "org.opencontainers.image.url": "https://github.com/MariaDB/mariadb-docker", - "org.opencontainers.image.vendor": "MariaDB Community", - "org.opencontainers.image.version": "10.5.18" - } - }, - "NetworkSettings": { - "Bridge": "", - "SandboxID": "", - "HairpinMode": false, - "LinkLocalIPv6Address": "", - "LinkLocalIPv6PrefixLen": 0, - "Ports": {}, - "SandboxKey": "", - "SecondaryIPAddresses": null, - "SecondaryIPv6Addresses": null, - "EndpointID": "", - "Gateway": "", - "GlobalIPv6Address": "", - "GlobalIPv6PrefixLen": 0, - "IPAddress": "", - "IPPrefixLen": 0, - "IPv6Gateway": "", - "MacAddress": "", - "Networks": { - "userdb": { - "IPAMConfig": null, - "Links": null, - "Aliases": null, - "NetworkID": "", - "EndpointID": "", - "Gateway": "", - "IPAddress": "", - "IPPrefixLen": 0, - "IPv6Gateway": "", - "GlobalIPv6Address": "", - "GlobalIPv6PrefixLen": 0, - "MacAddress": "", - "DriverOpts": null - } - } - } -} \ No newline at end of file