aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-distribution-client/src/test/java/org/onap/sdc/http/SdcConnectorClientTest.java
blob: 7b46f337583415f0b7d7653dd30c4e0c7f973323 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package org.onap.sdc.http;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.onap.sdc.impl.DistributionClientResultImpl;
import org.onap.sdc.api.asdc.RegistrationRequest;
import org.onap.sdc.api.consumer.IConfiguration;
import org.onap.sdc.utils.Pair;

import com.att.nsa.apiClient.credentials.ApiCredential;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import fj.data.Either;

public class SdcConnectorClientTest {
	private Gson gson = new GsonBuilder().create();
	private static final String MOCK_ENV = "MockEnv";
	private static final String MOCK_API_KEY = "MockApikey";
	private static HttpAsdcClient httpClient = Mockito.mock(HttpAsdcClient.class);
	private static IConfiguration configuration = Mockito.mock(IConfiguration.class);
	private static ApiCredential apiCredential = Mockito.mock(ApiCredential.class);
	private static HttpAsdcResponse httpAsdcResponse = Mockito.mock(HttpAsdcResponse.class);
	@SuppressWarnings("unchecked")
	private static Either<TopicRegistrationResponse, DistributionClientResultImpl> mockResponse = Mockito
			.mock(Either.class);
	private static Map<String, String> mockHeaders = new HashMap<>();
	Pair<HttpAsdcResponse, CloseableHttpResponse> mockPair = new Pair<>(httpAsdcResponse, null);
	private HttpEntity lastHttpEntity = null;

	private static SdcConnectorClient asdcClient = Mockito.spy(new SdcConnectorClient());

	@BeforeClass
	public static void beforeClass() {
		asdcClient.setConfiguration(configuration);
		asdcClient.setHttpClient(httpClient);
		when(apiCredential.getApiKey()).thenReturn(MOCK_API_KEY);
		when(httpAsdcResponse.getStatus()).thenReturn(HttpStatus.SC_OK);

		doReturn(mockHeaders).when(asdcClient).addHeadersToHttpRequest(Mockito.anyString());
		doReturn(mockResponse).when(asdcClient).parseRegistrationResponse(httpAsdcResponse);
	}

	@Before
	public void beforeMethod() {
		Mockito.reset(configuration, httpClient);
		lastHttpEntity = null;
		when(configuration.getEnvironmentName()).thenReturn(MOCK_ENV);


		doAnswer(new Answer<Pair<HttpAsdcResponse, CloseableHttpResponse>>() {
			@Override
			public Pair<HttpAsdcResponse, CloseableHttpResponse> answer(InvocationOnMock invocation) throws Throwable {
				lastHttpEntity = invocation.getArgumentAt(1, HttpEntity.class);
				return mockPair;
			}
		}).when(httpClient).postRequest(Mockito.eq(AsdcUrls.POST_FOR_TOPIC_REGISTRATION), Mockito.any(HttpEntity.class),
				Mockito.eq(mockHeaders), Mockito.eq(false));
	}

	@Test
	public void testConsumeProduceStatusTopicFalse() throws UnsupportedOperationException, IOException {

		testConsumeProduceStatusTopic(false);

	}

	@Test
	public void testConsumeProduceStatusTopicTrue() throws UnsupportedOperationException, IOException {
		
		testConsumeProduceStatusTopic(true);
		
	}
	
	private void testConsumeProduceStatusTopic(final boolean isConsumeProduceStatusFlag) throws IOException {
		when(configuration.isConsumeProduceStatusTopic()).thenReturn(isConsumeProduceStatusFlag);
		asdcClient.registerAsdcTopics(apiCredential);
		verify(httpClient, times(1)).postRequest(Mockito.eq(AsdcUrls.POST_FOR_TOPIC_REGISTRATION),
				Mockito.any(HttpEntity.class), Mockito.eq(mockHeaders), Mockito.eq(false));
		assertNotNull(lastHttpEntity);
		RegistrationRequest actualRegRequest = gson.fromJson(IOUtils.toString(lastHttpEntity.getContent(), StandardCharsets.UTF_8), RegistrationRequest.class);
		RegistrationRequest expectedRegRequest = gson.fromJson(excpectedStringBody(isConsumeProduceStatusFlag), RegistrationRequest.class);

		assertTrue(actualRegRequest.getApiPublicKey().equals(expectedRegRequest.getApiPublicKey()));
		assertTrue(actualRegRequest.getDistrEnvName().equals(expectedRegRequest.getDistrEnvName()));
		assertTrue(actualRegRequest.getIsConsumerToSdcDistrStatusTopic()
				.equals(expectedRegRequest.getIsConsumerToSdcDistrStatusTopic()));
	}
	
	

	private String excpectedStringBody(boolean isConsumeProduceStatusTopic) {
		String stringBodyTemplate = "{\r\n" + "  \"apiPublicKey\": \"MockApikey\",\r\n"
				+ "  \"distrEnvName\": \"MockEnv\",\r\n" + "  \"isConsumerToSdcDistrStatusTopic\": %s\r\n" + "}";
		return String.format(stringBodyTemplate, isConsumeProduceStatusTopic);

	}
}