From b514f5615d6eb10deff30bc1160f4be22a409cbe Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Tue, 26 Apr 2022 16:52:41 -0500 Subject: [PATCH 01/18] Issue 110: Upgrade Weaver-Webservice-Core (2.1.1-RC8). - Upgrade to Java 11. - Upgrade all dependencies with vulnerabilities. - Upgrade tests to use Junit5. --- pom.xml | 118 ++++++++++--- .../tamu/iiif/IrIiifServiceInitializer.java | 2 +- .../edu/tamu/iiif/config/WebMvcConfig.java | 4 +- .../edu/tamu/iiif/constants/Constants.java | 10 +- .../AbstractManifestController.java | 2 +- .../iiif/service/AbstractManifestService.java | 10 +- .../iiif/service/RedisResourceResolver.java | 8 +- src/main/resources/application.yml | 8 +- .../iiif/IrIiifServiceInitializerTest.java | 9 +- .../iiif/config/model/AdminConfigTest.java | 10 +- .../model/DSpaceRdfIiiifConfigTest.java | 10 +- .../model/FedoraPcdmIiiifConfigTest.java | 10 +- .../iiif/config/model/ResolverConfigTest.java | 10 +- .../AbstractManifestControllerTest.java | 3 - .../iiif/controller/ManifestBuilderTest.java | 20 +-- .../controller/ManifestControllerTest.java | 3 - .../iiif/controller/ManifestRequestTest.java | 23 +-- .../controller/ResourceControllerTest.java | 44 ++--- .../advice/GlobalExceptionHandlerTest.java | 42 +++-- ...DSpaceRdfCanvasManifestControllerTest.java | 14 +- ...ceRdfCollectionManifestControllerTest.java | 14 +- .../DSpaceRdfImageManifestControllerTest.java | 14 +- ...RdfPresentationManifestControllerTest.java | 14 +- ...paceRdfSequenceManifestControllerTest.java | 14 +- ...edoraPcdmCanvasManifestControllerTest.java | 16 +- ...aPcdmCollectionManifestControllerTest.java | 14 +- ...FedoraPcdmImageManifestControllerTest.java | 14 +- ...cdmPresentationManifestControllerTest.java | 14 +- ...oraPcdmSequenceManifestControllerTest.java | 14 +- .../iiif/exception/NotFoundExceptionTest.java | 17 +- .../RedisManifestNotFoundExceptionTest.java | 17 +- .../edu/tamu/iiif/model/ManifestTypeTest.java | 20 +-- .../tamu/iiif/model/RedisManifestTest.java | 60 +++---- .../tamu/iiif/model/RedisResourceTest.java | 18 +- .../tamu/iiif/model/rdf/RdfCanvasTest.java | 28 ++-- .../model/rdf/RdfOrderedSequenceTest.java | 31 ++-- .../tamu/iiif/model/rdf/RdfResourceTest.java | 54 +++--- .../service/AbstractManifestServiceTest.java | 26 +-- .../service/CustomRedirectStrategyTest.java | 41 +++-- .../service/RedisResourceResolverTest.java | 47 +++--- .../service/RemoteResourceResolverTest.java | 75 +++++---- .../DSpaceRdfCanvasManifestServiceTest.java | 17 +- ...SpaceRdfCollectionManifestServiceTest.java | 13 +- .../DSpaceRdfImageManifestServiceTest.java | 19 ++- ...aceRdfPresentationManifestServiceTest.java | 44 ++--- .../DSpaceRdfSequenceManifestServiceTest.java | 23 ++- ...AbstractFedoraPcdmManifestServiceTest.java | 156 +++++++++--------- .../FedoraPcdmCanvasManifestServiceTest.java | 15 +- ...doraPcdmCollectionManifestServiceTest.java | 17 +- .../FedoraPcdmImageManifestServiceTest.java | 15 +- ...raPcdmPresentationManifestServiceTest.java | 19 ++- ...FedoraPcdmSequenceManifestServiceTest.java | 19 ++- .../iiif/utility/RdfModelUtilityTest.java | 42 ++--- .../tamu/iiif/utility/StringUtilityTest.java | 20 ++- src/test/resources/application.yml | 12 +- src/test/resources/logback-test.xml | 10 ++ 56 files changed, 786 insertions(+), 577 deletions(-) create mode 100644 src/test/resources/logback-test.xml diff --git a/pom.xml b/pom.xml index 48d7cab..6665c09 100644 --- a/pom.xml +++ b/pom.xml @@ -16,16 +16,19 @@ edu.tamu.weaver webservice-parent - 2.0.3 + 2.1.1-RC8 edu.tamu.iiif.IrIiifServiceInitializer UTF-8 UTF-8 - 1.8 - 3.2.0 + 11 + 4.4.0 3.2.6 + ${java.version} + ${java.version} + 2.22.2 classpath:/config/ @@ -52,6 +55,12 @@ org.springframework.boot spring-boot-starter-data-redis + + + io.lettuce + lettuce-core + + @@ -78,28 +87,38 @@ - org.springframework.restdocs - spring-restdocs-mockmvc - test + org.springframework.boot + spring-boot-configuration-processor + true - org.springframework.security - spring-security-test - test + commons-validator + commons-validator + 1.7 - it.ozimov - embedded-redis - 0.7.2 - test + commons-io + commons-io + 2.11.0 - commons-validator - commons-validator - 1.6 + org.apache.commons + commons-text + 1.9 + + + + com.google.guava + guava + 31.1-jre + + + + redis.clients + jedis @@ -107,6 +126,16 @@ apache-jena-libs pom ${jena-libs.version} + + + commons-io + commons-io + + + com.google.guava + guava + + @@ -122,16 +151,64 @@ - org.springframework.boot - spring-boot-configuration-processor - true + org.springframework.restdocs + spring-restdocs-mockmvc + test + + + org.springframework.security + spring-security-test + test + + + + it.ozimov + embedded-redis + 0.7.3 + test + + + commons-io + commons-io + + + com.google.guava + guava + + + + + + org.mockito + mockito-core + test + + + + org.mockito + mockito-junit-jupiter + test + + ROOT + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-plugins.version} + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-plugins.version} + + org.apache.maven.plugins maven-compiler-plugin @@ -159,6 +236,7 @@ org.codehaus.mojo cobertura-maven-plugin + 2.7 true @@ -268,7 +346,7 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 2.7 + 3.2.2 false diff --git a/src/main/java/edu/tamu/iiif/IrIiifServiceInitializer.java b/src/main/java/edu/tamu/iiif/IrIiifServiceInitializer.java index b379936..96df951 100644 --- a/src/main/java/edu/tamu/iiif/IrIiifServiceInitializer.java +++ b/src/main/java/edu/tamu/iiif/IrIiifServiceInitializer.java @@ -3,7 +3,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /** * Entry point to the IR IIIF service initializer. diff --git a/src/main/java/edu/tamu/iiif/config/WebMvcConfig.java b/src/main/java/edu/tamu/iiif/config/WebMvcConfig.java index 8a744a1..7bd79e3 100644 --- a/src/main/java/edu/tamu/iiif/config/WebMvcConfig.java +++ b/src/main/java/edu/tamu/iiif/config/WebMvcConfig.java @@ -4,12 +4,12 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import edu.tamu.iiif.controller.resolver.ManifestRequestArgumentResolver; @Configuration -public class WebMvcConfig extends WebMvcConfigurerAdapter { +public class WebMvcConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List argumentResolvers) { diff --git a/src/main/java/edu/tamu/iiif/constants/Constants.java b/src/main/java/edu/tamu/iiif/constants/Constants.java index f55c1af..b966663 100644 --- a/src/main/java/edu/tamu/iiif/constants/Constants.java +++ b/src/main/java/edu/tamu/iiif/constants/Constants.java @@ -18,11 +18,11 @@ public class Constants { public final static String IMAGE_IDENTIFIER = "image"; // Manifest Controller Mappings - public final static String COLLECTION_MAPPING = "/" + COLLECTION_IDENTIFIER + "/**/*"; - public final static String PRESENTATION_MAPPING = "/" + PRESENTATION_IDENTIFIER + "/**/*"; - public final static String SEQUENCE_MAPPING = "/" + SEQUENCE_IDENTIFIER + "/**/*"; - public final static String CANVAS_MAPPING = "/" + CANVAS_IDENTIFIER + "/**/*"; - public final static String IMAGE_MAPPING = "/" + IMAGE_IDENTIFIER + "/**/*"; + public final static String COLLECTION_MAPPING = "/" + COLLECTION_IDENTIFIER + "/**"; + public final static String PRESENTATION_MAPPING = "/" + PRESENTATION_IDENTIFIER + "/**"; + public final static String SEQUENCE_MAPPING = "/" + SEQUENCE_IDENTIFIER + "/**"; + public final static String CANVAS_MAPPING = "/" + CANVAS_IDENTIFIER + "/**"; + public final static String IMAGE_MAPPING = "/" + IMAGE_IDENTIFIER + "/**"; // Fedora public final static String FEDORA_FCR_METADATA = "/fcr:metadata"; diff --git a/src/main/java/edu/tamu/iiif/controller/AbstractManifestController.java b/src/main/java/edu/tamu/iiif/controller/AbstractManifestController.java index ce5e474..d854b76 100644 --- a/src/main/java/edu/tamu/iiif/controller/AbstractManifestController.java +++ b/src/main/java/edu/tamu/iiif/controller/AbstractManifestController.java @@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import edu.tamu.iiif.service.ManifestService; diff --git a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java index 05d69cc..537638c 100644 --- a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java @@ -20,11 +20,6 @@ import javax.annotation.PostConstruct; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; - import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.Property; import org.apache.jena.rdf.model.RDFNode; @@ -39,6 +34,11 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + import de.digitalcollections.iiif.presentation.model.api.v2.Canvas; import de.digitalcollections.iiif.presentation.model.api.v2.Image; import de.digitalcollections.iiif.presentation.model.api.v2.ImageResource; diff --git a/src/main/java/edu/tamu/iiif/service/RedisResourceResolver.java b/src/main/java/edu/tamu/iiif/service/RedisResourceResolver.java index 181f050..f7f4165 100644 --- a/src/main/java/edu/tamu/iiif/service/RedisResourceResolver.java +++ b/src/main/java/edu/tamu/iiif/service/RedisResourceResolver.java @@ -40,15 +40,15 @@ public String create(String url) throws URISyntaxException { } public String resolve(String id) throws NotFoundException { - if (redisResourceRepo.exists(id)) { - return redisResourceRepo.findOne(id).getUrl(); + if (redisResourceRepo.existsById(id)) { + return redisResourceRepo.findById(id).get().getUrl(); } throw new NotFoundException(String.format("Resource with id %s not found!", id)); } public void remove(String id) throws NotFoundException { - if (redisResourceRepo.exists(id)) { - redisResourceRepo.delete(id); + if (redisResourceRepo.existsById(id)) { + redisResourceRepo.deleteById(id); } else { throw new NotFoundException(String.format("Resource with id %s not found!", id)); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8bd9323..e48a030 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,11 +3,11 @@ server: port: 9000 logging: - file: ir-iiif-service.log level: edu.tamu.iiif: INFO org.springframework: INFO - path: /var/logs/iiif + file: + name: /var/logs/iiif/ir-iiif-service.log # to enable messaging, include profile weaver-messaging and update activemq broker-url, username and password @@ -22,6 +22,10 @@ spring: profiles: active: production include: dspace, fedora + main: + + # Circular bean dependency between appWebMvcConfig and userRepoImpl. + allow-circular-references: true messaging: channels: diff --git a/src/test/java/edu/tamu/iiif/IrIiifServiceInitializerTest.java b/src/test/java/edu/tamu/iiif/IrIiifServiceInitializerTest.java index d5ef46a..6514b82 100644 --- a/src/test/java/edu/tamu/iiif/IrIiifServiceInitializerTest.java +++ b/src/test/java/edu/tamu/iiif/IrIiifServiceInitializerTest.java @@ -1,18 +1,15 @@ package edu.tamu.iiif; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.constants.Constants; -@RunWith(SpringRunner.class) @SpringBootTest(classes = IrIiifServiceInitializer.class) public class IrIiifServiceInitializerTest { diff --git a/src/test/java/edu/tamu/iiif/config/model/AdminConfigTest.java b/src/test/java/edu/tamu/iiif/config/model/AdminConfigTest.java index 51f61cb..cca9422 100644 --- a/src/test/java/edu/tamu/iiif/config/model/AdminConfigTest.java +++ b/src/test/java/edu/tamu/iiif/config/model/AdminConfigTest.java @@ -1,17 +1,17 @@ package edu.tamu.iiif.config.model; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.List; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.config.model.AdminConfig.Credentials; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class AdminConfigTest { @Test diff --git a/src/test/java/edu/tamu/iiif/config/model/DSpaceRdfIiiifConfigTest.java b/src/test/java/edu/tamu/iiif/config/model/DSpaceRdfIiiifConfigTest.java index b31505f..b7e15b7 100644 --- a/src/test/java/edu/tamu/iiif/config/model/DSpaceRdfIiiifConfigTest.java +++ b/src/test/java/edu/tamu/iiif/config/model/DSpaceRdfIiiifConfigTest.java @@ -1,15 +1,15 @@ package edu.tamu.iiif.config.model; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.List; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class DSpaceRdfIiiifConfigTest { @Test diff --git a/src/test/java/edu/tamu/iiif/config/model/FedoraPcdmIiiifConfigTest.java b/src/test/java/edu/tamu/iiif/config/model/FedoraPcdmIiiifConfigTest.java index 7e850bf..1b9dcd7 100644 --- a/src/test/java/edu/tamu/iiif/config/model/FedoraPcdmIiiifConfigTest.java +++ b/src/test/java/edu/tamu/iiif/config/model/FedoraPcdmIiiifConfigTest.java @@ -1,15 +1,15 @@ package edu.tamu.iiif.config.model; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.List; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class FedoraPcdmIiiifConfigTest { @Test diff --git a/src/test/java/edu/tamu/iiif/config/model/ResolverConfigTest.java b/src/test/java/edu/tamu/iiif/config/model/ResolverConfigTest.java index 519e95c..1b4e6ac 100644 --- a/src/test/java/edu/tamu/iiif/config/model/ResolverConfigTest.java +++ b/src/test/java/edu/tamu/iiif/config/model/ResolverConfigTest.java @@ -1,15 +1,15 @@ package edu.tamu.iiif.config.model; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.config.model.AdminConfig.Credentials; import edu.tamu.iiif.config.model.ResolverConfig.ResolverType; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class ResolverConfigTest { @Test diff --git a/src/test/java/edu/tamu/iiif/controller/AbstractManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/AbstractManifestControllerTest.java index fb26bc3..519949e 100644 --- a/src/test/java/edu/tamu/iiif/controller/AbstractManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/AbstractManifestControllerTest.java @@ -1,12 +1,9 @@ package edu.tamu.iiif.controller; -import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; -@RunWith(SpringRunner.class) @AutoConfigureRestDocs(outputDir = "target/generated-snippets") public abstract class AbstractManifestControllerTest implements ManifestControllerTest { diff --git a/src/test/java/edu/tamu/iiif/controller/ManifestBuilderTest.java b/src/test/java/edu/tamu/iiif/controller/ManifestBuilderTest.java index 6e99611..f2ee0d1 100644 --- a/src/test/java/edu/tamu/iiif/controller/ManifestBuilderTest.java +++ b/src/test/java/edu/tamu/iiif/controller/ManifestBuilderTest.java @@ -1,17 +1,17 @@ package edu.tamu.iiif.controller; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import java.util.Arrays; import javax.servlet.http.HttpServletResponse; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class ManifestBuilderTest { @Test @@ -19,11 +19,11 @@ public void testManifestBuilder() { HttpServletResponse response = mock(HttpServletResponse.class); ManifestBuilder builder = ManifestBuilder.build(response, ManifestRequest.of("test", false, Arrays.asList(new String[] { "allow" }), Arrays.asList(new String[] { "disallow" }))); ManifestRequest request = builder.getRequest(); - Assert.assertEquals(response, builder.getResponse()); - Assert.assertEquals("test", request.getContext()); - Assert.assertEquals(false, request.isUpdate()); - Assert.assertEquals("allow", request.getAllowed()); - Assert.assertEquals("disallow", request.getDisallowed()); + assertEquals(response, builder.getResponse()); + assertEquals("test", request.getContext()); + assertEquals(false, request.isUpdate()); + assertEquals("allow", request.getAllowed()); + assertEquals("disallow", request.getDisallowed()); } } diff --git a/src/test/java/edu/tamu/iiif/controller/ManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/ManifestControllerTest.java index 0d72ff6..b39f191 100644 --- a/src/test/java/edu/tamu/iiif/controller/ManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/ManifestControllerTest.java @@ -1,10 +1,7 @@ package edu.tamu.iiif.controller; -import org.junit.Test; - public interface ManifestControllerTest { - @Test public void testGetManifest() throws Exception; } diff --git a/src/test/java/edu/tamu/iiif/controller/ManifestRequestTest.java b/src/test/java/edu/tamu/iiif/controller/ManifestRequestTest.java index cba93dd..356b946 100644 --- a/src/test/java/edu/tamu/iiif/controller/ManifestRequestTest.java +++ b/src/test/java/edu/tamu/iiif/controller/ManifestRequestTest.java @@ -1,29 +1,30 @@ package edu.tamu.iiif.controller; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.util.Arrays; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class ManifestRequestTest { @Test public void testManifestRequest() { ManifestRequest request = ManifestRequest.of("test", false); - Assert.assertEquals("test", request.getContext()); - Assert.assertEquals(false, request.isUpdate()); + assertEquals("test", request.getContext()); + assertEquals(false, request.isUpdate()); } @Test public void testManifestRequestAdvanced() { ManifestRequest request = ManifestRequest.of("test", false, Arrays.asList(new String[] { "allow" }), Arrays.asList(new String[] { "disallow" })); - Assert.assertEquals("test", request.getContext()); - Assert.assertEquals(false, request.isUpdate()); - Assert.assertEquals("allow", request.getAllowed()); - Assert.assertEquals("disallow", request.getDisallowed()); + assertEquals("test", request.getContext()); + assertEquals(false, request.isUpdate()); + assertEquals("allow", request.getAllowed()); + assertEquals("disallow", request.getDisallowed()); } } diff --git a/src/test/java/edu/tamu/iiif/controller/ResourceControllerTest.java b/src/test/java/edu/tamu/iiif/controller/ResourceControllerTest.java index c951c0d..48ae2dd 100644 --- a/src/test/java/edu/tamu/iiif/controller/ResourceControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/ResourceControllerTest.java @@ -1,6 +1,6 @@ package edu.tamu.iiif.controller; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; @@ -16,25 +16,29 @@ import java.net.URISyntaxException; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.exception.NotFoundException; import edu.tamu.iiif.model.RedisResource; import edu.tamu.iiif.service.ResourceResolver; -@RunWith(SpringRunner.class) -@WebMvcTest(value = ResourceController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = ResourceController.class) @AutoConfigureRestDocs(outputDir = "target/generated-snippets") public class ResourceControllerTest { @@ -58,25 +62,16 @@ public class ResourceControllerTest { private final String invalidUrl = "fubar"; - @Before + @BeforeEach public void setup() throws URISyntaxException, NotFoundException { - try { - when(resourceResolver.resolve(mockResource.getId())).thenReturn(mockResource.getUrl()); - when(resourceResolver.lookup(mockResource.getUrl())).thenReturn(mockResource.getId()); - when(resourceResolver.create(mockResource.getUrl())).thenReturn(mockResource.getId()); - when(resourceResolver.create(mockResourceNotExistYet.getUrl())).thenReturn(mockResourceNotExistYet.getId()); - } catch (URISyntaxException e) { - e.printStackTrace(); - } catch (NotFoundException e) { - e.printStackTrace(); - } + when(resourceResolver.resolve(mockResource.getId())).thenReturn(mockResource.getUrl()); + when(resourceResolver.lookup(mockResource.getUrl())).thenReturn(mockResource.getId()); + when(resourceResolver.create(mockResource.getUrl())).thenReturn(mockResource.getId()); + when(resourceResolver.create(mockResourceNotExistYet.getUrl())).thenReturn(mockResourceNotExistYet.getId()); when(resourceResolver.resolve(mockResourceNotExist.getId())).thenThrow(new NotFoundException(resourceWithIdNotFound)); - when(resourceResolver.lookup(mockResourceNotExist.getUrl())).thenThrow(new NotFoundException(resourceWithUrlNotFound)); - when(resourceResolver.lookup(mockResourceNotExistYet.getUrl())).thenThrow(new NotFoundException(resourceWithUrlNotFoundYet)); - when(resourceResolver.lookup(invalidUrl)).thenThrow(new URISyntaxException(invalidUrl, "Not a valid URL")); doThrow(new NotFoundException(resourceWithIdNotFound)).when(resourceResolver).remove(mockResourceNotExist.getId()); @@ -143,6 +138,7 @@ public void testGetResourceIdNotFound() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testPutResource() throws Exception { RequestBuilder requestBuilder = put("/resources").param("uri", mockResourceNotExistYet.getUrl()).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/putResource", requestParameters(parameterWithName("uri").description("The resource URI."))); @@ -152,6 +148,7 @@ public void testPutResource() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testPutExistingResource() throws Exception { RequestBuilder requestBuilder = put("/resources").param("uri", mockResource.getUrl()).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/putResource", requestParameters(parameterWithName("uri").description("The resource URI."))); @@ -161,6 +158,7 @@ public void testPutExistingResource() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testPostResource() throws Exception { RequestBuilder requestBuilder = post("/resources").param("uri", mockResourceNotExistYet.getUrl()).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/postResource", requestParameters(parameterWithName("uri").description("The resource URI."))); @@ -170,6 +168,7 @@ public void testPostResource() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testPostExistingResource() throws Exception { RequestBuilder requestBuilder = post("/resources").param("uri", mockResource.getUrl()).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/postResource", requestParameters(parameterWithName("uri").description("The resource URI."))); @@ -179,6 +178,7 @@ public void testPostExistingResource() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testPostResourceInvalidUrl() throws Exception { RequestBuilder requestBuilder = post("/resources").param("uri", invalidUrl).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/postResource", requestParameters(parameterWithName("uri").description("The resource URI."))); @@ -188,6 +188,7 @@ public void testPostResourceInvalidUrl() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testRemoveResource() throws Exception { RequestBuilder requestBuilder = delete("/resources/{id}", mockResource.getId()).accept(TEXT_PLAIN); RestDocumentationResultHandler restDocHandler = document("resources/removeResource", pathParameters(parameterWithName("id").description("The resource id."))); @@ -196,6 +197,7 @@ public void testRemoveResource() throws Exception { } @Test + @WithMockUser(roles={ "ADMIN" }) public void testRemoveResourceNotFound() throws Exception { RequestBuilder requestBuilder = delete("/resources/{id}", mockResourceNotExist.getId()).accept(TEXT_PLAIN); MvcResult result = mockMvc.perform(requestBuilder).andReturn(); diff --git a/src/test/java/edu/tamu/iiif/controller/advice/GlobalExceptionHandlerTest.java b/src/test/java/edu/tamu/iiif/controller/advice/GlobalExceptionHandlerTest.java index a5465a4..d8b0db7 100644 --- a/src/test/java/edu/tamu/iiif/controller/advice/GlobalExceptionHandlerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/advice/GlobalExceptionHandlerTest.java @@ -1,55 +1,61 @@ package edu.tamu.iiif.controller.advice; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + import java.io.IOException; import org.apache.jena.riot.RiotException; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.redis.RedisConnectionFailureException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.exception.NotFoundException; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class GlobalExceptionHandlerTest { private GlobalExceptionHandler globalExceptionHandler = new GlobalExceptionHandler(); @Test public void testHandleIOException() { - ResponseEntity response = globalExceptionHandler.handleIOException(new IOException("This is a test")); - Assert.assertEquals("This is a test", response.getBody()); - Assert.assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); + String message = "This is a test"; + ResponseEntity response = globalExceptionHandler.handleIOException(new IOException(message)); + assertEquals(message, response.getBody()); + assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); } @Test public void testHandleIOExceptionIOException() { ResponseEntity response = globalExceptionHandler.handleIOException(new IOException(new Throwable("Broken pipe"))); - Assert.assertNull(response); + assertNull(response); } @Test public void testHandleRiotException() { - ResponseEntity response = globalExceptionHandler.handleRiotException(new RiotException("This is a test")); - Assert.assertEquals("This is a test", response.getBody()); - Assert.assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); + String message = "This is a test"; + ResponseEntity response = globalExceptionHandler.handleRiotException(new RiotException(message)); + assertEquals(message, response.getBody()); + assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); } @Test public void testHandleRedisConnectionFailureException() { - ResponseEntity response = globalExceptionHandler.handleRedisConnectionFailureException(new RedisConnectionFailureException("This is a test")); - Assert.assertEquals("This is a test", response.getBody()); - Assert.assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); + String message = "This is a test"; + ResponseEntity response = globalExceptionHandler.handleRedisConnectionFailureException(new RedisConnectionFailureException(message)); + assertEquals(message, response.getBody()); + assertEquals(HttpStatus.SERVICE_UNAVAILABLE, response.getStatusCode()); } @Test public void testHandleNotFoundException() { - ResponseEntity response = globalExceptionHandler.handleNotFoundException(new NotFoundException("This is a test")); - Assert.assertEquals("This is a test", response.getBody()); - Assert.assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + String message = "This is a test"; + ResponseEntity response = globalExceptionHandler.handleNotFoundException(new NotFoundException(message)); + assertEquals(message, response.getBody()); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); } } diff --git a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCanvasManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCanvasManifestControllerTest.java index a11543b..e4c8029 100644 --- a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCanvasManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCanvasManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.dspace.rdf.DSpaceRdfCanvasManifestService; -@WebMvcTest(value = DSpaceRdfCanvasManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = DSpaceRdfCanvasManifestController.class) public class DSpaceRdfCanvasManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCollectionManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCollectionManifestControllerTest.java index 5af58eb..657716e 100644 --- a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCollectionManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfCollectionManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.dspace.rdf.DSpaceRdfCollectionManifestService; -@WebMvcTest(value = DSpaceRdfCollectionManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = DSpaceRdfCollectionManifestController.class) public class DSpaceRdfCollectionManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfImageManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfImageManifestControllerTest.java index 05529c6..582d657 100644 --- a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfImageManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfImageManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.dspace.rdf.DSpaceRdfImageManifestService; -@WebMvcTest(value = DSpaceRdfImageManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = DSpaceRdfImageManifestController.class) public class DSpaceRdfImageManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfPresentationManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfPresentationManifestControllerTest.java index b99d75e..83bff7e 100644 --- a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfPresentationManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfPresentationManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.dspace.rdf.DSpaceRdfPresentationManifestService; -@WebMvcTest(value = DSpaceRdfPresentationManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = DSpaceRdfPresentationManifestController.class) public class DSpaceRdfPresentationManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfSequenceManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfSequenceManifestControllerTest.java index 90d348e..09b27c0 100644 --- a/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfSequenceManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/dspace/rdf/DSpaceRdfSequenceManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.dspace.rdf.DSpaceRdfSequenceManifestService; -@WebMvcTest(value = DSpaceRdfSequenceManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = DSpaceRdfSequenceManifestController.class) public class DSpaceRdfSequenceManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCanvasManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCanvasManifestControllerTest.java index b23eb4f..7058cc5 100644 --- a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCanvasManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCanvasManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmCanvasManifestService; -@WebMvcTest(value = FedoraPcdmCanvasManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = FedoraPcdmCanvasManifestController.class) public class FedoraPcdmCanvasManifestControllerTest extends AbstractManifestControllerTest { @MockBean @@ -36,7 +42,7 @@ public class FedoraPcdmCanvasManifestControllerTest extends AbstractManifestCont public void testGetManifest() throws Exception { String expected = readFileToString(json.getFile(), "UTF-8"); when(fedoraPcdmCanvasManifestService.getManifest(any(ManifestRequest.class))).thenReturn(expected); - RequestBuilder requestBuilder = get("/fedora/canvas/{context}", "/cars_pcdm_objects/chevy/pages/page_0").accept(APPLICATION_JSON); + RequestBuilder requestBuilder = get("/fedora/canvas/{context}", "cars_pcdm_objects/chevy/pages/page_0").accept(APPLICATION_JSON); RestDocumentationResultHandler restDocHandler = document("fedora/canvas", pathParameters(parameterWithName("context").description("The context path."))); MvcResult result = mockMvc.perform(requestBuilder).andDo(restDocHandler).andReturn(); assertEquals(expected, result.getResponse().getContentAsString()); diff --git a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCollectionManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCollectionManifestControllerTest.java index 1b3320a..40c249f 100644 --- a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCollectionManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmCollectionManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmCollectionManifestService; -@WebMvcTest(value = FedoraPcdmCollectionManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = FedoraPcdmCollectionManifestController.class) public class FedoraPcdmCollectionManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmImageManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmImageManifestControllerTest.java index 0917d15..1f1e3a2 100644 --- a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmImageManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmImageManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmImageManifestService; -@WebMvcTest(value = FedoraPcdmImageManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = FedoraPcdmImageManifestController.class) public class FedoraPcdmImageManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmPresentationManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmPresentationManifestControllerTest.java index 8466f3b..0f5e1cc 100644 --- a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmPresentationManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmPresentationManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmPresentationManifestService; -@WebMvcTest(value = FedoraPcdmPresentationManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = FedoraPcdmPresentationManifestController.class) public class FedoraPcdmPresentationManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmSequenceManifestControllerTest.java b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmSequenceManifestControllerTest.java index d4ac8a5..a44aa65 100644 --- a/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmSequenceManifestControllerTest.java +++ b/src/test/java/edu/tamu/iiif/controller/fedora/pcdm/FedoraPcdmSequenceManifestControllerTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.controller.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -10,20 +10,26 @@ import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.core.io.Resource; import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; +import edu.tamu.iiif.config.model.AdminConfig; import edu.tamu.iiif.controller.AbstractManifestControllerTest; import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmSequenceManifestService; -@WebMvcTest(value = FedoraPcdmSequenceManifestController.class, secure = false) +@Import({ AdminConfig.class }) +@ExtendWith(MockitoExtension.class) +@WebMvcTest(value = FedoraPcdmSequenceManifestController.class) public class FedoraPcdmSequenceManifestControllerTest extends AbstractManifestControllerTest { @MockBean diff --git a/src/test/java/edu/tamu/iiif/exception/NotFoundExceptionTest.java b/src/test/java/edu/tamu/iiif/exception/NotFoundExceptionTest.java index 5591d3f..b421e1b 100644 --- a/src/test/java/edu/tamu/iiif/exception/NotFoundExceptionTest.java +++ b/src/test/java/edu/tamu/iiif/exception/NotFoundExceptionTest.java @@ -1,15 +1,18 @@ package edu.tamu.iiif.exception; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class NotFoundExceptionTest { - @Test(expected = NotFoundException.class) - public void testThrowNotFoundException() throws NotFoundException { - throw new NotFoundException("This is only a test!"); + @Test + public void testThrowNotFoundException() { + Assertions.assertThrows(NotFoundException.class, () -> { + throw new NotFoundException("This is only a test!"); + }); } } diff --git a/src/test/java/edu/tamu/iiif/exception/RedisManifestNotFoundExceptionTest.java b/src/test/java/edu/tamu/iiif/exception/RedisManifestNotFoundExceptionTest.java index 6774436..95f4ee6 100644 --- a/src/test/java/edu/tamu/iiif/exception/RedisManifestNotFoundExceptionTest.java +++ b/src/test/java/edu/tamu/iiif/exception/RedisManifestNotFoundExceptionTest.java @@ -1,15 +1,18 @@ package edu.tamu.iiif.exception; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RedisManifestNotFoundExceptionTest { - @Test(expected = RedisManifestNotFoundException.class) - public void testThrowRedisManifestNotFoundException() throws RedisManifestNotFoundException { - throw new RedisManifestNotFoundException("This is only a test!"); + @Test + public void testThrowRedisManifestNotFoundException() { + Assertions.assertThrows(RedisManifestNotFoundException.class, () -> { + throw new RedisManifestNotFoundException("This is only a test!"); + }); } } diff --git a/src/test/java/edu/tamu/iiif/model/ManifestTypeTest.java b/src/test/java/edu/tamu/iiif/model/ManifestTypeTest.java index fe7bf2a..06e33c5 100644 --- a/src/test/java/edu/tamu/iiif/model/ManifestTypeTest.java +++ b/src/test/java/edu/tamu/iiif/model/ManifestTypeTest.java @@ -5,22 +5,22 @@ import static edu.tamu.iiif.constants.Constants.IMAGE_IDENTIFIER; import static edu.tamu.iiif.constants.Constants.PRESENTATION_IDENTIFIER; import static edu.tamu.iiif.constants.Constants.SEQUENCE_IDENTIFIER; +import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class ManifestTypeTest { @Test public void testManifestType() { - Assert.assertEquals(CANVAS_IDENTIFIER, ManifestType.CANVAS.getName()); - Assert.assertEquals(COLLECTION_IDENTIFIER, ManifestType.COLLECTION.getName()); - Assert.assertEquals(IMAGE_IDENTIFIER, ManifestType.IMAGE.getName()); - Assert.assertEquals(PRESENTATION_IDENTIFIER, ManifestType.PRESENTATION.getName()); - Assert.assertEquals(SEQUENCE_IDENTIFIER, ManifestType.SEQUENCE.getName()); + assertEquals(CANVAS_IDENTIFIER, ManifestType.CANVAS.getName()); + assertEquals(COLLECTION_IDENTIFIER, ManifestType.COLLECTION.getName()); + assertEquals(IMAGE_IDENTIFIER, ManifestType.IMAGE.getName()); + assertEquals(PRESENTATION_IDENTIFIER, ManifestType.PRESENTATION.getName()); + assertEquals(SEQUENCE_IDENTIFIER, ManifestType.SEQUENCE.getName()); } } diff --git a/src/test/java/edu/tamu/iiif/model/RedisManifestTest.java b/src/test/java/edu/tamu/iiif/model/RedisManifestTest.java index 1331cab..911cf25 100644 --- a/src/test/java/edu/tamu/iiif/model/RedisManifestTest.java +++ b/src/test/java/edu/tamu/iiif/model/RedisManifestTest.java @@ -1,11 +1,13 @@ package edu.tamu.iiif.model; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; -@RunWith(SpringRunner.class) +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) public class RedisManifestTest { protected static final String FEDORA_PCDM_IDENTIFIER = "fedora-pcdm"; @@ -13,36 +15,36 @@ public class RedisManifestTest { @Test public void testCreateDefault() { RedisManifest redisManifest = new RedisManifest(); - Assert.assertNotNull(redisManifest); - Assert.assertNotNull(redisManifest.getCreation()); - Assert.assertEquals("", redisManifest.getAllowed()); - Assert.assertEquals("", redisManifest.getDisallowed()); + assertNotNull(redisManifest); + assertNotNull(redisManifest.getCreation()); + assertEquals("", redisManifest.getAllowed()); + assertEquals("", redisManifest.getDisallowed()); } @Test public void testCreate() { RedisManifest redisManifest = new RedisManifest("path", ManifestType.COLLECTION, FEDORA_PCDM_IDENTIFIER, "{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}"); - Assert.assertNotNull(redisManifest); - Assert.assertNotNull(redisManifest.getCreation()); - Assert.assertEquals("path", redisManifest.getPath()); - Assert.assertEquals(ManifestType.COLLECTION, redisManifest.getType()); - Assert.assertEquals(FEDORA_PCDM_IDENTIFIER, redisManifest.getRepository()); - Assert.assertEquals("{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}", redisManifest.getJson()); - Assert.assertEquals("", redisManifest.getAllowed()); - Assert.assertEquals("", redisManifest.getDisallowed()); + assertNotNull(redisManifest); + assertNotNull(redisManifest.getCreation()); + assertEquals("path", redisManifest.getPath()); + assertEquals(ManifestType.COLLECTION, redisManifest.getType()); + assertEquals(FEDORA_PCDM_IDENTIFIER, redisManifest.getRepository()); + assertEquals("{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}", redisManifest.getJson()); + assertEquals("", redisManifest.getAllowed()); + assertEquals("", redisManifest.getDisallowed()); } @Test public void testCreateComplete() { RedisManifest redisManifest = new RedisManifest("path", ManifestType.COLLECTION, FEDORA_PCDM_IDENTIFIER, "apple,banana", "cat,dog", "{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}"); - Assert.assertNotNull(redisManifest); - Assert.assertNotNull(redisManifest.getCreation()); - Assert.assertEquals("path", redisManifest.getPath()); - Assert.assertEquals(ManifestType.COLLECTION, redisManifest.getType()); - Assert.assertEquals(FEDORA_PCDM_IDENTIFIER, redisManifest.getRepository()); - Assert.assertEquals("{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}", redisManifest.getJson()); - Assert.assertEquals("apple,banana", redisManifest.getAllowed()); - Assert.assertEquals("cat,dog", redisManifest.getDisallowed()); + assertNotNull(redisManifest); + assertNotNull(redisManifest.getCreation()); + assertEquals("path", redisManifest.getPath()); + assertEquals(ManifestType.COLLECTION, redisManifest.getType()); + assertEquals(FEDORA_PCDM_IDENTIFIER, redisManifest.getRepository()); + assertEquals("{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}", redisManifest.getJson()); + assertEquals("apple,banana", redisManifest.getAllowed()); + assertEquals("cat,dog", redisManifest.getDisallowed()); } @Test @@ -50,10 +52,10 @@ public void testUpdate() { RedisManifest redisManifest = new RedisManifest("path", ManifestType.COLLECTION, FEDORA_PCDM_IDENTIFIER, "apple,banana", "cat,dog", "{\"@id\":\"http:localhost/fedora/collection?context=pcdm\"}"); redisManifest.setId("1"); redisManifest.setJson("{\"@id\":\"http:localhost/dspace/presentation?context=123456789/123456\"}"); - Assert.assertEquals("1", redisManifest.getId()); - Assert.assertEquals("{\"@id\":\"http:localhost/dspace/presentation?context=123456789/123456\"}", redisManifest.getJson()); - Assert.assertEquals("apple,banana", redisManifest.getAllowed()); - Assert.assertEquals("cat,dog", redisManifest.getDisallowed()); + assertEquals("1", redisManifest.getId()); + assertEquals("{\"@id\":\"http:localhost/dspace/presentation?context=123456789/123456\"}", redisManifest.getJson()); + assertEquals("apple,banana", redisManifest.getAllowed()); + assertEquals("cat,dog", redisManifest.getDisallowed()); } } diff --git a/src/test/java/edu/tamu/iiif/model/RedisResourceTest.java b/src/test/java/edu/tamu/iiif/model/RedisResourceTest.java index 07bd705..866010e 100644 --- a/src/test/java/edu/tamu/iiif/model/RedisResourceTest.java +++ b/src/test/java/edu/tamu/iiif/model/RedisResourceTest.java @@ -1,22 +1,24 @@ package edu.tamu.iiif.model; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + import java.util.UUID; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RedisResourceTest { @Test public void testCreate() { String url = "http://localhost:900/fcrepo/rest/image02"; RedisResource redisResource = new RedisResource(url); - Assert.assertNotNull(redisResource); - Assert.assertEquals(UUID.nameUUIDFromBytes(redisResource.getUrl().getBytes()).toString(), redisResource.getId()); - Assert.assertEquals(url, redisResource.getUrl()); + assertNotNull(redisResource); + assertEquals(UUID.nameUUIDFromBytes(redisResource.getUrl().getBytes()).toString(), redisResource.getId()); + assertEquals(url, redisResource.getUrl()); } } diff --git a/src/test/java/edu/tamu/iiif/model/rdf/RdfCanvasTest.java b/src/test/java/edu/tamu/iiif/model/rdf/RdfCanvasTest.java index 3497b94..0b9c8bf 100644 --- a/src/test/java/edu/tamu/iiif/model/rdf/RdfCanvasTest.java +++ b/src/test/java/edu/tamu/iiif/model/rdf/RdfCanvasTest.java @@ -1,24 +1,26 @@ package edu.tamu.iiif.model.rdf; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import de.digitalcollections.iiif.presentation.model.impl.v2.ImageImpl; import edu.tamu.iiif.model.ImageWithInfo; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RdfCanvasTest { @Test public void testCreateDefault() { RdfCanvas rdfCanvas = new RdfCanvas(); - Assert.assertNotNull(rdfCanvas); - Assert.assertNotNull(rdfCanvas.getHeight()); - Assert.assertNotNull(rdfCanvas.getWidth()); - Assert.assertNotNull(rdfCanvas.getImages()); - Assert.assertEquals(0, rdfCanvas.getImages().size()); + assertNotNull(rdfCanvas); + assertNotNull(rdfCanvas.getHeight()); + assertNotNull(rdfCanvas.getWidth()); + assertNotNull(rdfCanvas.getImages()); + assertEquals(0, rdfCanvas.getImages().size()); } @Test @@ -27,9 +29,9 @@ public void testUpdate() { rdfCanvas.setHeight(100); rdfCanvas.setWidth(100); rdfCanvas.addImage(ImageWithInfo.of(new ImageImpl())); - Assert.assertEquals(100, rdfCanvas.getHeight()); - Assert.assertEquals(100, rdfCanvas.getWidth()); - Assert.assertEquals(1, rdfCanvas.getImages().size()); + assertEquals(100, rdfCanvas.getHeight()); + assertEquals(100, rdfCanvas.getWidth()); + assertEquals(1, rdfCanvas.getImages().size()); } } diff --git a/src/test/java/edu/tamu/iiif/model/rdf/RdfOrderedSequenceTest.java b/src/test/java/edu/tamu/iiif/model/rdf/RdfOrderedSequenceTest.java index e0b3d31..aae69b7 100644 --- a/src/test/java/edu/tamu/iiif/model/rdf/RdfOrderedSequenceTest.java +++ b/src/test/java/edu/tamu/iiif/model/rdf/RdfOrderedSequenceTest.java @@ -2,6 +2,10 @@ import static edu.tamu.iiif.constants.Constants.IANA_FIRST_PREDICATE; import static edu.tamu.iiif.constants.Constants.IANA_LAST_PREDICATE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.util.Optional; @@ -9,14 +13,13 @@ import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.Resource; import org.assertj.core.util.Files; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.utility.RdfModelUtility; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RdfOrderedSequenceTest { @Test @@ -33,21 +36,21 @@ public void testRdfOrderedSequence() { System.out.println(lastId.get()); RdfOrderedResource rdfOrderedSequence = new RdfOrderedResource(model, resource, firstId.get(), lastId.get()); - Assert.assertNotNull(rdfOrderedSequence); - Assert.assertEquals(model, rdfOrderedSequence.getModel()); + assertNotNull(rdfOrderedSequence); + assertEquals(model, rdfOrderedSequence.getModel()); - Assert.assertEquals(firstId.get(), rdfOrderedSequence.getFirstId()); - Assert.assertEquals(lastId.get(), rdfOrderedSequence.getLastId()); + assertEquals(firstId.get(), rdfOrderedSequence.getFirstId()); + assertEquals(lastId.get(), rdfOrderedSequence.getLastId()); - Assert.assertTrue(rdfOrderedSequence.isFirst()); - Assert.assertFalse(rdfOrderedSequence.isLast()); + assertTrue(rdfOrderedSequence.isFirst()); + assertFalse(rdfOrderedSequence.isLast()); rdfOrderedSequence.setCurrentId(rdfOrderedSequence.getLastId()); - Assert.assertTrue(rdfOrderedSequence.isLast()); - Assert.assertFalse(rdfOrderedSequence.isFirst()); + assertTrue(rdfOrderedSequence.isLast()); + assertFalse(rdfOrderedSequence.isFirst()); - Assert.assertEquals(lastId.get(), rdfOrderedSequence.getCurrentId()); + assertEquals(lastId.get(), rdfOrderedSequence.getCurrentId()); } } diff --git a/src/test/java/edu/tamu/iiif/model/rdf/RdfResourceTest.java b/src/test/java/edu/tamu/iiif/model/rdf/RdfResourceTest.java index 343fbf1..dbc3620 100644 --- a/src/test/java/edu/tamu/iiif/model/rdf/RdfResourceTest.java +++ b/src/test/java/edu/tamu/iiif/model/rdf/RdfResourceTest.java @@ -1,5 +1,8 @@ package edu.tamu.iiif.model.rdf; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + import java.io.File; import org.apache.jena.rdf.model.Model; @@ -9,15 +12,14 @@ import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Statement; import org.assertj.core.util.Files; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.constants.Constants; import edu.tamu.iiif.utility.RdfModelUtility; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RdfResourceTest { private final static String rdf = Files.contentOf(new File("src/test/resources/mock/dspace/rdf/item.rdf"), "UTF-8"); @@ -26,8 +28,8 @@ public class RdfResourceTest { public void testCreateDefault() { Model model = RdfModelUtility.createRdfModel(rdf); RdfResource rdfResource = new RdfResource(model); - Assert.assertNotNull(rdfResource); - Assert.assertEquals(model, rdfResource.getModel()); + assertNotNull(rdfResource); + assertEquals(model, rdfResource.getModel()); } @Test @@ -35,9 +37,9 @@ public void testCreateWithResource() { Model model = RdfModelUtility.createRdfModel(rdf); Resource resource = model.getResource(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE); RdfResource rdfResource = new RdfResource(model, resource); - Assert.assertNotNull(rdfResource); - Assert.assertEquals(model, rdfResource.getModel()); - Assert.assertEquals(resource, rdfResource.getResource()); + assertNotNull(rdfResource); + assertEquals(model, rdfResource.getModel()); + assertEquals(resource, rdfResource.getResource()); } @Test @@ -47,8 +49,8 @@ public void testCreateFromRdfResourceWithResourceId() { RdfResource testRdfResource = new RdfResource(testModel, testResource); Resource resource = testModel.getResource(Constants.DSPACE_HAS_BITSTREAM_PREDICATE); RdfResource rdfResource = new RdfResource(testRdfResource, Constants.DSPACE_HAS_BITSTREAM_PREDICATE); - Assert.assertNotNull(rdfResource); - Assert.assertEquals(resource, rdfResource.getResource()); + assertNotNull(rdfResource); + assertEquals(resource, rdfResource.getResource()); } @Test @@ -58,8 +60,8 @@ public void testCreateFromRdfResourceWithResourceResource() { RdfResource testRdfResource = new RdfResource(testModel, testResource); Resource resource = testModel.getResource(Constants.DSPACE_HAS_BITSTREAM_PREDICATE); RdfResource rdfResource = new RdfResource(testRdfResource, resource); - Assert.assertNotNull(rdfResource); - Assert.assertEquals(resource, rdfResource.getResource()); + assertNotNull(rdfResource); + assertEquals(resource, rdfResource.getResource()); } @Test @@ -68,36 +70,36 @@ public void testMethods() { Resource resource = model.getResource(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE); RdfResource rdfResource = new RdfResource(model, resource); - Assert.assertEquals(model, rdfResource.getModel()); - Assert.assertEquals(resource, rdfResource.getResource()); - Assert.assertEquals(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE, rdfResource.getId()); + assertEquals(model, rdfResource.getModel()); + assertEquals(resource, rdfResource.getResource()); + assertEquals(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE, rdfResource.getId()); Resource testResource = model.getResource(Constants.DSPACE_HAS_BITSTREAM_PREDICATE); rdfResource.setResource(testResource); - Assert.assertEquals(testResource, rdfResource.getResource()); - Assert.assertEquals(Constants.DSPACE_HAS_BITSTREAM_PREDICATE, rdfResource.getId()); + assertEquals(testResource, rdfResource.getResource()); + assertEquals(Constants.DSPACE_HAS_BITSTREAM_PREDICATE, rdfResource.getId()); - Assert.assertEquals(resource, rdfResource.getResourceById(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE)); + assertEquals(resource, rdfResource.getResourceById(Constants.DSPACE_IS_PART_OF_COLLECTION_PREDICATE)); Property property = model.getProperty(Constants.DUBLIN_CORE_TERMS_TITLE); - Assert.assertEquals(property, rdfResource.getProperty(Constants.DUBLIN_CORE_TERMS_TITLE)); + assertEquals(property, rdfResource.getProperty(Constants.DUBLIN_CORE_TERMS_TITLE)); Statement statement = resource.getProperty(property); - Assert.assertEquals(statement, rdfResource.getStatementOfPropertyWithId(Constants.DUBLIN_CORE_TERMS_TITLE)); + assertEquals(statement, rdfResource.getStatementOfPropertyWithId(Constants.DUBLIN_CORE_TERMS_TITLE)); NodeIterator nodeIterator = rdfResource.getAllNodesOfPropertyWithId(Constants.DSPACE_HAS_BITSTREAM_PREDICATE); - Assert.assertNotNull(nodeIterator); + assertNotNull(nodeIterator); - Assert.assertEquals(1, nodeIterator.toList().size()); + assertEquals(1, nodeIterator.toList().size()); ResIterator resIterator = rdfResource.listResourcesWithPropertyWithId(Constants.DSPACE_HAS_BITSTREAM_PREDICATE); - Assert.assertNotNull(resIterator); + assertNotNull(resIterator); - Assert.assertEquals(1, resIterator.toList().size()); + assertEquals(1, resIterator.toList().size()); } } diff --git a/src/test/java/edu/tamu/iiif/service/AbstractManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/AbstractManifestServiceTest.java index b77b588..473f17a 100644 --- a/src/test/java/edu/tamu/iiif/service/AbstractManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/AbstractManifestServiceTest.java @@ -1,30 +1,31 @@ package edu.tamu.iiif.service; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.initMocks; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.lenient; import static org.springframework.test.util.ReflectionTestUtils.setField; import java.net.URISyntaxException; import java.util.Base64; import java.util.Optional; -import com.fasterxml.jackson.databind.ObjectMapper; - -import org.junit.Before; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.invocation.InvocationOnMock; +import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.stubbing.Answer; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.ObjectMapper; + import edu.tamu.iiif.exception.NotFoundException; import edu.tamu.iiif.model.ManifestType; import edu.tamu.iiif.model.repo.RedisManifestRepo; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) +@ExtendWith(MockitoExtension.class) public abstract class AbstractManifestServiceTest implements ManifestServiceTest { protected static final String IIIF_SERVICE_URL = "http://localhost:9000"; @@ -45,12 +46,11 @@ public abstract class AbstractManifestServiceTest implements ManifestServiceTest @Mock protected ResourceResolver resourceResolver; - @Before + @BeforeEach public void init() throws URISyntaxException, NotFoundException { - initMocks(this); - when(redisManifestRepo.findByPathAndTypeAndRepositoryAndAllowedAndDisallowed(any(String.class), any(ManifestType.class), any(String.class), any(String.class), any(String.class))).thenReturn(Optional.empty()); + lenient().when(redisManifestRepo.findByPathAndTypeAndRepositoryAndAllowedAndDisallowed(any(String.class), any(ManifestType.class), any(String.class), any(String.class), any(String.class))).thenReturn(Optional.empty()); - when(resourceResolver.lookup(any(String.class))).thenAnswer(new Answer() { + lenient().when(resourceResolver.lookup(any(String.class))).thenAnswer(new Answer() { @Override public String answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); diff --git a/src/test/java/edu/tamu/iiif/service/CustomRedirectStrategyTest.java b/src/test/java/edu/tamu/iiif/service/CustomRedirectStrategyTest.java index 3a609f9..6b0783d 100644 --- a/src/test/java/edu/tamu/iiif/service/CustomRedirectStrategyTest.java +++ b/src/test/java/edu/tamu/iiif/service/CustomRedirectStrategyTest.java @@ -1,6 +1,6 @@ package edu.tamu.iiif.service; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.net.MalformedURLException; import java.net.URI; @@ -13,11 +13,12 @@ import org.apache.http.message.BasicHttpResponse; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class CustomRedirectStrategyTest { @Test @@ -42,23 +43,27 @@ public void testGetLocationURIRelativeLocation() throws ProtocolException, Malfo assertEquals("http://localhost:9000/relocated/test", uri.toString()); } - @Test(expected = ProtocolException.class) + @Test public void testGetLocationURIWithBadLocation() throws ProtocolException { - CustomRedirectStrategy customRedirectStrategy = new CustomRedirectStrategy(); - HttpRequest request = new BasicHttpRequest("GET", "http://localhost:9000/test"); - HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 301, "Gone fishing!"); - response.setHeader("location", "this$won't&work"); - HttpContext context = new BasicHttpContext(); - customRedirectStrategy.getLocationURI(request, response, context); + Assertions.assertThrows(ProtocolException.class, () -> { + CustomRedirectStrategy customRedirectStrategy = new CustomRedirectStrategy(); + HttpRequest request = new BasicHttpRequest("GET", "http://localhost:9000/test"); + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 301, "Gone fishing!"); + response.setHeader("location", "this$won't&work"); + HttpContext context = new BasicHttpContext(); + customRedirectStrategy.getLocationURI(request, response, context); + }); } - @Test(expected = ProtocolException.class) + @Test public void testGetLocationURIWithoutLocation() throws ProtocolException { - CustomRedirectStrategy customRedirectStrategy = new CustomRedirectStrategy(); - HttpRequest request = new BasicHttpRequest("GET", "http://localhost:9000/test"); - HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 301, "Gone fishing!"); - HttpContext context = new BasicHttpContext(); - customRedirectStrategy.getLocationURI(request, response, context); + Assertions.assertThrows(ProtocolException.class, () -> { + CustomRedirectStrategy customRedirectStrategy = new CustomRedirectStrategy(); + HttpRequest request = new BasicHttpRequest("GET", "http://localhost:9000/test"); + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 301, "Gone fishing!"); + HttpContext context = new BasicHttpContext(); + customRedirectStrategy.getLocationURI(request, response, context); + }); } } diff --git a/src/test/java/edu/tamu/iiif/service/RedisResourceResolverTest.java b/src/test/java/edu/tamu/iiif/service/RedisResourceResolverTest.java index e41f646..6739b74 100644 --- a/src/test/java/edu/tamu/iiif/service/RedisResourceResolverTest.java +++ b/src/test/java/edu/tamu/iiif/service/RedisResourceResolverTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.service; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; import static org.springframework.test.util.ReflectionTestUtils.setField; @@ -10,17 +10,20 @@ import java.net.URISyntaxException; import java.util.Optional; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.exception.NotFoundException; import edu.tamu.iiif.model.RedisResource; import edu.tamu.iiif.model.repo.RedisResourceRepo; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) +@ExtendWith(MockitoExtension.class) public class RedisResourceResolverTest { @MockBean @@ -32,17 +35,17 @@ public class RedisResourceResolverTest { private final RedisResource mockResourceNotExist = new RedisResource("http://localhost:9000/fcrepo/rest/image02"); - @Before + @BeforeEach public void setup() { - when(redisResourceRepo.exists(mockResource.getId())).thenReturn(true); - when(redisResourceRepo.findOne(mockResource.getId())).thenReturn(mockResource); + when(redisResourceRepo.existsById(mockResource.getId())).thenReturn(true); + when(redisResourceRepo.findById(mockResource.getId())).thenReturn(Optional.of(mockResource)); when(redisResourceRepo.findByUrl(mockResource.getUrl())).thenReturn(Optional.of(mockResource)); when(redisResourceRepo.save(any(RedisResource.class))).thenReturn(mockResource); - doNothing().when(redisResourceRepo).delete(mockResource.getId()); + doNothing().when(redisResourceRepo).deleteById(mockResource.getId()); when(redisResourceRepo.findByUrl(mockResourceNotExist.getUrl())).thenReturn(Optional.empty()); - when(redisResourceRepo.exists(mockResourceNotExist.getId())).thenReturn(false); + when(redisResourceRepo.existsById(mockResourceNotExist.getId())).thenReturn(false); setField(redisResourceResolver, "redisResourceRepo", redisResourceRepo); } @@ -53,9 +56,11 @@ public void testLookup() throws NotFoundException, URISyntaxException { assertEquals(mockResource.getId(), id); } - @Test(expected = NotFoundException.class) + @Test public void testLookupNotFound() throws NotFoundException, URISyntaxException { - redisResourceResolver.lookup(mockResourceNotExist.getUrl()); + Assertions.assertThrows(NotFoundException.class, () -> { + redisResourceResolver.lookup(mockResourceNotExist.getUrl()); + }); } @Test @@ -70,9 +75,11 @@ public void testResolve() throws NotFoundException { assertEquals(mockResource.getUrl(), url); } - @Test(expected = NotFoundException.class) + @Test public void testResolveNotFound() throws NotFoundException { - redisResourceResolver.resolve(mockResourceNotExist.getId()); + Assertions.assertThrows(NotFoundException.class, () -> { + redisResourceResolver.resolve(mockResourceNotExist.getId()); + }); } @Test @@ -80,9 +87,11 @@ public void testRemove() throws NotFoundException { redisResourceResolver.remove(mockResource.getId()); } - @Test(expected = NotFoundException.class) + @Test public void testRemoveNotFound() throws NotFoundException { - redisResourceResolver.remove(mockResourceNotExist.getId()); + Assertions.assertThrows(NotFoundException.class, () -> { + redisResourceResolver.remove(mockResourceNotExist.getId()); + }); } } diff --git a/src/test/java/edu/tamu/iiif/service/RemoteResourceResolverTest.java b/src/test/java/edu/tamu/iiif/service/RemoteResourceResolverTest.java index 4db283d..5579a0f 100644 --- a/src/test/java/edu/tamu/iiif/service/RemoteResourceResolverTest.java +++ b/src/test/java/edu/tamu/iiif/service/RemoteResourceResolverTest.java @@ -1,8 +1,8 @@ package edu.tamu.iiif.service; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import static org.springframework.test.util.ReflectionTestUtils.setField; @@ -11,9 +11,10 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.client.utils.URIBuilder; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -21,7 +22,7 @@ import org.springframework.http.RequestEntity.BodyBuilder; import org.springframework.http.RequestEntity.HeadersBuilder; import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.client.RestTemplate; import edu.tamu.iiif.config.model.AdminConfig.Credentials; @@ -30,7 +31,7 @@ import edu.tamu.iiif.exception.NotFoundException; import edu.tamu.iiif.model.RedisResource; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RemoteResourceResolverTest { @MockBean @@ -44,7 +45,7 @@ public class RemoteResourceResolverTest { private final ResolverConfig resolver = new ResolverConfig(); - @Before + @BeforeEach public void setup() throws URISyntaxException { resolver.setType(ResolverType.REMOTE); resolver.setUrl("http://localhost:9001/entity"); @@ -69,16 +70,18 @@ public void testLookup() throws NotFoundException, URISyntaxException { assertEquals(mockResource.getId(), id); } - @Test(expected = NotFoundException.class) + @Test public void testLookupNotFound() throws NotFoundException, URISyntaxException { - URIBuilder builder = new URIBuilder(resolver.getUrl()); - builder.addParameter("url", mockResourceNotExist.getUrl()); - URI uri = builder.build(); - RequestEntity requestNotFound = RequestEntity.get(uri).accept(MediaType.TEXT_PLAIN).build(); + Assertions.assertThrows(NotFoundException.class, () -> { + URIBuilder builder = new URIBuilder(resolver.getUrl()); + builder.addParameter("url", mockResourceNotExist.getUrl()); + URI uri = builder.build(); + RequestEntity requestNotFound = RequestEntity.get(uri).accept(MediaType.TEXT_PLAIN).build(); - when(restTemplate.exchange(eq(requestNotFound), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with url %s not found!", requestNotFound.getUrl()), HttpStatus.NOT_FOUND)); + when(restTemplate.exchange(eq(requestNotFound), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with url %s not found!", requestNotFound.getUrl()), HttpStatus.NOT_FOUND)); - remoteResourceResolver.lookup(mockResourceNotExist.getUrl()); + remoteResourceResolver.lookup(mockResourceNotExist.getUrl()); + }); } @Test @@ -110,15 +113,17 @@ public void testResolve() throws NotFoundException, URISyntaxException { assertEquals(mockResource.getUrl(), url); } - @Test(expected = NotFoundException.class) + @Test public void testResolveNotFound() throws NotFoundException, URISyntaxException { - URIBuilder builder = new URIBuilder(StringUtils.removeEnd(resolver.getUrl(), "/") + "/" + mockResourceNotExist.getId()); - URI uri = builder.build(); - RequestEntity request = RequestEntity.get(uri).accept(MediaType.TEXT_PLAIN).build(); + Assertions.assertThrows(NotFoundException.class, () -> { + URIBuilder builder = new URIBuilder(StringUtils.removeEnd(resolver.getUrl(), "/") + "/" + mockResourceNotExist.getId()); + URI uri = builder.build(); + RequestEntity request = RequestEntity.get(uri).accept(MediaType.TEXT_PLAIN).build(); - when(restTemplate.exchange(eq(request), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with id %s not found!", mockResourceNotExist.getId()), HttpStatus.FOUND)); + when(restTemplate.exchange(eq(request), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with id %s not found!", mockResourceNotExist.getId()), HttpStatus.FOUND)); - remoteResourceResolver.resolve(mockResourceNotExist.getId()); + remoteResourceResolver.resolve(mockResourceNotExist.getId()); + }); } @Test @@ -136,19 +141,21 @@ public void testRemove() throws NotFoundException, URISyntaxException { remoteResourceResolver.remove(mockResource.getId()); } - @Test(expected = NotFoundException.class) + @Test public void testRemoveNotFound() throws NotFoundException, URISyntaxException { - URIBuilder builder = new URIBuilder(StringUtils.removeEnd(resolver.getUrl(), "/") + "/" + mockResourceNotExist.getId()); - URI uri = builder.build(); - HeadersBuilder headerBuilder = RequestEntity.delete(uri); - if (resolver.hasCredentials()) { - headerBuilder.header("Authorization", String.format("Basic %s", resolver.getBase64Credentials())); - } - RequestEntity request = headerBuilder.build(); - - when(restTemplate.exchange(eq(request), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with id %s not found!", mockResourceNotExist.getId()), HttpStatus.NOT_FOUND)); - - remoteResourceResolver.remove(mockResourceNotExist.getId()); + Assertions.assertThrows(NotFoundException.class, () -> { + URIBuilder builder = new URIBuilder(StringUtils.removeEnd(resolver.getUrl(), "/") + "/" + mockResourceNotExist.getId()); + URI uri = builder.build(); + HeadersBuilder headerBuilder = RequestEntity.delete(uri); + if (resolver.hasCredentials()) { + headerBuilder.header("Authorization", String.format("Basic %s", resolver.getBase64Credentials())); + } + RequestEntity request = headerBuilder.build(); + + when(restTemplate.exchange(eq(request), eq(String.class))).thenReturn(new ResponseEntity(String.format("Resource with id %s not found!", mockResourceNotExist.getId()), HttpStatus.NOT_FOUND)); + + remoteResourceResolver.remove(mockResourceNotExist.getId()); + }); } } diff --git a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestServiceTest.java index ff32a70..a2e64c3 100644 --- a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestServiceTest.java @@ -1,24 +1,27 @@ package edu.tamu.iiif.service.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class DSpaceRdfCanvasManifestServiceTest extends AbstractDSpaceRdfManifestServiceTest { @InjectMocks @@ -33,7 +36,7 @@ public class DSpaceRdfCanvasManifestServiceTest extends AbstractDSpaceRdfManifes @Value("classpath:mock/dspace/json/canvas.json") private Resource canvas; - @Before + @BeforeEach public void setup() { setup(dspaceRdfCanvasManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestServiceTest.java index 88c4859..2826787 100644 --- a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestServiceTest.java @@ -1,16 +1,18 @@ package edu.tamu.iiif.service.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -18,6 +20,7 @@ import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class DSpaceRdfCollectionManifestServiceTest extends AbstractDSpaceRdfManifestServiceTest { @InjectMocks @@ -41,7 +44,7 @@ public class DSpaceRdfCollectionManifestServiceTest extends AbstractDSpaceRdfMan @Value("classpath:mock/dspace/json/collections.json") private Resource collections; - @Before + @BeforeEach public void setup() { setup(dspaceRdfCollectionManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestServiceTest.java index f43e6e4..e7b18e1 100644 --- a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestServiceTest.java @@ -1,24 +1,27 @@ package edu.tamu.iiif.service.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class DSpaceRdfImageManifestServiceTest extends AbstractDSpaceRdfManifestServiceTest { @InjectMocks @@ -27,7 +30,7 @@ public class DSpaceRdfImageManifestServiceTest extends AbstractDSpaceRdfManifest @Value("classpath:mock/dspace/json/image.json") private Resource image; - @Before + @BeforeEach public void setup() { setup(dspaceRdfImageManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestServiceTest.java index 8b39fd4..03fde4a 100644 --- a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestServiceTest.java @@ -2,29 +2,33 @@ import static edu.tamu.iiif.model.ManifestType.PRESENTATION; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; +import static org.mockito.Mockito.lenient; import java.io.IOException; import java.net.URISyntaxException; import java.util.Arrays; import java.util.Optional; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.model.ManifestType; import edu.tamu.iiif.model.RedisManifest; +@ExtendWith(MockitoExtension.class) public class DSpaceRdfPresentationManifestServiceTest extends AbstractDSpaceRdfManifestServiceTest { @InjectMocks @@ -57,7 +61,7 @@ public class DSpaceRdfPresentationManifestServiceTest extends AbstractDSpaceRdfM @Value("classpath:mock/dspace/json/collection-presentation.json") private Resource collectionPresentation; - @Before + @BeforeEach public void setup() { setup(dspaceRdfPresentationManifestService); } @@ -73,31 +77,9 @@ public void testGetManifest() throws IOException, URISyntaxException { public void testGetCollectionManifest() throws IOException, URISyntaxException { setupMocks(); when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158299"), eq(String.class))).thenReturn(readFileToString(collectionRdf.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158301"), eq(String.class))).thenReturn(readFileToString(subcommunityRdf.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158298"), eq(String.class))).thenReturn(readFileToString(communityRdf.getFile(), "UTF-8")); - - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158316"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158316")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158317"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158317")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158310"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158310")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158307"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158307")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158313"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158313")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158312"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8").replace("123456789/158308", "123456789/158312")); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "image/png; charset=utf-8"); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158307/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158310/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158312/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158313/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158316/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158317/1/sports-car-146873_960_720.png"))).thenReturn(headers); - - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMxMC8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMxMy8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMxMi8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMxNy8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMwNy8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMxNi8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); String manifest = dspaceRdfPresentationManifestService.getManifest(ManifestRequest.of("123456789/158299", false)); assertEquals(objectMapper.readValue(collectionPresentation.getFile(), JsonNode.class), objectMapper.readValue(manifest, JsonNode.class)); @@ -136,7 +118,7 @@ public void testGetManifestUpdateCached() throws IOException, URISyntaxException private void setupMocks() throws IOException { when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158308"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158308/1/sports-car-146873_960_720.png"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8")); + lenient().when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158308/1/sports-car-146873_960_720.png"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8")); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "image/png; charset=utf-8"); when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158308/1/sports-car-146873_960_720.png"))).thenReturn(headers); diff --git a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestServiceTest.java index 51d6c69..bad2f50 100644 --- a/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestServiceTest.java @@ -1,24 +1,28 @@ package edu.tamu.iiif.service.dspace.rdf; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class DSpaceRdfSequenceManifestServiceTest extends AbstractDSpaceRdfManifestServiceTest { @InjectMocks @@ -33,7 +37,7 @@ public class DSpaceRdfSequenceManifestServiceTest extends AbstractDSpaceRdfManif @Value("classpath:mock/dspace/json/sequence.json") private Resource sequence; - @Before + @BeforeEach public void setup() { setup(dspaceRdfSequenceManifestService); } @@ -45,8 +49,11 @@ public void testGetManifest() throws IOException, URISyntaxException { HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "image/png; charset=utf-8"); when(restTemplate.headForHeaders(eq(DSPACE_URL + "/xmlui/bitstream/123456789/158308/1/sports-car-146873_960_720.png"))).thenReturn(headers); - when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158308/1/sports-car-146873_960_720.png"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8")); when(restTemplate.getForObject(eq(IMAGE_SERVICE_URL + "/ZHNwYWNlLXJkZjp4bWx1aS9iaXRzdHJlYW0vMTIzNDU2Nzg5LzE1ODMwOC8xL3Nwb3J0cy1jYXItMTQ2ODczXzk2MF83MjAucG5n/info.json"), eq(String.class))).thenReturn(readFileToString(image.getFile(), "UTF-8")); + + // Lenient() is required here because Mockito incorrectly thinks this is not used and reports this as unnecessary stubbing but removing this stub results in a NPE. + lenient().when(restTemplate.getForObject(eq(DSPACE_URL + "/rdf/handle/123456789/158308/1/sports-car-146873_960_720.png"), eq(String.class))).thenReturn(readFileToString(rdf.getFile(), "UTF-8")); + String manifest = dspaceRdfSequenceManifestService.getManifest(ManifestRequest.of("123456789/158308", false)); assertEquals(objectMapper.readValue(sequence.getFile(), JsonNode.class), objectMapper.readValue(manifest, JsonNode.class)); diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/AbstractFedoraPcdmManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/AbstractFedoraPcdmManifestServiceTest.java index c28c924..4452eeb 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/AbstractFedoraPcdmManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/AbstractFedoraPcdmManifestServiceTest.java @@ -1,78 +1,78 @@ -package edu.tamu.iiif.service.fedora.pcdm; - -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.boot.test.mock.mockito.MockBean; - -import edu.tamu.iiif.config.model.FedoraPcdmIiifConfig; -import edu.tamu.iiif.service.AbstractManifestServiceTest; - -public abstract class AbstractFedoraPcdmManifestServiceTest extends AbstractManifestServiceTest { - - @MockBean - private FedoraPcdmIiifConfig config; - - protected static final String FEDORA_URL = "http://localhost:9000/fcrepo/rest"; - - protected static final String FEDORA_PCDM_IDENTIFIER = "fedora-pcdm"; - - protected void setup(AbstractFedoraPcdmManifestService fedoraPcdmManifestService) { - super.setup(fedoraPcdmManifestService); - List labelPredicates = new ArrayList(); - labelPredicates.add("http://purl.org/dc/elements/1.1/title"); - labelPredicates.add("http://purl.org/dc/terms/title"); - labelPredicates.add("http://www.w3.org/2000/01/rdf-schema#label"); - labelPredicates.add("http://purl.org/dc/elements/1.1/identifier"); - - List descriptionPredicates = new ArrayList(); - descriptionPredicates.add("http://purl.org/dc/terms/abstract"); - descriptionPredicates.add("http://purl.org/dc/terms/description"); - descriptionPredicates.add("http://purl.org/dc/elements/1.1/description"); - - List attributionPredicates = new ArrayList(); - attributionPredicates.add("http://purl.org/dc/elements/1.1/creator"); - attributionPredicates.add("http://purl.org/dc/terms/creator"); - attributionPredicates.add("http://purl.org/dc/elements/1.1/contributor"); - attributionPredicates.add("http://purl.org/dc/terms/contributor"); - attributionPredicates.add("http://purl.org/dc/elements/1.1/publisher"); - attributionPredicates.add("http://purl.org/dc/terms/publisher"); - attributionPredicates.add("http://purl.org/dc/elements/1.1/rights"); - attributionPredicates.add("http://purl.org/dc/terms/rightsHolder"); - - List licensePrecedence = new ArrayList(); - licensePrecedence.add("http://purl.org/dc/terms/license"); - - List metadataPrefixes = new ArrayList(); - metadataPrefixes.add("http://purl.org/dc/elements/1.1/"); - metadataPrefixes.add("http://purl.org/dc/terms/"); - - List metadataExclusion = new ArrayList(); - metadataExclusion.add("http://purl.org/dc/terms/description"); - metadataExclusion.add("http://purl.org/dc/elements/1.1/description"); - - when(config.getLabelPredicates()).thenReturn(labelPredicates); - when(config.getDescriptionPredicates()).thenReturn(descriptionPredicates); - when(config.getAttributionPredicates()).thenReturn(attributionPredicates); - when(config.getLicensePrecedence()).thenReturn(licensePrecedence); - when(config.getMetadataPrefixes()).thenReturn(metadataPrefixes); - when(config.getMetadataExclusion()).thenReturn(metadataExclusion); - - when(config.getUrl()).thenReturn(FEDORA_URL); - when(config.getIdentifier()).thenReturn(FEDORA_PCDM_IDENTIFIER); - when(config.getContextAsMetadata()).thenReturn(true); - } - - @Override - protected String getRepoRdfIdentifier() { - return FEDORA_PCDM_IDENTIFIER; - } - - @Override - protected String getRepoBaseUrl() { - return FEDORA_URL + "/"; - } - -} +package edu.tamu.iiif.service.fedora.pcdm; + +import static org.mockito.Mockito.lenient; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.boot.test.mock.mockito.MockBean; + +import edu.tamu.iiif.config.model.FedoraPcdmIiifConfig; +import edu.tamu.iiif.service.AbstractManifestServiceTest; + +public abstract class AbstractFedoraPcdmManifestServiceTest extends AbstractManifestServiceTest { + + @MockBean + private FedoraPcdmIiifConfig config; + + protected static final String FEDORA_URL = "http://localhost:9000/fcrepo/rest"; + + protected static final String FEDORA_PCDM_IDENTIFIER = "fedora-pcdm"; + + protected void setup(AbstractFedoraPcdmManifestService fedoraPcdmManifestService) { + super.setup(fedoraPcdmManifestService); + List labelPredicates = new ArrayList(); + labelPredicates.add("http://purl.org/dc/elements/1.1/title"); + labelPredicates.add("http://purl.org/dc/terms/title"); + labelPredicates.add("http://www.w3.org/2000/01/rdf-schema#label"); + labelPredicates.add("http://purl.org/dc/elements/1.1/identifier"); + + List descriptionPredicates = new ArrayList(); + descriptionPredicates.add("http://purl.org/dc/terms/abstract"); + descriptionPredicates.add("http://purl.org/dc/terms/description"); + descriptionPredicates.add("http://purl.org/dc/elements/1.1/description"); + + List attributionPredicates = new ArrayList(); + attributionPredicates.add("http://purl.org/dc/elements/1.1/creator"); + attributionPredicates.add("http://purl.org/dc/terms/creator"); + attributionPredicates.add("http://purl.org/dc/elements/1.1/contributor"); + attributionPredicates.add("http://purl.org/dc/terms/contributor"); + attributionPredicates.add("http://purl.org/dc/elements/1.1/publisher"); + attributionPredicates.add("http://purl.org/dc/terms/publisher"); + attributionPredicates.add("http://purl.org/dc/elements/1.1/rights"); + attributionPredicates.add("http://purl.org/dc/terms/rightsHolder"); + + List licensePrecedence = new ArrayList(); + licensePrecedence.add("http://purl.org/dc/terms/license"); + + List metadataPrefixes = new ArrayList(); + metadataPrefixes.add("http://purl.org/dc/elements/1.1/"); + metadataPrefixes.add("http://purl.org/dc/terms/"); + + List metadataExclusion = new ArrayList(); + metadataExclusion.add("http://purl.org/dc/terms/description"); + metadataExclusion.add("http://purl.org/dc/elements/1.1/description"); + + lenient().when(config.getLabelPredicates()).thenReturn(labelPredicates); + lenient().when(config.getDescriptionPredicates()).thenReturn(descriptionPredicates); + lenient().when(config.getAttributionPredicates()).thenReturn(attributionPredicates); + lenient().when(config.getLicensePrecedence()).thenReturn(licensePrecedence); + lenient().when(config.getMetadataPrefixes()).thenReturn(metadataPrefixes); + lenient().when(config.getMetadataExclusion()).thenReturn(metadataExclusion); + + lenient().when(config.getUrl()).thenReturn(FEDORA_URL); + lenient().when(config.getIdentifier()).thenReturn(FEDORA_PCDM_IDENTIFIER); + lenient().when(config.getContextAsMetadata()).thenReturn(true); + } + + @Override + protected String getRepoRdfIdentifier() { + return FEDORA_PCDM_IDENTIFIER; + } + + @Override + protected String getRepoBaseUrl() { + return FEDORA_URL + "/"; + } + +} diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestServiceTest.java index 3a366fd..436b11b 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestServiceTest.java @@ -1,17 +1,19 @@ package edu.tamu.iiif.service.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; @@ -20,6 +22,7 @@ import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class FedoraPcdmCanvasManifestServiceTest extends AbstractFedoraPcdmManifestServiceTest { @InjectMocks @@ -40,7 +43,7 @@ public class FedoraPcdmCanvasManifestServiceTest extends AbstractFedoraPcdmManif @Value("classpath:mock/fedora/json/canvas.json") private Resource canvas; - @Before + @BeforeEach public void setup() { setup(fedoraPcdmCanvasManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java index 630c741..5dc41b3 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java @@ -1,16 +1,18 @@ package edu.tamu.iiif.service.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -18,11 +20,12 @@ import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class FedoraPcdmCollectionManifestServiceTest extends AbstractFedoraPcdmManifestServiceTest { @InjectMocks private FedoraPcdmCollectionManifestService fedoraPcdmCollectionManifestService; - + @Value("classpath:mock/fedora/rdf/collection_container.rdf") private Resource collectionRdf; @@ -38,7 +41,7 @@ public class FedoraPcdmCollectionManifestServiceTest extends AbstractFedoraPcdmM @Value("classpath:mock/fedora/json/collection.json") private Resource collection; - @Before + @BeforeEach public void setup() { setup(fedoraPcdmCollectionManifestService); } @@ -48,8 +51,6 @@ public void testGetManifest() throws IOException, URISyntaxException { when(restTemplate.getForObject(eq(FEDORA_URL + "/mwbObjects/TGWCatalog"), eq(String.class))).thenReturn(readFileToString(collectionRdf.getFile(), "UTF-8")); when(restTemplate.getForObject(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084"), eq(String.class))).thenReturn(readFileToString(itemRdf.getFile(), "UTF-8")); when(restTemplate.getForObject(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/fcr:metadata"), eq(String.class))).thenReturn(readFileToString(itemRdf.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/files/fcr:metadata"), eq(String.class))).thenReturn(readFileToString(itemFilesRdf.getFile(), "UTF-8")); - when(restTemplate.getForObject(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/files/ExCat0084.jpg/fcr:metadata"), eq(String.class))).thenReturn(readFileToString(itemFilesEntryRdf.getFile(), "UTF-8")); String manifest = fedoraPcdmCollectionManifestService.getManifest(ManifestRequest.of("mwbObjects/TGWCatalog", false)); assertEquals(objectMapper.readValue(collection.getFile(), JsonNode.class), objectMapper.readValue(manifest, JsonNode.class)); diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestServiceTest.java index 932250f..c48a68f 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestServiceTest.java @@ -1,17 +1,19 @@ package edu.tamu.iiif.service.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.any; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -19,6 +21,7 @@ import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class FedoraPcdmImageManifestServiceTest extends AbstractFedoraPcdmManifestServiceTest { @InjectMocks @@ -27,7 +30,7 @@ public class FedoraPcdmImageManifestServiceTest extends AbstractFedoraPcdmManife @Value("classpath:mock/fedora/json/image.json") private Resource image; - @Before + @BeforeEach public void setup() { setup(fedoraPcdmImageManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestServiceTest.java index 47f0c4e..69a66ad 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestServiceTest.java @@ -2,9 +2,9 @@ import static edu.tamu.iiif.model.ManifestType.PRESENTATION; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; @@ -12,19 +12,22 @@ import java.util.Arrays; import java.util.Optional; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; import edu.tamu.iiif.model.ManifestType; import edu.tamu.iiif.model.RedisManifest; +@ExtendWith(MockitoExtension.class) public class FedoraPcdmPresentationManifestServiceTest extends AbstractFedoraPcdmManifestServiceTest { @InjectMocks @@ -51,7 +54,7 @@ public class FedoraPcdmPresentationManifestServiceTest extends AbstractFedoraPcd @Value("classpath:mock/fedora/json/presentation-disallow.json") private Resource presentationDisallow; - @Before + @BeforeEach public void setup() { setup(fedoraPcdmPresentationManifestService); } diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestServiceTest.java index bd853ac..5ef029d 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestServiceTest.java @@ -1,25 +1,28 @@ package edu.tamu.iiif.service.fedora.pcdm; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URISyntaxException; -import com.fasterxml.jackson.databind.JsonNode; - -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import com.fasterxml.jackson.databind.JsonNode; + import edu.tamu.iiif.controller.ManifestRequest; +@ExtendWith(MockitoExtension.class) public class FedoraPcdmSequenceManifestServiceTest extends AbstractFedoraPcdmManifestServiceTest { @InjectMocks @@ -40,7 +43,7 @@ public class FedoraPcdmSequenceManifestServiceTest extends AbstractFedoraPcdmMan @Value("classpath:mock/fedora/json/sequence.json") private Resource sequence; - @Before + @BeforeEach public void setup() { setup(fedoraPcdmSequenceManifestService); } diff --git a/src/test/java/edu/tamu/iiif/utility/RdfModelUtilityTest.java b/src/test/java/edu/tamu/iiif/utility/RdfModelUtilityTest.java index 23bc69c..c6a30c7 100644 --- a/src/test/java/edu/tamu/iiif/utility/RdfModelUtilityTest.java +++ b/src/test/java/edu/tamu/iiif/utility/RdfModelUtilityTest.java @@ -3,6 +3,9 @@ import static edu.tamu.iiif.constants.Constants.DUBLIN_CORE_TERMS_DESCRIPTION; import static edu.tamu.iiif.constants.Constants.DUBLIN_CORE_TERMS_TITLE; import static edu.tamu.iiif.constants.Constants.IANA_FIRST_PREDICATE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.util.ArrayList; @@ -12,36 +15,35 @@ import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.Resource; import org.assertj.core.util.Files; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; import edu.tamu.iiif.model.rdf.RdfResource; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) public class RdfModelUtilityTest { @Test public void testCreate() { - Assert.assertNotNull(new RdfModelUtility()); + assertNotNull(new RdfModelUtility()); } @Test public void testCreateRdfModel() { String rdf = Files.contentOf(new File("src/test/resources/mock/dspace/rdf/item.rdf"), "UTF-8"); Model model = RdfModelUtility.createRdfModel(rdf); - Assert.assertNotNull(model); + assertNotNull(model); } @Test public void testFindIdByPredicate() { String rdf = Files.contentOf(new File("src/test/resources/mock/fedora/rdf/collection_container.rdf"), "UTF-8"); Model model = RdfModelUtility.createRdfModel(rdf); - Assert.assertNotNull(model); + assertNotNull(model); Optional firstId = RdfModelUtility.findObject(model, IANA_FIRST_PREDICATE); - Assert.assertTrue(firstId.isPresent()); - Assert.assertEquals("http://localhost:9000/fcrepo/rest/mwbObjects/TGWCatalog/orderProxies/ExCat0001Proxy", firstId.get()); + assertTrue(firstId.isPresent()); + assertEquals("http://localhost:9000/fcrepo/rest/mwbObjects/TGWCatalog/orderProxies/ExCat0001Proxy", firstId.get()); } @Test @@ -50,10 +52,10 @@ public void testFindObject() { Model model = RdfModelUtility.createRdfModel(rdf); Resource resource = model.getResource("http://localhost:8080/rdf/resource/123456789/158308"); RdfResource rdfResource = new RdfResource(model, resource); - Assert.assertNotNull(model); + assertNotNull(model); Optional title = RdfModelUtility.findObject(rdfResource, DUBLIN_CORE_TERMS_TITLE); - Assert.assertTrue(title.isPresent()); - Assert.assertEquals("Corvette", title.get()); + assertTrue(title.isPresent()); + assertEquals("Corvette", title.get()); } @Test @@ -62,10 +64,10 @@ public void getObjects() { Model model = RdfModelUtility.createRdfModel(rdf); Resource resource = model.getResource("http://localhost:8080/rdf/resource/123456789/158308"); RdfResource rdfResource = new RdfResource(model, resource); - Assert.assertNotNull(model); + assertNotNull(model); List values = RdfModelUtility.getObjects(rdfResource, DUBLIN_CORE_TERMS_TITLE); - Assert.assertEquals(1, values.size()); - Assert.assertEquals("Corvette", values.get(0)); + assertEquals(1, values.size()); + assertEquals("Corvette", values.get(0)); } @Test @@ -74,14 +76,14 @@ public void getObjectsFromListOfProperties() { Model model = RdfModelUtility.createRdfModel(rdf); Resource resource = model.getResource("http://localhost:8080/rdf/resource/123456789/158308"); RdfResource rdfResource = new RdfResource(model, resource); - Assert.assertNotNull(model); + assertNotNull(model); List predicates = new ArrayList<>(); predicates.add(DUBLIN_CORE_TERMS_TITLE); predicates.add(DUBLIN_CORE_TERMS_DESCRIPTION); List values = RdfModelUtility.getObjects(rdfResource, predicates); - Assert.assertEquals(2, values.size()); - Assert.assertEquals("Corvette", values.get(0)); - Assert.assertEquals("A fast car", values.get(1)); + assertEquals(2, values.size()); + assertEquals("Corvette", values.get(0)); + assertEquals("A fast car", values.get(1)); } } diff --git a/src/test/java/edu/tamu/iiif/utility/StringUtilityTest.java b/src/test/java/edu/tamu/iiif/utility/StringUtilityTest.java index 72ee057..f8edba4 100644 --- a/src/test/java/edu/tamu/iiif/utility/StringUtilityTest.java +++ b/src/test/java/edu/tamu/iiif/utility/StringUtilityTest.java @@ -1,31 +1,33 @@ package edu.tamu.iiif.utility; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; -@RunWith(SpringRunner.class) +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) public class StringUtilityTest { @Test public void testCreate() { - Assert.assertNotNull(new StringUtility()); + assertNotNull(new StringUtility()); } @Test public void testJoinPath() { - Assert.assertEquals("src/main/resources", StringUtility.joinPath("src", "main", "resources")); + assertEquals("src/main/resources", StringUtility.joinPath("src", "main", "resources")); } @Test public void testEncode() { - Assert.assertEquals("SGVsbG8sIFdvcmxkIQ==", StringUtility.encode("Hello, World!")); + assertEquals("SGVsbG8sIFdvcmxkIQ==", StringUtility.encode("Hello, World!")); } @Test public void testDecode() { - Assert.assertEquals("Hello, World!", StringUtility.decode("SGVsbG8sIFdvcmxkIQ==")); + assertEquals("Hello, World!", StringUtility.decode("SGVsbG8sIFdvcmxkIQ==")); } } diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 2d051f8..2c3f36c 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -2,12 +2,16 @@ server: context-path: port: 9001 +# (is overwritten by logback-test.xml) logging: - file: ir-iiif-service.log level: - edu.tamu.iiif: INFO - org.springframework: INFO - path: /var/logs/iiif + com.zaxxer: ERROR + edu.tamu.iiif: ERROR + org: + hibernate: OFF + springframework: ERROR + file: + name: logs/ir-iiif-service-test.log spring: redis: diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 0000000..7a8929b --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,10 @@ + + + + + + + + + + From f7fdf98626d1e76ad01847abd8738278e0f078ba Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 27 Apr 2022 10:54:13 -0500 Subject: [PATCH 02/18] Issue 110: Upgrade from Java 1.8 to Java 11 in Github Actions. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9532d03..b597fa4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: "Setup Java" uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Maven Tests" run: mvn clean test cobertura:cobertura jacoco:report coveralls:report -DdryRun=true From de895788ab4fe6bada1c0435e40cc33549dd9e30 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 27 Apr 2022 14:40:29 -0500 Subject: [PATCH 03/18] Issue 110: Remove version, Github test fails. Failure message: ``` Error: Failed to execute goal org.codehaus.mojo:cobertura-maven-plugin:2.7:instrument (default-cli) on project ir-iiif-service: Execution default-cli of goal org.codehaus.mojo:cobertura-maven-plugin:2.7:instrument failed: Plugin org.codehaus.mojo:cobertura-maven-plugin:2.7 or one of its dependencies could not be resolved: Could not find artifact com.sun:tools:jar:0 at specified path /opt/hostedtoolcache/jdk/11.0.15/x64/../lib/tools.jar -> [Help 1] ``` The tests worked previously prior to adding a version number. Remove the version number and hope it does not fail. --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6665c09..ec19f94 100644 --- a/pom.xml +++ b/pom.xml @@ -236,7 +236,6 @@ org.codehaus.mojo cobertura-maven-plugin - 2.7 true From 6c0d53263368ffeb861febb3dc24c0ba71e1c3ee Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 27 Apr 2022 15:50:57 -0500 Subject: [PATCH 04/18] Issue 110: Remove JDK11 incompatible cobertura and update coveralls. Cobertura doesn't work under JDK11 and is not well maintained anymore. Update Coveralls to work under JDK11. This required bringing in javax.xml.bind:jaxb-api within the plugin of coveralls. --- .github/workflows/build.yml | 2 +- pom.xml | 27 +++++++-------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b597fa4..14254a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: java-version: 11 - name: "Maven Tests" - run: mvn clean test cobertura:cobertura jacoco:report coveralls:report -DdryRun=true + run: mvn clean test jacoco:report coveralls:report -DdryRun=true - name: "Coverage Report" uses: MikeEdgar/github-action@raw_coverage_file diff --git a/pom.xml b/pom.xml index ec19f94..8c40fae 100644 --- a/pom.xml +++ b/pom.xml @@ -190,7 +190,6 @@ mockito-junit-jupiter test - @@ -233,25 +232,6 @@ - - org.codehaus.mojo - cobertura-maven-plugin - - true - - true - - java.util.logging.* - - - - html - xml - - true - - - org.jacoco jacoco-maven-plugin @@ -271,6 +251,13 @@ + + + javax.xml.bind + jaxb-api + 2.3.1 + + From 02834a1555559f7f65dca40484a3e174a523c840 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 28 Apr 2022 08:39:21 -0500 Subject: [PATCH 05/18] Issue 110: Add comment why remaining deprecated function is not removed or replaced. --- .../java/edu/tamu/iiif/service/AbstractManifestService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java index 537638c..62a37ee 100644 --- a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java @@ -109,6 +109,8 @@ public abstract class AbstractManifestService implements ManifestService { @PostConstruct protected void init() { mapper.enable(SerializationFeature.INDENT_OUTPUT); + + // This deprecated use cannot be removed until IiifPresentationApiObjectMapper() exposes builder(). mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); } From 4430fa273427883402af64419068cad38a3da5a1 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 28 Apr 2022 09:16:18 -0500 Subject: [PATCH 06/18] Issue 110: Pom file improvements. --- pom.xml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8c40fae..4af12f2 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,6 @@ edu.tamu ir-iiif-service 0.5.5 - war IR IIIF Service @@ -32,10 +31,21 @@ classpath:/config/ + war + ${maven.packaging} + + + + docker + + jar + + + + - edu.tamu.weaver messaging @@ -229,6 +239,7 @@ 3.2.2 false + ${java.version} From 88e497f66bc48124372d5b259154ed359c314005 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 28 Apr 2022 09:17:31 -0500 Subject: [PATCH 07/18] Issue 110: Add Dockerfile. --- Dockerfile | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..16657ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM maven:3-openjdk-11-slim as maven + +# Copy pom.xml. +COPY pom.xml pom.xml + +# Copy src files. +COPY src src + +# Build. +RUN mvn -DskipTests=true -Pdocker clean package + +# Final base image. +FROM openjdk:11-jre-slim + +# Set deployment directory. +WORKDIR /IRIIIFService + +# Copy over the built artifact from the maven image. +COPY --from=maven /target/ROOT.jar /IRIIIFService/ROOT.jar + +# Settings. +ENV SERVER_PORT='9000' +ENV SPRING_SQL_INIT_PLATFORM='h2' +ENV SPRING_DATASOURCE_DRIVERCLASSNAME='org.h2.Driver' +ENV SPRING_DATASOURCE_URL='jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE' +ENV SPRING_JPA_DATABASEPLATFORM='org.hibernate.dialect.H2Dialect' +ENV SPRING_JPA_HIBERNATE_DDLAUTO='create-drop' +ENV SPRING_DATASOURCE_USERNAME='spring' +ENV SPRING_DATASOURCE_PASSWORD='spring' + +# Expose port. +EXPOSE ${SERVER_PORT} + +# Run java command. +CMD java -jar /IRIIIFService/ROOT.jar From 1cf4bfda108f2b2241ed27d41573c534532ff102 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 28 Apr 2022 15:24:09 -0500 Subject: [PATCH 08/18] Issue 110: Get docker working, including working with safer privileges. It seems that the group id cannot be passed as a parameter because the `COPY --chown=` command does not support that. Use a relatively high number, such as 3001 for the uid and gid to reduce potential id conflicts with the system loaded by docker. Use a single variable ARG declaration for each variable and then import them into each stage. This must be done because ARG is lost between stages and we really should avoid exposing these via ENV. Use a custom work directory owned by a created user. Run maven as that user to avoid doing anything as root (security improvement). Run the service as that user from within that directory. The jar is moved and renamed for convenience. Maven (and possibly java) can be picky about arguments, so use the bracket notation for passing arguments to both maven and java. --- Dockerfile | 64 ++++++++++++++++++++++++++++++++++-------------------- pom.xml | 9 +++++++- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 16657ca..5297e3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,53 @@ +# Settings. +ARG USER_NAME=iriifservice +ARG HOME_DIR=/$USER_NAME +ARG SOURCE_DIR=/$HOME_DIR/source + +# Maven stage. FROM maven:3-openjdk-11-slim as maven +ARG USER_NAME +ARG HOME_DIR +ARG SOURCE_DIR + +# Create the group (use a high ID to attempt to avoid conflits). +RUN groupadd -g 3001 $USER_NAME -# Copy pom.xml. -COPY pom.xml pom.xml +# Create the user (use a high ID to attempt to avoid conflits). +RUN useradd -d $HOME_DIR -m -u 3001 -g 3001 $USER_NAME + +# Update the system. +RUN apt update && apt upgrade -y + +# Set deployment directory. +WORKDIR $SOURCE_DIR -# Copy src files. -COPY src src +# Setup work directory sticky bit. +RUN chown 3001:3001 -R $HOME_DIR + +# Login as user. +USER $USER_NAME + +# Copy files over. +COPY --chown=3001:3001 ./pom.xml ./pom.xml +COPY --chown=3001:3001 ./src ./src # Build. -RUN mvn -DskipTests=true -Pdocker clean package +RUN ["mvn", "package", "-Pjar", "-DskipTests=true"] + +# Switch to Normal JRE Stage. +FROM openjdk:11-jre-slim as runtime +ARG USER_NAME +ARG HOME_DIR +ARG SOURCE_DIR -# Final base image. -FROM openjdk:11-jre-slim +# Login as user. +USER $USER_NAME # Set deployment directory. -WORKDIR /IRIIIFService +WORKDIR $HOME_DIR # Copy over the built artifact from the maven image. -COPY --from=maven /target/ROOT.jar /IRIIIFService/ROOT.jar - -# Settings. -ENV SERVER_PORT='9000' -ENV SPRING_SQL_INIT_PLATFORM='h2' -ENV SPRING_DATASOURCE_DRIVERCLASSNAME='org.h2.Driver' -ENV SPRING_DATASOURCE_URL='jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE' -ENV SPRING_JPA_DATABASEPLATFORM='org.hibernate.dialect.H2Dialect' -ENV SPRING_JPA_HIBERNATE_DDLAUTO='create-drop' -ENV SPRING_DATASOURCE_USERNAME='spring' -ENV SPRING_DATASOURCE_PASSWORD='spring' - -# Expose port. -EXPOSE ${SERVER_PORT} +COPY --chown=3001:3001 --from=maven $SOURCE_DIR/target/ROOT.jar ./iriif.jar # Run java command. -CMD java -jar /IRIIIFService/ROOT.jar +CMD ["java", "-jar", "./iriif.jar"] diff --git a/pom.xml b/pom.xml index 4af12f2..deeb25d 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ edu.tamu.weaver webservice-parent 2.1.1-RC8 + @@ -38,7 +39,13 @@ - docker + war + + war + + + + jar jar From a3e1e8df9f07577ca643c66068a71dbfa9bd9569 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 28 Apr 2022 15:33:18 -0500 Subject: [PATCH 09/18] Issue 110: Remove unintended code added to pom. This was being experimented with and was not intended to be committed. --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index deeb25d..be01a1e 100644 --- a/pom.xml +++ b/pom.xml @@ -246,7 +246,6 @@ 3.2.2 false - ${java.version} From 3c0c458b2a2be3572b14d9ecc3e8f682c86f3264 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 29 Apr 2022 12:04:27 -0500 Subject: [PATCH 10/18] Issue 110: Move the UID/GID into USER_ID argument and other Dockerfile changes. Move the hardcoded 3001 into USER_ID argument. Use `apt-get` instead of `apt`, they are apparently different programs. It turns out the user does have to be recreated across stages. Docker was subtly failing and prenenting to perform all of the other steps. Only the following message is evidence of the problem. ``` linux spec user: unable to find user iriifservice: no matching entries in passwd file ``` --- Dockerfile | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5297e3e..b691228 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,45 +1,57 @@ # Settings. +ARG USER_ID=3001 ARG USER_NAME=iriifservice ARG HOME_DIR=/$USER_NAME ARG SOURCE_DIR=/$HOME_DIR/source # Maven stage. FROM maven:3-openjdk-11-slim as maven +ARG USER_ID ARG USER_NAME ARG HOME_DIR ARG SOURCE_DIR # Create the group (use a high ID to attempt to avoid conflits). -RUN groupadd -g 3001 $USER_NAME +RUN groupadd -g $USER_ID $USER_NAME # Create the user (use a high ID to attempt to avoid conflits). -RUN useradd -d $HOME_DIR -m -u 3001 -g 3001 $USER_NAME +RUN useradd -d $HOME_DIR -m -u $USER_ID -g $USER_ID $USER_NAME # Update the system. -RUN apt update && apt upgrade -y +RUN apt-get update && apt-get upgrade -y # Set deployment directory. WORKDIR $SOURCE_DIR -# Setup work directory sticky bit. -RUN chown 3001:3001 -R $HOME_DIR +# Copy files over. +COPY ./pom.xml ./pom.xml +COPY ./src ./src + +# Assign file permissions. +RUN chown -R ${USER_ID}:${USER_ID} ${SOURCE_DIR} # Login as user. USER $USER_NAME -# Copy files over. -COPY --chown=3001:3001 ./pom.xml ./pom.xml -COPY --chown=3001:3001 ./src ./src - # Build. RUN ["mvn", "package", "-Pjar", "-DskipTests=true"] +# Copy over the built artifact. +COPY ./target/ROOT.jar $HOME_DIR/iriif.jar + # Switch to Normal JRE Stage. FROM openjdk:11-jre-slim as runtime +ARG USER_ID ARG USER_NAME ARG HOME_DIR ARG SOURCE_DIR +# Create the group (use a high ID to attempt to avoid conflits). +RUN groupadd -g $USER_ID $USER_NAME + +# Create the user (use a high ID to attempt to avoid conflits). +RUN useradd -d $HOME_DIR -m -u $USER_ID -g $USER_ID $USER_NAME + # Login as user. USER $USER_NAME @@ -47,7 +59,7 @@ USER $USER_NAME WORKDIR $HOME_DIR # Copy over the built artifact from the maven image. -COPY --chown=3001:3001 --from=maven $SOURCE_DIR/target/ROOT.jar ./iriif.jar +COPY --from=maven $SOURCE_DIR/target/ROOT.jar ./iriif.jar # Run java command. CMD ["java", "-jar", "./iriif.jar"] From 175920f0665d0cce51456e50213d7a31086ecef9 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 29 Apr 2022 14:16:29 -0500 Subject: [PATCH 11/18] Issue 110: When building Jar files, must specify repackage. This is done either adding repackage to the pom.xml or by adding to the command line, like this: ``` mvn clean package spring-boot:repackage -Pjar -DskipTests=true ``` This is spring and it should be transparent, so add it to the pom.i --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index be01a1e..8d81a72 100644 --- a/pom.xml +++ b/pom.xml @@ -238,6 +238,13 @@ org.springframework.boot spring-boot-maven-plugin + + + + repackage + + + From e13b9e364f180f18b45b5496e38ebf56bd1ebb47 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 29 Apr 2022 14:28:57 -0500 Subject: [PATCH 12/18] Issue 110: The CMD docker command is doing nothing. Change it to RUN until such time CMD can be figured out. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b691228..b59d0c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,4 +62,4 @@ WORKDIR $HOME_DIR COPY --from=maven $SOURCE_DIR/target/ROOT.jar ./iriif.jar # Run java command. -CMD ["java", "-jar", "./iriif.jar"] +RUN ["java", "-jar", "./iriif.jar"] From 081b5b84d5c9a94b0d93a1152d8c6c97afdbdeb7 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 29 Apr 2022 15:46:37 -0500 Subject: [PATCH 13/18] Issue 110: The CMD docker command is intended to be run at container start and not build. This is why nothing happens. Revert the change and put CMD back. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b59d0c2..b691228 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,4 +62,4 @@ WORKDIR $HOME_DIR COPY --from=maven $SOURCE_DIR/target/ROOT.jar ./iriif.jar # Run java command. -RUN ["java", "-jar", "./iriif.jar"] +CMD ["java", "-jar", "./iriif.jar"] From 94dbbe401ac59114e14e26111d70d61bca8f5667 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 29 Apr 2022 16:18:06 -0500 Subject: [PATCH 14/18] Issue 110: Circular reference is no longer happening. --- src/main/resources/application.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e48a030..2bb06c0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -22,10 +22,6 @@ spring: profiles: active: production include: dspace, fedora - main: - - # Circular bean dependency between appWebMvcConfig and userRepoImpl. - allow-circular-references: true messaging: channels: From 2007755100691202fd3fb60f63717af5c29fea15 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Mon, 2 May 2022 13:04:41 -0500 Subject: [PATCH 15/18] Issue 110: Tweak log settings. Move `file:` yaml property up to be alphabetical in ordering. Increase verbosity of logging to `WARN`. We probably want to see any warnings when running tests as they may matter. --- src/test/resources/application.yml | 6 +++--- src/test/resources/logback-test.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 2c3f36c..07796f7 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -4,14 +4,14 @@ server: # (is overwritten by logback-test.xml) logging: + file: + name: logs/ir-iiif-service-test.log level: com.zaxxer: ERROR - edu.tamu.iiif: ERROR + edu.tamu.iiif: WARN org: hibernate: OFF springframework: ERROR - file: - name: logs/ir-iiif-service-test.log spring: redis: diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 7a8929b..f6a703d 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -4,7 +4,7 @@ - + From 84ef278f0203953ae18e76883eb7dd4e23a650d9 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Mon, 2 May 2022 13:05:55 -0500 Subject: [PATCH 16/18] Issue 110: Remove `as runtime`. The `as runtime` is not being used. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b691228..7ad491b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,7 +40,7 @@ RUN ["mvn", "package", "-Pjar", "-DskipTests=true"] COPY ./target/ROOT.jar $HOME_DIR/iriif.jar # Switch to Normal JRE Stage. -FROM openjdk:11-jre-slim as runtime +FROM openjdk:11-jre-slim ARG USER_ID ARG USER_NAME ARG HOME_DIR From e647e962cf7b1b4d65609ea8287e4e09e6f45fc8 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Mon, 2 May 2022 14:04:35 -0500 Subject: [PATCH 17/18] Issue 110: Remove spurious COPY command that is sometimes causing problems. Update the SOURCE_DIR as it doesn't need the leading slash. The copy over build artifact in the maven stage is not used. Remove it. --- Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7ad491b..15022f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ ARG USER_ID=3001 ARG USER_NAME=iriifservice ARG HOME_DIR=/$USER_NAME -ARG SOURCE_DIR=/$HOME_DIR/source +ARG SOURCE_DIR=$HOME_DIR/source # Maven stage. FROM maven:3-openjdk-11-slim as maven @@ -36,9 +36,6 @@ USER $USER_NAME # Build. RUN ["mvn", "package", "-Pjar", "-DskipTests=true"] -# Copy over the built artifact. -COPY ./target/ROOT.jar $HOME_DIR/iriif.jar - # Switch to Normal JRE Stage. FROM openjdk:11-jre-slim ARG USER_ID From 5f624af6008a0fc493288be04f942d6a4f2af639 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Tue, 3 May 2022 10:30:28 -0500 Subject: [PATCH 18/18] Issue 110: Remove bracket notation from RUN mvn command. Do this for consistency reasons. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 15022f3..5a534b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,7 @@ RUN chown -R ${USER_ID}:${USER_ID} ${SOURCE_DIR} USER $USER_NAME # Build. -RUN ["mvn", "package", "-Pjar", "-DskipTests=true"] +RUN mvn package -Pjar -DskipTests=true # Switch to Normal JRE Stage. FROM openjdk:11-jre-slim