Merge "Add JUnit for direct Sonar Nexus REST interface"
authorJorge Hernandez <jh1730@att.com>
Wed, 25 Apr 2018 14:34:54 +0000 (14:34 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 25 Apr 2018 14:34:54 +0000 (14:34 +0000)
BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java
BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestWrapper.java
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/NexusRestWrapperTest.java
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactHitTest.java [new file with mode: 0644]
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactLinkTest.java [new file with mode: 0644]
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactTest.java [new file with mode: 0644]
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusRepositoryTest.java [new file with mode: 0644]
BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusSearchResultTest.java [new file with mode: 0644]

index eec3739..1288b59 100644 (file)
@@ -45,11 +45,12 @@ public class NexusRestSearchParameters {
     private static final String COUNT_QUERY_PARAM          = "count";
     private static final String REPOSITORY_ID_QUERY_PARAM = "repositoryId";
 
-    private enum SearchType {
-        KEYWORD,    // Search using a keyword
-        FILTER,     // Search using a group ID, artifact ID, version, packaging type, and/or classifier filter
-        CLASS_NAME, // Search for a class name
-        CHECKSUM    // Search for artifacts matching a certain checksum
+    /** The type of searches that can be performed. */
+    public enum SearchType {
+        KEYWORD,    /** Search using a keyword. */
+        FILTER,     /** Search using a group ID, artifact ID, version, packaging type, and/or classifier filter. */
+        CLASS_NAME, /** Search for a class name. */
+        CHECKSUM    /** Search for artifacts matching a certain checksum. */
     }
 
     // The type of search to perform
@@ -76,15 +77,19 @@ public class NexusRestSearchParameters {
      * Specify searching using a keyword.
      * 
      * @param keyword The keyword to search for
+     * @return this object to allow chaining of methods
      * @throws NexusRestWrapperException on invalid keywords
      */
-    public void useKeywordSearch(final String keyword) throws NexusRestWrapperException {
+    public NexusRestSearchParameters useKeywordSearch(final String keyword) throws NexusRestWrapperException {
+        clearSearchParameters();
+
         if (isNullOrBlank(keyword)) {
             throw new NexusRestWrapperException("keyword must be specified for Nexus keyword searches");
         }
 
         searchType = SearchType.KEYWORD;
         this.keyword = keyword;
+        return this;
     }
 
     /**
@@ -95,14 +100,18 @@ public class NexusRestSearchParameters {
      * @param version The version to filter on
      * @param packagingType The packaging type to filter on
      * @param classifier The classifier to filter on
+     * @return this object to allow chaining of methods
      * @throws NexusRestWrapperException on invalid filters
      */
-    public void useFilterSearch(final String groupId, final String artifactId, final String version,
-            final String packagingType, final String classifier) throws NexusRestWrapperException {
+    public NexusRestSearchParameters useFilterSearch(final String groupId, final String artifactId,
+                    final String version, final String packagingType, final String classifier)
+                                    throws NexusRestWrapperException {
+        clearSearchParameters();
+
         if (isNullOrBlank(groupId) && isNullOrBlank(artifactId) && isNullOrBlank(version)
-                && isNullOrBlank(packagingType) && isNullOrBlank(classifier)) {
+                        && isNullOrBlank(packagingType) && isNullOrBlank(classifier)) {
             throw new NexusRestWrapperException(
-                    "at least one filter parameter must be specified for Nexus keyword searches");
+                            "at least one filter parameter must be specified for Nexus filter searches");
         }
 
         searchType = SearchType.FILTER;
@@ -111,36 +120,45 @@ public class NexusRestSearchParameters {
         this.version = version;
         this.packagingType = packagingType;
         this.classifier = classifier;
+        return this;
     }
 
     /**
      * Specify searching using a class name.
      * 
      * @param className The class name to search for
+     * @return this object to allow chaining of methods
      * @throws NexusRestWrapperException on invalid className
      */
-    public void useClassNameSearch(final String className) throws NexusRestWrapperException {
+    public NexusRestSearchParameters useClassNameSearch(final String className) throws NexusRestWrapperException {
+        clearSearchParameters();
+
         if (isNullOrBlank(className)) {
-            throw new NexusRestWrapperException("className must be specified for Nexus keyword searches");
+            throw new NexusRestWrapperException("className must be specified for Nexus class name searches");
         }
 
         searchType = SearchType.CLASS_NAME;
         this.className = className;
+        return this;
     }
 
     /**
      * Specify searching using a checksum.
      * 
      * @param checksum The checksum to search for
+     * @return this object to allow chaining of methods
      * @throws NexusRestWrapperException on invalid checksum
      */
-    public void useChecksumSearch(final String checksum) throws NexusRestWrapperException {
+    public NexusRestSearchParameters useChecksumSearch(final String checksum) throws NexusRestWrapperException {
+        clearSearchParameters();
+
         if (isNullOrBlank(checksum)) {
-            throw new NexusRestWrapperException("checksum must be specified for Nexus keyword searches");
+            throw new NexusRestWrapperException("checksum must be specified for Nexus checksum searches");
         }
 
         searchType = SearchType.CHECKSUM;
         this.checksum = checksum;
+        return this;
     }
 
     /**
@@ -152,7 +170,7 @@ public class NexusRestSearchParameters {
      */
     public NexusRestSearchParameters setRepositoryId(String repositoryId) throws NexusRestWrapperException {
         if (isNullOrBlank(repositoryId)) {
-            throw new NexusRestWrapperException("repositoryId must be specified for Nexus keyword searches");
+            throw new NexusRestWrapperException("a repositoryId must be specified");
         }
 
         this.repositoryId = repositoryId;
@@ -168,7 +186,7 @@ public class NexusRestSearchParameters {
      */
     public NexusRestSearchParameters setFrom(int from) throws NexusRestWrapperException {
         if (from < 0) {
-            throw new NexusRestWrapperException("from cannot be less than 0 for Nexus keyword searches");
+            throw new NexusRestWrapperException("from cannot be less than 0 when from is specified");
         }
 
         this.from = from;
@@ -184,7 +202,7 @@ public class NexusRestSearchParameters {
      */
     public NexusRestSearchParameters setCount(int count) throws NexusRestWrapperException {
         if (count < 1) {
-            throw new NexusRestWrapperException("count cannot be less than 1 for Nexus keyword searches");
+            throw new NexusRestWrapperException("count cannot be less than 1 when count is specified");
         }
 
         this.count = count;
@@ -200,13 +218,17 @@ public class NexusRestSearchParameters {
      */
     public URI getSearchUri(final String nexusServerUrl) throws NexusRestWrapperException {
         if (isNullOrBlank(nexusServerUrl)) {
-            throw new NexusRestWrapperException("nexusServerUrl must be specified for Nexus keyword searches");
+            throw new NexusRestWrapperException("nexusServerUrl must be specified for the search URI");
+        }
+
+        if (searchType == null) {
+            throw new NexusRestWrapperException("search parameters have not been set");
         }
 
         // Use a URI builder to build up the search URI
         UriBuilder uriBuilder = UriBuilder
-                .fromPath(nexusServerUrl)
-                .path(NEXUS_LUCENE_SEARCH_PATH);
+                        .fromPath(nexusServerUrl)
+                        .path(NEXUS_LUCENE_SEARCH_PATH);
 
         switch (searchType) {
             case KEYWORD:
@@ -226,7 +248,7 @@ public class NexusRestSearchParameters {
                 break;
 
             default:
-                throw new NexusRestWrapperException("search parameters have not been specified for the NExus search");
+                throw new NexusRestWrapperException("search parameters have not been specified for the Nexus search");
         }
 
         // Add the repository ID query parameter is required
@@ -258,19 +280,19 @@ public class NexusRestSearchParameters {
      * @param uriBuilder The builder to add query parameters to
      */
     private void getFitlerSearchUri(UriBuilder uriBuilder) {
-        if (null != groupId) {
+        if (!isNullOrBlank(groupId)) {
             uriBuilder.queryParam(GROUP_ID_QUERY_PARAM, groupId);
         }
-        if (null != artifactId) {
+        if (!isNullOrBlank(artifactId)) {
             uriBuilder.queryParam(ARTIFACT_ID_QUERY_PARAM, artifactId);
         }
-        if (null != version) {
+        if (!isNullOrBlank(version)) {
             uriBuilder.queryParam(VERSION_QUERY_PARAM, version);
         }
-        if (null != packagingType) {
+        if (!isNullOrBlank(packagingType)) {
             uriBuilder.queryParam(PACKAGING_TYPE_QUERY_PARAM, packagingType);
         }
-        if (null != classifier) {
+        if (!isNullOrBlank(classifier)) {
             uriBuilder.queryParam(CLASSIFIER_QUERY_PARAM, classifier);
         }
     }
@@ -346,11 +368,34 @@ public class NexusRestSearchParameters {
         return null == parameter || parameter.trim().isEmpty();
     }
 
+    /**
+     * Clear all search parameters.
+     * 
+     */
+    private void clearSearchParameters() {
+        searchType = null;
+
+        keyword = null;
+        groupId = null;
+        artifactId = null;
+        version = null;
+        packagingType = null;
+        classifier = null;
+        className = null;
+        checksum = null;
+
+        repositoryId = null;
+
+        // Scope filters
+        from = -1;
+        count = -1;
+    }
+
     @Override
     public String toString() {
         return "NexusRestSearchParameters [searchType=" + searchType + ", keyword=" + keyword + ", groupId=" + groupId
-                + ", artifactId=" + artifactId + ", version=" + version + ", packagingType=" + packagingType
-                + ", classifier=" + classifier + ", className=" + className + ", checksum=" + checksum
-                + ", repositoryId=" + repositoryId + ", from=" + from + ", count=" + count + "]";
+                        + ", artifactId=" + artifactId + ", version=" + version + ", packagingType=" + packagingType
+                        + ", classifier=" + classifier + ", className=" + className + ", checksum=" + checksum
+                        + ", repositoryId=" + repositoryId + ", from=" + from + ", count=" + count + "]";
     }
 }
index afa3e37..9ee7598 100644 (file)
@@ -53,25 +53,6 @@ public class NexusRestWrapper {
     private String nexusUser;
     private String nexusPassword;
 
-    /**
-     * Instantiates a new Nexus REST agent.
-     *
-     * @param nexusServerUrl the URL of the Nexus server as a string
-     * @throws NexusRestWrapperException on errors on the Nexus server URL
-     */
-    public NexusRestWrapper(final String nexusServerUrl) throws NexusRestWrapperException {
-        LOGGER.trace("new NexusRestWrapper: nexusServerUrl=" + nexusServerUrl);
-
-        if (isNullOrBlank(nexusServerUrl)) {
-            throw new NexusRestWrapperException("nexusServerUrl must be specified for the Nexus server");
-        }
-
-        this.nexusServerUrl = nexusServerUrl;
-
-        // Create a client for RST calls towards the Nexus server
-        client = ClientBuilder.newClient();
-    }
-
     /**
      * Instantiates a new Nexus REST agent with credentials.
      *
@@ -81,15 +62,17 @@ public class NexusRestWrapper {
      * @throws NexusRestWrapperException on parameter exceptions
      */
     public NexusRestWrapper(final String nexusServerUrl, final String nexusUser, final String nexusPassword)
-            throws NexusRestWrapperException {
+                    throws NexusRestWrapperException {
         LOGGER.trace("new NexusRestWrapper: nexusServerUrl=" + nexusServerUrl);
 
         if (isNullOrBlank(nexusServerUrl)) {
             throw new NexusRestWrapperException("nexusServerUrl must be specified for the Nexus server");
         }
 
-        if (isNullOrBlank(nexusUser) || isNullOrBlank(nexusPassword)) {
-            throw new NexusRestWrapperException("nexuusUser and nexusPassword must both be specified");
+        if ((isNullOrBlank(nexusUser) && !isNullOrBlank(nexusPassword))
+                        || (!isNullOrBlank(nexusUser) && isNullOrBlank(nexusPassword))) {
+            throw new NexusRestWrapperException(
+                            "if either nexusUser or nexusPassword are specified, both must be specified");
         }
 
         this.nexusServerUrl = nexusServerUrl;
@@ -124,10 +107,13 @@ public class NexusRestWrapper {
      *         Exceptions accessing the Nexus server
      */
     public NexusSearchResult findArtifact(final NexusRestSearchParameters searchParameters)
-            throws NexusRestWrapperException {
-
+                    throws NexusRestWrapperException {
         LOGGER.trace("new search with search parameters: " + searchParameters);
 
+        if (null == searchParameters) {
+            throw new NexusRestWrapperException("searchParameters may not be null");
+        }
+
         // Issue the REST request to perform the search
         URI searchUri = searchParameters.getSearchUri(nexusServerUrl);
 
@@ -138,14 +124,22 @@ public class NexusRestWrapper {
         getAuthorizationHeader(requestBuilder);
 
         // Issue the REST request
-        Response response = requestBuilder.get();
+        Response response = null;
+        try {
+            response = requestBuilder.get();
+        } catch (Exception e) {
+            String message = "search to URI " + searchUri.toString() + " failed with message: " + e.getMessage();
+            LOGGER.warn(message, e);
+            throw new NexusRestWrapperException(message, e);
+        }
 
         LOGGER.debug("search response is: " + response.toString());
 
         // Check the HTTP response code for the search
         if (Response.Status.OK.getStatusCode() != response.getStatus()) {
-            LOGGER.warn("search to URI " + searchUri.toString() + "failed, response was: " + response.toString());
-            throw new NexusRestWrapperException("query to Nexus failed with message: " + response.toString());
+            String message = "search to URI " + searchUri.toString() + " failed, response was: " + response.toString();
+            LOGGER.warn(message);
+            throw new NexusRestWrapperException(message);
         }
 
         try {
@@ -160,23 +154,22 @@ public class NexusRestWrapper {
 
             return searchResult;
         } catch (Exception e) {
-            LOGGER.warn("processing of result from search to URI " + searchUri
-                    + " failed with message " + e.getMessage());
-            throw new NexusRestWrapperException(
-                    "processing of result from query to Nexus failed with message: " + e.getMessage(), e);
+            String message = "processing of result from query to Nexus failed with message: " + e.getMessage();
+            LOGGER.warn(message, e);
+            throw new NexusRestWrapperException(message, e);
         }
     }
 
     /**
      * Get the authorisation header for the user name and password.
-     * @param requestBuilder the request builder to add authorization to
+     * @param requestBuilder the request builder to add authorisation to
      * @return the authorisation header
      */
     private Builder getAuthorizationHeader(Builder requestBuilder) {
         if (null != nexusUser && null != nexusPassword) {
             String userPassString = nexusUser + ":" + nexusPassword;
             requestBuilder.header("Authorization", "Basic "
-                    + java.util.Base64.getEncoder().encodeToString(userPassString.getBytes()));
+                            + java.util.Base64.getEncoder().encodeToString(userPassString.getBytes()));
         }
 
         return requestBuilder;
@@ -210,18 +203,18 @@ public class NexusRestWrapper {
         NexusRepository repository = repositoryMap.get(artifact.getArtifactHits().get(0).getRepositoryId());
 
         return new StringBuilder()
-                .append(repository.getRepositoryUrl())
-                .append("/content/")
-                .append(artifact.getGroupId().replace('.', '/'))
-                .append('/')
-                .append(artifact.getArtifactId())
-                .append('/')
-                .append(artifact.getVersion())
-                .append('/')
-                .append(artifact.getArtifactId())
-                .append('-')
-                .append(artifact.getVersion())
-                .toString();
+                        .append(repository.getRepositoryUrl())
+                        .append("/content/")
+                        .append(artifact.getGroupId().replace('.', '/'))
+                        .append('/')
+                        .append(artifact.getArtifactId())
+                        .append('/')
+                        .append(artifact.getVersion())
+                        .append('/')
+                        .append(artifact.getArtifactId())
+                        .append('-')
+                        .append(artifact.getVersion())
+                        .toString();
     }
 
     /**
index 489014e..bc666fb 100644 (file)
 
 package org.onap.policy.brms.api.nexus;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.util.List;
 
@@ -31,22 +34,371 @@ import org.onap.policy.brms.api.nexus.NexusRestWrapperException;
 import org.onap.policy.brms.api.nexus.pojo.NexusArtifact;
 
 public class NexusRestWrapperTest {
+    @Test
+    public void testRestWrapperConstructionErrors() throws NexusRestWrapperException {
+        try {
+            new NexusRestWrapper(null, null, null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
+        }
+
+        try {
+            new NexusRestWrapper("", null, null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
+        }
+
+        try {
+            new NexusRestWrapper("   ", null, null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
+        }
+
+        try {
+            new NexusRestWrapper("\n\t", null, null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
+        }
+
+        try {
+            new NexusRestWrapper("server", "user", null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("if either nexusUser or nexusPassword are specified, both must be specified", e.getMessage());
+        }
+
+        try {
+            new NexusRestWrapper("server", null, "pass");
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("if either nexusUser or nexusPassword are specified, both must be specified", e.getMessage());
+        }
+
+        NexusRestWrapper wrapper = new NexusRestWrapper("http://localhost:99999", "user", "pass");
+        assertNotNull(wrapper);
+
+        try {
+            wrapper.findArtifact(null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("searchParameters may not be null", e.getMessage());
+        }
+
+        try {
+            wrapper.findArtifact(new NexusRestSearchParameters());
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("search parameters have not been set", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+            searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("search to URI http://localhost:99999/service/local/lucene/search?g=org.onap.policy.engine "
+                            + "failed with message: java.lang.IllegalArgumentException: port out of range:99999",
+                            e.getMessage());
+        }
+
+        wrapper.close();
+        wrapper = new NexusRestWrapper("http://localhost:57344", "user", "pass");
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+            searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("search to URI http://localhost:57344/service/local/lucene/search?g=org.onap.policy.engine "
+                            + "failed with message: java.net.ConnectException: Connection refused (Connection refused)",
+                            e.getMessage());
+        }
+
+        wrapper.close();
+        wrapper = new NexusRestWrapper("https://nexus.onap.org", "user", "pass");
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useFilterSearch("org.onap.policy.engine", null, "", null, null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("search to URI https://nexus.onap.org/service/local/lucene/search?g=org.onap.policy.engine "
+                            + "failed, response was: InboundJaxrsResponse{context=ClientResponse{method=GET, "
+                            + "uri=https://nexus.onap.org/service/local/lucene/search?g=org.onap.policy.engine, status=401, reason=Unauthorized}}",
+                            e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useFilterSearch(null, null, null, null, null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("at least one filter parameter must be specified for Nexus filter searches", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useKeywordSearch(null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("keyword must be specified for Nexus keyword searches", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useClassNameSearch(null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("className must be specified for Nexus class name searches", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useChecksumSearch(null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("checksum must be specified for Nexus checksum searches", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useKeywordSearch("BRMSGateway").setRepositoryId(null);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("a repositoryId must be specified", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useKeywordSearch("BRMSGateway").setFrom(-1);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("from cannot be less than 0 when from is specified", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useKeywordSearch("BRMSGateway").setCount(0);
+            wrapper.findArtifact(searchParameters);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("count cannot be less than 1 when count is specified", e.getMessage());
+        }
+
+        try {
+            NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+            searchParameters.useKeywordSearch("BRMSGateway");
+            searchParameters.getSearchUri(null);
+            fail("test shold throw an exception here");
+        } catch (NexusRestWrapperException e) {
+            assertEquals("nexusServerUrl must be specified for the search URI", e.getMessage());
+        }
+
+        wrapper.close();
+    }
 
     @Test
-    public void test() throws NexusRestWrapperException {
-        NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org");
-        
+    public void testGetters() throws NexusRestWrapperException {
         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
-        searchParameters.useFilterSearch("org.onap.policy.engine", "BRMSGateway", null, null, null);
         
-        List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        searchParameters.useKeywordSearch("BRMSGateway");
+        assertEquals(NexusRestSearchParameters.SearchType.KEYWORD, searchParameters.getSearchType());
+        assertEquals(null, searchParameters.getArtifactId());
+        assertEquals(null, searchParameters.getChecksum());
+        assertEquals(null, searchParameters.getClassName());
+        assertEquals(null, searchParameters.getClassifier());
+        assertEquals(-1, searchParameters.getCount());
+        assertEquals(-1, searchParameters.getFrom());
+        assertEquals(null, searchParameters.getGroupId());
+        assertEquals("BRMSGateway", searchParameters.getKeyword());
+        assertEquals(null, searchParameters.getPackagingType());
+        assertEquals(null, searchParameters.getRepositoryId());
+        assertEquals(null, searchParameters.getVersion());
         
+        searchParameters.useFilterSearch("org.onap.policy.engine", "BRMSGateway",
+                        "1.2.3", "jar", "jar-with-dependencies")
+            .setFrom(100).setCount(10).setRepositoryId("repository");
+        assertEquals(NexusRestSearchParameters.SearchType.FILTER, searchParameters.getSearchType());
+        assertEquals("BRMSGateway", searchParameters.getArtifactId());
+        assertEquals(null, searchParameters.getChecksum());
+        assertEquals(null, searchParameters.getClassName());
+        assertEquals("jar-with-dependencies", searchParameters.getClassifier());
+        assertEquals(10, searchParameters.getCount());
+        assertEquals(100, searchParameters.getFrom());
+        assertEquals("org.onap.policy.engine", searchParameters.getGroupId());
+        assertEquals(null, searchParameters.getKeyword());
+        assertEquals("jar", searchParameters.getPackagingType());
+        assertEquals("repository", searchParameters.getRepositoryId());
+        assertEquals("1.2.3", searchParameters.getVersion());
+
+        searchParameters.useClassNameSearch("BRMSGateway");
+        assertEquals(NexusRestSearchParameters.SearchType.CLASS_NAME, searchParameters.getSearchType());
+        assertEquals(null, searchParameters.getArtifactId());
+        assertEquals(null, searchParameters.getChecksum());
+        assertEquals("BRMSGateway", searchParameters.getClassName());
+        assertEquals(null, searchParameters.getClassifier());
+        assertEquals(-1, searchParameters.getCount());
+        assertEquals(-1, searchParameters.getFrom());
+        assertEquals(null, searchParameters.getGroupId());
+        assertEquals(null, searchParameters.getKeyword());
+        assertEquals(null, searchParameters.getPackagingType());
+        assertEquals(null, searchParameters.getRepositoryId());
+        assertEquals(null, searchParameters.getVersion());
+
+        searchParameters.useChecksumSearch("987654321");
+        assertEquals(NexusRestSearchParameters.SearchType.CHECKSUM, searchParameters.getSearchType());
+        assertEquals(null, searchParameters.getArtifactId());
+        assertEquals("987654321", searchParameters.getChecksum());
+        assertEquals(null, searchParameters.getClassName());
+        assertEquals(null, searchParameters.getClassifier());
+        assertEquals(-1, searchParameters.getCount());
+        assertEquals(-1, searchParameters.getFrom());
+        assertEquals(null, searchParameters.getGroupId());
+        assertEquals(null, searchParameters.getKeyword());
+        assertEquals(null, searchParameters.getPackagingType());
+        assertEquals(null, searchParameters.getRepositoryId());
+        assertEquals(null, searchParameters.getVersion());
+    }
+
+    @Test
+    public void testFilterSearch() throws NexusRestWrapperException {
+        NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
+
+        NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+        searchParameters.useFilterSearch("org.onap.policy.dorothy", null, null, null, null).setCount(1);
+        List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
         assertNotNull(foundArtifactList);
-        
-        for (NexusArtifact artifact: foundArtifactList) {
-            System.out.println(artifact.getUrlPath());
-        }
-        
+        assertEquals(0, foundArtifactList.size());
+
+        searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setFrom(2).setCount(2);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(2, foundArtifactList.size());
+
+        searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setFrom(2).setCount(2);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(2, foundArtifactList.size());
+
+        searchParameters.useFilterSearch(null, "BRMSGateway", null, null, null);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertTrue(foundArtifactList.size() > 2);
+
+        searchParameters.useFilterSearch(null, null, "1.2.3", null, null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch("org.onap.policy.engine", null, "1.1.2", null, null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch("org.onap.policy.engine", "BRMSGateway", "1.1.2", null, null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", null, null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", null).setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", "jar-with-dependencies").setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", "jar-with-dependencies")
+            .setCount(1).setRepositoryId("releases");
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        wrapper.close();
+    }
+
+    @Test
+    public void testKeywordSearch() throws NexusRestWrapperException {
+        NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
+
+        NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+        searchParameters.useKeywordSearch("TheWizardOfOz").setCount(1);
+        List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(0, foundArtifactList.size());
+
+        searchParameters.useKeywordSearch("BRMSGateway").setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        wrapper.close();
+    }
+
+    @Test
+    public void testClassNameSearch() throws NexusRestWrapperException {
+        NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
+
+        NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+        searchParameters.useClassNameSearch("TheWizardOfOz").setCount(1);
+        List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(0, foundArtifactList.size());
+
+        searchParameters.useClassNameSearch("BRMSGateway").setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
+        wrapper.close();
+    }
+
+    @Test
+    public void testChecksumSearch() throws NexusRestWrapperException {
+        NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
+
+        NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
+
+        searchParameters.useChecksumSearch("99999999999999").setCount(1);
+        List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(0, foundArtifactList.size());
+
+        searchParameters.useChecksumSearch("914acda2ce67de9b45d599109d6ad8357d01b217").setCount(1);
+        foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
+        assertNotNull(foundArtifactList);
+        assertEquals(1, foundArtifactList.size());
+
         wrapper.close();
     }
 }
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactHitTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactHitTest.java
new file mode 100644 (file)
index 0000000..f048846
--- /dev/null
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api.nexus.pojo;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class NexusArtifactHitTest {
+
+    @Test
+    public void testNexusArtifactHit() {
+        NexusArtifactHit artifactHit = new NexusArtifactHit();
+        
+        assertNull(artifactHit.getArtifactLinks());
+        assertNull(artifactHit.getRepositoryId());
+        
+        assertNotNull(artifactHit.toString());
+    }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactLinkTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactLinkTest.java
new file mode 100644 (file)
index 0000000..b0ae02e
--- /dev/null
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api.nexus.pojo;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class NexusArtifactLinkTest {
+
+    @Test
+    public void testNexusArtifactLink() {
+        NexusArtifactLink artifactLink = new NexusArtifactLink();
+        
+        assertNull(artifactLink.getClassifier());
+        assertNull(artifactLink.getExtension());
+        
+        assertNotNull(artifactLink.toString());
+    }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusArtifactTest.java
new file mode 100644 (file)
index 0000000..e8ddaab
--- /dev/null
@@ -0,0 +1,50 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api.nexus.pojo;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class NexusArtifactTest {
+
+    @Test
+    public void testNexusArtifact() {
+        NexusArtifact artifact = new NexusArtifact();
+        
+        assertNull(artifact.getGroupId());
+        assertNull(artifact.getArtifactId());
+        assertNull(artifact.getVersion());
+        assertNull(artifact.getHighlightedFragment());
+        assertNull(artifact.getLatestRelease());
+        assertNull(artifact.getLatestReleaseRepositoryId());
+        assertNull(artifact.getLatestSnapshot());
+        assertNull(artifact.getLatestSnapshotRepositoryId());
+        assertNull(artifact.getArtifactHits());
+        
+        artifact.setUrlPath("urlPath");
+        assertEquals("urlPath", artifact.getUrlPath());
+        
+        assertNotNull(artifact.toString());
+    }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusRepositoryTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusRepositoryTest.java
new file mode 100644 (file)
index 0000000..41f7103
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api.nexus.pojo;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class NexusRepositoryTest {
+
+    @Test
+    public void testNexusRepository() {
+        NexusRepository repository = new NexusRepository();
+        
+        assertNull(repository.getRepositoryId());
+        assertNull(repository.getRepositoryKind());
+        assertNull(repository.getRepositoryContentClass());
+        assertNull(repository.getRepositoryName());
+        assertNull(repository.getRepositoryPolicy());
+        assertNull(repository.getRepositoryUrl());
+        
+        assertNotNull(repository.toString());
+    }
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusSearchResultTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/nexus/pojo/NexusSearchResultTest.java
new file mode 100644 (file)
index 0000000..ba83a3a
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api.nexus.pojo;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class NexusSearchResultTest {
+
+    @Test
+    public void testNexusSearchResult() {
+        NexusSearchResult result = new NexusSearchResult();
+        
+        assertNull(result.getArtifactList());
+        assertEquals(0, result.getCount());
+        assertEquals(0, result.getFrom());
+        assertNull(result.getRepoDetailsList());
+        assertEquals(0, result.getTotalCount());
+        assertEquals(false, result.isCollapsed());
+        assertEquals(false, result.isTooManyResults());
+        
+        assertNotNull(result.toString());
+    }
+}