basic authentication for AAI Producer Client 17/50317/4 2.0.0-ONAP beijing 2.0.0-ONAP
authorpwielebs <piotr.wielebski@nokia.com>
Tue, 5 Jun 2018 10:19:28 +0000 (12:19 +0200)
committerLusheng Ji <lji@research.att.com>
Tue, 5 Jun 2018 14:35:53 +0000 (14:35 +0000)
Change-Id: I087db36dc3c60015f91de5fde49358b18564ab9e
Issue-ID: DCAEGEN2-451
Signed-off-by: pwielebs <piotr.wielebski@nokia.com>
prh-aai-client/src/main/java/org/onap/dcaegen2/services/prh/service/AAIProducerClient.java
prh-aai-client/src/test/java/org/onap/dcaegen2/services/prh/service/AAIProducerClientTest.java
prh-app-server/config/prh_endpoints.json
prh-app-server/src/test/resources/prh_endpoints.json

index dce326e..f9c2708 100644 (file)
@@ -35,6 +35,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Base64;
 import java.util.Map;
 import java.util.Optional;
 
@@ -49,6 +50,8 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
     private final Integer aaiHostPortNumber;
     private final String aaiPath;
     private final Map<String,String> aaiHeaders;
+    private final String aaiUserName;
+    private final String aaiUserPassword;
 
 
     public AAIProducerClient(AAIClientConfiguration aaiClientConfiguration) {
@@ -58,6 +61,8 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
         aaiHostPortNumber = aaiClientConfiguration.aaiHostPortNumber();
         aaiPath = aaiClientConfiguration.aaiBasePath() + aaiClientConfiguration.aaiPnfPath();
         aaiHeaders = aaiClientConfiguration.aaiHeaders();
+        aaiUserName = aaiClientConfiguration.aaiUserName();
+        aaiUserPassword = aaiClientConfiguration.aaiUserPassword();
     }
 
 
@@ -71,7 +76,6 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
                 return Optional.empty();
             }
         });
-
     }
 
     private Optional<HttpRequestBase> createRequest(ConsumerDmaapModel consumerDmaapModel) throws URISyntaxException {
@@ -98,11 +102,17 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
         });
     }
 
-    private HttpPatch createHttpPatch(URI extendedURI, String jsonBody) throws UnsupportedEncodingException {
+    HttpPatch createHttpPatch(URI extendedURI, String jsonBody) throws UnsupportedEncodingException {
         HttpPatch httpPatch = new HttpPatch(extendedURI);
         httpPatch.setEntity( new StringEntity(jsonBody));
         aaiHeaders.forEach(httpPatch::addHeader);
         httpPatch.addHeader("Content-Type", "application/merge-patch+json");
+        httpPatch.addHeader("Authorization", "Basic " + encode());
         return httpPatch;
     }
+
+    String encode() throws UnsupportedEncodingException {
+        return Base64.getEncoder().encodeToString((this.aaiUserName + ":" + this.aaiUserPassword)
+                .getBytes("UTF-8"));
+    }
 }
index 594df66..1ef9018 100644 (file)
@@ -32,6 +32,7 @@ import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModelForUnitTest;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
@@ -98,6 +99,29 @@ public class AAIProducerClientTest {
         assertNotNull(testedObject.getHttpResponse(consumerDmaapModel));
     }
 
+    @Test
+    void encode_shouldCreateEncodedString_whenUserAndPasswordAreSet() throws UnsupportedEncodingException {
+        // given
+        String expected = "UFJIOlBSSA==";
+        // when
+        String result = testedObject.encode();
+        // then
+        assertNotNull(result);
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void createHttpPatch_shouldContainAuthorizationBasicValue() throws UnsupportedEncodingException {
+        // given
+        String expected = "Authorization: Basic UFJIOlBSSA==";
+        // when
+        HttpPatch patch = testedObject.createHttpPatch(URI.create("localhost"), "{}");
+        // then
+        assertNotNull(patch);
+        assertEquals(expected, patch.getLastHeader("Authorization").toString());
+    }
+
+
     private static void setField() throws NoSuchFieldException, IllegalAccessException {
         Field field = testedObject.getClass().getDeclaredField("closeableHttpClient");
         field.setAccessible(true);
index 8aed235..f5f7959 100644 (file)
@@ -29,8 +29,8 @@
         "aaiHost": "localhost",
         "aaiHostPortNumber": 8080,
         "aaiProtocol": "https",
-        "aaiUserName": "admin",
-        "aaiUserPassword": "admin",
+        "aaiUserName": "AAI",
+        "aaiUserPassword": "AAI",
         "aaiIgnoreSSLCertificateErrors": true,
         "aaiBasePath": "/aai/v12",
         "aaiPnfPath": "/network/pnfs/pnf",
@@ -38,8 +38,7 @@
           "X-FromAppId": "prh",
           "X-TransactionId": "9999",
           "Accept": "application/json",
-          "Real-Time": "true",
-          "Authorization": "Basic QUFJOkFBSQ=="
+          "Real-Time": "true"
         }
       }
     }
index 0fe4b27..b45ce48 100644 (file)
@@ -6,16 +6,15 @@
         "aaiHostPortNumber": 8080,
         "aaiIgnoreSSLCertificateErrors": true,
         "aaiProtocol": "https",
-        "aaiUserName": "admin",
-        "aaiUserPassword": "admin",
+        "aaiUserName": "AAI",
+        "aaiUserPassword": "AAI",
         "aaiBasePath": "/aai/v11",
         "aaiPnfPath": "/network/pnfs/pnf",
         "aaiHeaders": {
           "X-FromAppId": "prh",
           "X-TransactionId": "9999",
           "Accept": "application/json",
-          "Real-Time": "true",
-          "Authorization": "Basic QUFJOkFBSQ=="
+          "Real-Time": "true"
         }
       }
     },