aboutsummaryrefslogtreecommitdiffstats
path: root/rest-services/aai-client/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'rest-services/aai-client/src/test')
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java63
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/AaiHttpClientFactoryTest.java73
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/AbstractHttpClientTest.java47
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiGetServiceInstanceClientTest.java59
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiHttpGetClientTest.java87
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/patch/AaiHttpPatchClientTest.java103
-rw-r--r--rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/put/AaiHttpPutClientTest.java95
-rw-r--r--rest-services/aai-client/src/test/resources/server.pass0
-rw-r--r--rest-services/aai-client/src/test/resources/server.pkcs1228
-rw-r--r--rest-services/aai-client/src/test/resources/trust.pass0
-rw-r--r--rest-services/aai-client/src/test/resources/trust.pkcs12bin0 -> 1096 bytes
11 files changed, 555 insertions, 0 deletions
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java
new file mode 100644
index 00000000..ce8c07f6
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/AaiClientConfigurations.java
@@ -0,0 +1,63 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.ImmutableAaiClientConfiguration;
+
+public final class AaiClientConfigurations {
+
+ private AaiClientConfigurations() {
+ }
+
+ public static AaiClientConfiguration secureConfiguration() {
+ return secureConfiguration(new HashMap<>());
+ }
+
+ public static AaiClientConfiguration secureConfiguration(Map<String, String> headers) {
+ return validConfiguration(headers, true);
+ }
+
+ public static AaiClientConfiguration insecureConfiguration() {
+ return validConfiguration(new HashMap<>(), false);
+ }
+
+ private static AaiClientConfiguration validConfiguration(Map<String, String> headers, boolean secure) {
+ return new ImmutableAaiClientConfiguration.Builder()
+ .aaiHost("sample-host")
+ .aaiUserName("sample-username")
+ .aaiUserPassword("sample-password")
+ .aaiIgnoreSslCertificateErrors(false)
+ .trustStorePath("/trust.pkcs12")
+ .trustStorePasswordPath("/trust.pass")
+ .keyStorePath("/server.pkcs12")
+ .keyStorePasswordPath("/server.pass")
+ .enableAaiCertAuth(secure)
+ .aaiHeaders(headers)
+ .aaiProtocol("sample-protocol")
+ .aaiPort(8080)
+ .aaiBasePath("sample-base-path")
+ .aaiPnfPath("sample-pnf-path")
+ .aaiServiceInstancePath("sample-instance-path")
+ .build();
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/AaiHttpClientFactoryTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/AaiHttpClientFactoryTest.java
new file mode 100644
index 00000000..7f5096e5
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/AaiHttpClientFactoryTest.java
@@ -0,0 +1,73 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.insecureConfiguration;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.secureConfiguration;
+
+import io.netty.handler.ssl.SslContext;
+import javax.net.ssl.SSLException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.onap.dcaegen2.services.sdk.security.ssl.SecurityKeys;
+import org.onap.dcaegen2.services.sdk.security.ssl.SslFactory;
+
+class AaiHttpClientFactoryTest {
+
+ private SslFactory sslFactory;
+
+ @BeforeEach
+ void setup() {
+ this.sslFactory = Mockito.mock(SslFactory.class);
+ }
+
+ @Test
+ void createRequestDiagnosticContext_shouldReturnNonNullContext() {
+ assertNotNull(AaiHttpClientFactory.createRequestDiagnosticContext());
+ }
+
+ @Test
+ void build_onSecureConfigurationProvided_shouldReturnSecureClient() throws SSLException {
+ when(sslFactory.createSecureClientContext(any())).thenReturn(SslContext.newClientContext());
+ AaiHttpClientFactory cut = new AaiHttpClientFactory(secureConfiguration(), sslFactory);
+
+ cut.build();
+
+ verify(sslFactory).createSecureClientContext(any(SecurityKeys.class));
+ verify(sslFactory, never()).createInsecureClientContext();
+ }
+
+ @Test
+ void build_onInsecureConfigurationProvided_shouldReturnInsecureClient() throws SSLException {
+ when(sslFactory.createInsecureClientContext()).thenReturn(SslContext.newClientContext());
+ AaiHttpClientFactory cut = new AaiHttpClientFactory(insecureConfiguration(), sslFactory);
+
+ cut.build();
+
+ verify(sslFactory).createInsecureClientContext();
+ verify(sslFactory, never()).createSecureClientContext(any(SecurityKeys.class));
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/AbstractHttpClientTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/AbstractHttpClientTest.java
new file mode 100644
index 00000000..ee428713
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/AbstractHttpClientTest.java
@@ -0,0 +1,47 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service.http;
+
+import static org.mockito.Mockito.mock;
+
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.CloudHttpClient;
+import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse;
+import org.onap.dcaegen2.services.sdk.rest.services.model.AaiModel;
+import org.onap.dcaegen2.services.sdk.rest.services.model.JsonBodyBuilder;
+import org.onap.dcaegen2.services.sdk.rest.services.uri.URI;
+
+public class AbstractHttpClientTest {
+
+ protected final AaiModel aaiModel = () -> "test-id";
+ protected final CloudHttpClient httpClient = mock(CloudHttpClient.class);
+ protected final JsonBodyBuilder bodyBuilder = mock(JsonBodyBuilder.class);
+ protected final HttpResponse response = mock(HttpResponse.class);
+
+
+ protected String constructAaiUri(AaiClientConfiguration configuration, String pnfName) {
+ return new URI.URIBuilder()
+ .scheme(configuration.aaiProtocol())
+ .host(configuration.aaiHost())
+ .port(configuration.aaiPort())
+ .path(configuration.aaiBasePath() + configuration.aaiPnfPath() + "/" + pnfName)
+ .build().toString();
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiGetServiceInstanceClientTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiGetServiceInstanceClientTest.java
new file mode 100644
index 00000000..d6199acd
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiGetServiceInstanceClientTest.java
@@ -0,0 +1,59 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service.http.get;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.secureConfiguration;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.jupiter.api.Test;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.AbstractHttpClientTest;
+import org.onap.dcaegen2.services.sdk.rest.services.model.AaiServiceInstanceQueryModel;
+import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+class AaiGetServiceInstanceClientTest extends AbstractHttpClientTest {
+
+ @Test
+ void getAaiResponse_shouldCallGetMethod_withGivenAaiHeaders() {
+ AaiServiceInstanceQueryModel model = mock(AaiServiceInstanceQueryModel.class);
+ Map<String, String> headers = new HashMap<>();
+ AaiGetServiceInstanceClient cut = new AaiGetServiceInstanceClient(secureConfiguration(headers), httpClient);
+
+ given(httpClient.get(anyString(), any(RequestDiagnosticContext.class), anyMap()))
+ .willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(model))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient)
+ .get(anyString(), any(RequestDiagnosticContext.class), eq(headers));
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiHttpGetClientTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiHttpGetClientTest.java
new file mode 100644
index 00000000..1dddc27e
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/get/AaiHttpGetClientTest.java
@@ -0,0 +1,87 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service.http.get;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.verify;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.secureConfiguration;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.jupiter.api.Test;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.AbstractHttpClientTest;
+import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+class AaiHttpGetClientTest extends AbstractHttpClientTest {
+
+ @Test
+ void getAaiResponse_shouldCallGetMethod_withGivenAaiHeaders() {
+ Map<String, String> headers = new HashMap<>();
+ AaiHttpGetClient cut = new AaiHttpGetClient(secureConfiguration(headers), httpClient);
+
+ given(httpClient.get(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap()
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).get(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ eq(headers)
+ );
+ }
+
+ @Test
+ void getAaiResponse_shouldCallGetMethod_withProperUri() {
+ AaiClientConfiguration configuration = secureConfiguration();
+ String expectedUri = constructAaiUri(configuration, aaiModel.getCorrelationId());
+ AaiHttpGetClient cut = new AaiHttpGetClient(configuration, httpClient);
+
+ given(httpClient.get(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap()
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).get(
+ eq(expectedUri),
+ any(RequestDiagnosticContext.class),
+ anyMap()
+ );
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/patch/AaiHttpPatchClientTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/patch/AaiHttpPatchClientTest.java
new file mode 100644
index 00000000..302395ac
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/patch/AaiHttpPatchClientTest.java
@@ -0,0 +1,103 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service.http.patch;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.verify;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.secureConfiguration;
+
+import io.vavr.collection.HashMap;
+import io.vavr.collection.Map;
+import org.junit.jupiter.api.Test;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.AbstractHttpClientTest;
+import org.onap.dcaegen2.services.sdk.rest.services.model.AaiModel;
+import org.onap.dcaegen2.services.sdk.rest.services.model.JsonBodyBuilder;
+import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+class AaiHttpPatchClientTest extends AbstractHttpClientTest {
+
+ private final Map<String, String> DEFAULT_PATCH_HEADERS =
+ HashMap.of("Content-Type", "application/merge-patch+json");
+
+ @Test
+ void getAaiResponse_shouldCallPatchMethod_withGivenHeaders_combinedWithContentType() {
+
+ Map<String, String> headers = HashMap.of("sample-key", "sample-value");
+ Map<String, String> expectedHeaders = DEFAULT_PATCH_HEADERS.merge(headers);
+ AaiHttpPatchClient cut =
+ new AaiHttpPatchClient(secureConfiguration(headers.toJavaMap()), bodyBuilder, httpClient);
+
+ given(httpClient.patch(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ any(JsonBodyBuilder.class),
+ any(AaiModel.class)
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).patch(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ eq(expectedHeaders.toJavaMap()),
+ eq(bodyBuilder),
+ eq(aaiModel)
+ );
+ }
+
+ @Test
+ void getAaiResponse_shouldCallPatchMethod_withProperUri() {
+ AaiClientConfiguration configuration = secureConfiguration();
+ String expectedUri = constructAaiUri(configuration, aaiModel.getCorrelationId());
+ AaiHttpPatchClient cut = new AaiHttpPatchClient(configuration, bodyBuilder, httpClient);
+
+ given(httpClient.patch(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ any(JsonBodyBuilder.class),
+ any(AaiModel.class)
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).patch(
+ eq(expectedUri),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ eq(bodyBuilder),
+ eq(aaiModel)
+ );
+ }
+}
diff --git a/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/put/AaiHttpPutClientTest.java b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/put/AaiHttpPutClientTest.java
new file mode 100644
index 00000000..7ce47a00
--- /dev/null
+++ b/rest-services/aai-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/aai/client/service/http/put/AaiHttpPutClientTest.java
@@ -0,0 +1,95 @@
+/*
+ * ============LICENSE_START=======================================================
+ * DCAEGEN2-SERVICES-SDK
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA 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.dcaegen2.services.sdk.rest.services.aai.client.service.http.put;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.verify;
+import static org.onap.dcaegen2.services.sdk.rest.services.aai.client.AaiClientConfigurations.secureConfiguration;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.jupiter.api.Test;
+import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.AbstractHttpClientTest;
+import org.onap.dcaegen2.services.sdk.rest.services.model.AaiModel;
+import org.onap.dcaegen2.services.sdk.rest.services.model.JsonBodyBuilder;
+import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+class AaiHttpPutClientTest extends AbstractHttpClientTest {
+
+ @Test
+ void getAaiResponse_shouldCallPutMethod_withGivenAaiHeaders() {
+ Map<String, String> headers = new HashMap<>();
+ AaiHttpPutClient cut = new AaiHttpPutClient(secureConfiguration(headers), bodyBuilder, "", httpClient);
+
+ given(httpClient.put(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ any(JsonBodyBuilder.class),
+ any(AaiModel.class)
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).put(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ eq(headers),
+ eq(bodyBuilder),
+ eq(aaiModel)
+ );
+ }
+
+ @Test
+ void getAaiResponse_shouldCallPutMethod_withProperUri() {
+ String uri = "test-uri";
+ AaiHttpPutClient cut = new AaiHttpPutClient(secureConfiguration(), bodyBuilder, uri, httpClient);
+
+ given(httpClient.put(
+ anyString(),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ any(JsonBodyBuilder.class),
+ any(AaiModel.class)
+ )).willReturn(Mono.just(response));
+
+ StepVerifier
+ .create(cut.getAaiResponse(aaiModel))
+ .expectNext(response)
+ .verifyComplete();
+
+ verify(httpClient).put(
+ eq(uri),
+ any(RequestDiagnosticContext.class),
+ anyMap(),
+ eq(bodyBuilder),
+ eq(aaiModel)
+ );
+ }
+}
diff --git a/rest-services/aai-client/src/test/resources/server.pass b/rest-services/aai-client/src/test/resources/server.pass
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/rest-services/aai-client/src/test/resources/server.pass
diff --git a/rest-services/aai-client/src/test/resources/server.pkcs12 b/rest-services/aai-client/src/test/resources/server.pkcs12
new file mode 100644
index 00000000..40e25932
--- /dev/null
+++ b/rest-services/aai-client/src/test/resources/server.pkcs12
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC225TsqniWsqLQ
+YmOmmZxlpzBwhzU4pXiRfIZBUuT+ajPQVFx+zVv6ecEjXEFgQfNR60VZ3h6Zus32
+bVD7XKlwuL6U5P7Mt1k/K5RFPrr9WGFT/K9I8V69VmfLBnMTo4YjDEaTKiJqAC0W
+pN6Jm7ZLXzHNmHmm+CdufeNcKQ0kKFI0/C5V4X8o2wYo7ptC2PnKrLleapNqq86N
+GSw+pudWmlhMnsrEP9yWp2Crz2QynbwGDfvfLnenf643ViCV8MRBqdX6VtKfnxzl
+IYzAdWuYJDwyKVOvDBOgWSd8SWW9aqly0qZFIrTCFmUlsecTYXIn7J8VsoWX54Xf
+Bp8VNy3/AgMBAAECggEATzN4o7GKnast/hg/lU9/gEAUKQlHMgvp1woalHy1FsUl
+QBzqGzoTlr/Zudkhr/Gg1GCVH0Gn+2n//7aFlvohoeNDGPa+rijUDRpxFDUBhO4c
+6eXOfkedg2DDgBqBCYaQeOm+P8vGMCd3YBF1GiFJqgfHaIecWYeufJsmOSrGuFvK
+1OvHpvg4/FLLQqgVcVO812kD4UwSOKnZVnPuZ3pzQviUZvO8ZxI/LkzQB1EdH6u3
+rBtiGslYkiKl5cGpH39/Dx2nKhHfvSnkfsm7koB00Bl41yy61GPwdl4XUwg8LUhX
+TbsuoIPGTJX/2FUMn0UnAdDJm29hE4eyHyYOhew8gQKBgQDlAeUcnFr9uxe0i7cg
+6ctJlNIKJjlA1tH4qIMEytdn06STo9g2j8X5HVE0FX/3+gAYDtEVICTF66w8Y474
+aeazvf+TCfkxtEOiH2afvaNkIkfzKR0ceB48DECT0DCF7xha5rJVf/W4GpCz2WkZ
+ojDzw5ZVvzbx/FaF9A/IseJ63wKBgQDMaSjiephhdlCERGPdwWMg3AfthEX/VHM0
+YugbVjjYjDbn2pMkntW2hUuVXP8HD+9DnQZo0/c/hxe28Q5b+2fjZephdctnY8tL
+XWbaEerM2lxEjmrpA4jYTBZJ9nMsxkEYHGHb5I586aS2YaZ12e7DoKMFdl0EZzvi
+zGPIxSzQ4QKBgAxVv8t8uIH2M96rr997+FEsTOvzBx5w87pbCUOW0WdsRO8W4ix+
+LgGvDJKrncrzklG5apWit5hZi1ttWWQUADMqRrvay6tbtFDlNBfilQxttEZqroC8
+D5TYbBoKGrL8H+m1h2GHlOqns6ecTEbvL4fRvyU7OXBrURXCAZ+jxTktAoGACbQI
+O9AEAcRjCBRTBUjT0tB/E9hOllNE8LytNfb+1dC6HoFysK9Vh8eGEf4LISOxgO0o
+S7ucJgjcqFODEfy6LsI8wQmdcTf8g4RYiIuHMNhAvwRfsNX5HgNmn3Yye3Khzmoy
+fwS3etiAeCPkif2hZunuMykuOzJHVnnLVtF9UiECgYEA41d7FgUcnfPIyA5xLg7K
+lRgjFMsc68uzoCBQww2kio0HNJpdOPBJlg6oHHfYKriv2r9793jETRVwjSNPlKZb
+vqm9yhnbXuahYBZSgdo2W+NbhP6IbJ0vrF4t9g6byjancQptaCjNIr9St9g+Ugly
+8m0n3gIT/+Lr+it63cgk8SA=
+-----END PRIVATE KEY-----
diff --git a/rest-services/aai-client/src/test/resources/trust.pass b/rest-services/aai-client/src/test/resources/trust.pass
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/rest-services/aai-client/src/test/resources/trust.pass
diff --git a/rest-services/aai-client/src/test/resources/trust.pkcs12 b/rest-services/aai-client/src/test/resources/trust.pkcs12
new file mode 100644
index 00000000..01b61373
--- /dev/null
+++ b/rest-services/aai-client/src/test/resources/trust.pkcs12
Binary files differ