From bf9a5fca506b49d7e41e55f361cee46e08a42fe1 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Fri, 28 Feb 2025 17:06:56 -0500 Subject: [PATCH] add ASIE unit tests --- .../inteligr8/alfresco/asie/AsieClient.java | 24 +++++ .../asie/AsieClientConfiguration.java | 54 +++++++++++ .../alfresco/asie/AssertionUtil.java | 27 ++++++ .../asie/api/AbstractApiUnitTest.java | 23 +++++ .../asie/api/CoreAdminReindexUnitTest.java | 34 +++++++ .../asie/api/CoreAdminStatusUnitTest.java | 96 +++++++++++++++++++ 6 files changed, 258 insertions(+) create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClient.java create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClientConfiguration.java create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/AssertionUtil.java create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/api/AbstractApiUnitTest.java create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminReindexUnitTest.java create mode 100644 asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminStatusUnitTest.java diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClient.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClient.java new file mode 100644 index 0000000..aa13e1d --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClient.java @@ -0,0 +1,24 @@ +package com.inteligr8.alfresco.asie; + +import java.net.URL; + +import com.inteligr8.alfresco.asie.api.CoreAdminApi; +import com.inteligr8.rs.ClientJerseyImpl; + +public class AsieClient extends ClientJerseyImpl { + + public AsieClient(String hostname) { + super(new AsieClientConfiguration().withHostname(hostname)); + this.register(); + } + + public AsieClient(URL baseUrl) { + super(new AsieClientConfiguration().withBaseUrl(baseUrl.toString())); + this.register(); + } + + public CoreAdminApi getCoreAdminApi() { + return this.getApi(this.getConfig().createAuthorizationFilter(), CoreAdminApi.class); + } + +} diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClientConfiguration.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClientConfiguration.java new file mode 100644 index 0000000..1540b8e --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AsieClientConfiguration.java @@ -0,0 +1,54 @@ +package com.inteligr8.alfresco.asie; + +import java.io.IOException; +import java.util.Arrays; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.inteligr8.rs.AuthorizationFilter; +import com.inteligr8.rs.ClientJerseyConfiguration; + +import jakarta.ws.rs.client.ClientRequestContext; + +public class AsieClientConfiguration implements ClientJerseyConfiguration { + + private Logger logger = LoggerFactory.getLogger(AsieClientConfiguration.class); + private String baseUrl = "http://locahost:8983/solr"; + private String searchSecret = "alfresco-secret"; + + @Override + public String getBaseUrl() { + return this.baseUrl; + } + + public AsieClientConfiguration withBaseUrl(String baseUrl) { + this.baseUrl = baseUrl; + return this; + } + + public AsieClientConfiguration withHostname(String hostname) { + this.baseUrl = "http://" + hostname + ":8983/solr"; + return this; + } + + public AsieClientConfiguration withSearchSecret(String searchSecret) { + this.searchSecret = searchSecret; + return this; + } + + @Override + public AuthorizationFilter createAuthorizationFilter() { + if (this.searchSecret == null) + return null; + + return new AuthorizationFilter() { + @Override + public void filter(ClientRequestContext requestContext) throws IOException { + logger.trace("Adding ASIE secret for authorization ..."); + requestContext.getHeaders().addAll("X-Alfresco-Search-Secret", Arrays.asList(searchSecret)); + } + }; + } + +} diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/AssertionUtil.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AssertionUtil.java new file mode 100644 index 0000000..350c345 --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/AssertionUtil.java @@ -0,0 +1,27 @@ +package com.inteligr8.alfresco.asie; + +import org.junit.jupiter.api.Assertions; + +public class AssertionUtil { + + public static T assertNotNull(T obj) { + Assertions.assertNotNull(obj); + return obj; + } + + public static T assertNotNull(T obj, String message) { + Assertions.assertNotNull(obj, message); + return obj; + } + + public static void assertType(Object obj, Class type) { + Assertions.assertNotNull(obj); + Assertions.assertEquals(type, obj.getClass()); + } + + public static void assertType(Object obj, Class type, String message) { + Assertions.assertNotNull(obj, message); + Assertions.assertEquals(type, obj.getClass(), message); + } + +} diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/AbstractApiUnitTest.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/AbstractApiUnitTest.java new file mode 100644 index 0000000..3d6ac07 --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/AbstractApiUnitTest.java @@ -0,0 +1,23 @@ +package com.inteligr8.alfresco.asie.api; + +import java.net.MalformedURLException; + +import org.junit.jupiter.api.BeforeAll; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.inteligr8.alfresco.asie.AsieClient; + +public class AbstractApiUnitTest { + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + protected static AsieClient client; + protected static String defaultCore = "alfresco"; + + @BeforeAll + private static void init() throws MalformedURLException { + client = new AsieClient("localhost"); + } + +} diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminReindexUnitTest.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminReindexUnitTest.java new file mode 100644 index 0000000..0457f3f --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminReindexUnitTest.java @@ -0,0 +1,34 @@ +package com.inteligr8.alfresco.asie.api; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import com.inteligr8.alfresco.asie.AssertionUtil; +import com.inteligr8.alfresco.asie.model.ActionCoreResponse; +import com.inteligr8.alfresco.asie.model.core.ReindexRequest; +import com.inteligr8.solr.model.Action; +import com.inteligr8.solr.model.Action.Status; +import com.inteligr8.solr.model.Cores; +import com.inteligr8.solr.model.ResponseHeader; + +public class CoreAdminReindexUnitTest extends AbstractApiUnitTest { + + @Test + public void reindex() { + CoreAdminApi api = client.getCoreAdminApi(); + + ActionCoreResponse response = api.reindex( + new ReindexRequest() + .withCore(defaultCore)); + Assertions.assertNotNull(response); + + ResponseHeader responseHeader = AssertionUtil.assertNotNull(response.getResponseHeader()); + Assertions.assertEquals(0, responseHeader.getStatus()); + + Cores cores = AssertionUtil.assertNotNull(response.getCores()); + Action action = AssertionUtil.assertNotNull(cores.getByCore(defaultCore)); + + Assertions.assertEquals(Status.Scheduled, action.getStatus()); + } + +} diff --git a/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminStatusUnitTest.java b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminStatusUnitTest.java new file mode 100644 index 0000000..fb35228 --- /dev/null +++ b/asie-api/src/test/java/com/inteligr8/alfresco/asie/api/CoreAdminStatusUnitTest.java @@ -0,0 +1,96 @@ +package com.inteligr8.alfresco.asie.api; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import com.inteligr8.alfresco.asie.AsieClient; +import com.inteligr8.alfresco.asie.AssertionUtil; +import com.inteligr8.alfresco.asie.model.core.Report; +import com.inteligr8.alfresco.asie.model.core.ReportRequest; +import com.inteligr8.alfresco.asie.model.core.ReportResponse; +import com.inteligr8.alfresco.asie.model.core.Summary; +import com.inteligr8.alfresco.asie.model.core.SummaryRequest; +import com.inteligr8.alfresco.asie.model.core.SummaryResponse; +import com.inteligr8.solr.model.CoreMetadata; +import com.inteligr8.solr.model.Cores; +import com.inteligr8.solr.model.ResponseHeader; +import com.inteligr8.solr.model.core.StatusRequest; +import com.inteligr8.solr.model.core.StatusResponse; + +import jakarta.ws.rs.ProcessingException; + +public class CoreAdminStatusUnitTest extends AbstractApiUnitTest { + + @Test + public void noHost() { + AsieClient client = new AsieClient("doesnotexist"); + CoreAdminApi api = client.getCoreAdminApi(); + + Assertions.assertThrows(ProcessingException.class, () -> { + api.getStatus( + new StatusRequest() + .withCore(defaultCore)); + }); + } + + @Test + public void summary() { + CoreAdminApi api = client.getCoreAdminApi(); + + SummaryResponse response = api.getSummary( + new SummaryRequest() + .withCore(defaultCore)); + Assertions.assertNotNull(response); + + ResponseHeader responseHeader = AssertionUtil.assertNotNull(response.getResponseHeader()); + Assertions.assertEquals(0, responseHeader.getStatus()); + + Cores cores = AssertionUtil.assertNotNull(response.getCores()); + Summary summary = AssertionUtil.assertNotNull(cores.getByCore(defaultCore)); + + AssertionUtil.assertType(summary.getByField("Active"), Boolean.class); + AssertionUtil.assertType(summary.getByField("Number of Searchers"), Integer.class); + AssertionUtil.assertType(summary.getByField("Last Index TX Commit Time"), Long.class); + AssertionUtil.assertType(summary.getByField("Last Index TX Commit Date"), String.class); + } + + @Test + public void status() { + CoreAdminApi api = client.getCoreAdminApi(); + + StatusResponse response = api.getStatus( + new StatusRequest() + .withCore(defaultCore)); + Assertions.assertNotNull(response); + + ResponseHeader responseHeader = AssertionUtil.assertNotNull(response.getResponseHeader()); + Assertions.assertEquals(0, responseHeader.getStatus()); + + Cores cores = AssertionUtil.assertNotNull(response.getCores()); + CoreMetadata core = AssertionUtil.assertNotNull(cores.getByCore(defaultCore)); + + Assertions.assertEquals(core, core.getName()); + Assertions.assertNotNull(core.getStartDateTime()); + } + + @Test + public void report() { + CoreAdminApi api = client.getCoreAdminApi(); + + ReportResponse response = api.getReport( + new ReportRequest() + .withCore(defaultCore)); + Assertions.assertNotNull(response); + + ResponseHeader responseHeader = AssertionUtil.assertNotNull(response.getResponseHeader()); + Assertions.assertEquals(0, responseHeader.getStatus()); + + Cores cores = AssertionUtil.assertNotNull(response.getCores()); + Report report = AssertionUtil.assertNotNull(cores.getByCore(defaultCore)); + + AssertionUtil.assertType(report.getByField("Index error count"), Integer.class); + AssertionUtil.assertType(report.getByField("Last indexed transaction commit time"), Long.class); + AssertionUtil.assertType(report.getByField("Last indexed transaction commit date"), String.class); + } + +}