2 * Copyright 2020 Fujitsu Limited.
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
15 package org.onap.holmes.common.aai;
17 import com.google.gson.JsonObject;
18 import com.google.gson.JsonParser;
19 import org.easymock.EasyMock;
21 import org.junit.rules.ExpectedException;
22 import org.junit.runner.RunWith;
23 import org.onap.holmes.common.aai.config.AaiConfig;
24 import org.onap.holmes.common.config.MicroServiceConfig;
25 import org.onap.holmes.common.utils.JerseyClient;
26 import org.powermock.api.easymock.PowerMock;
27 import org.powermock.core.classloader.annotations.PowerMockIgnore;
28 import org.powermock.core.classloader.annotations.PrepareForTest;
29 import org.powermock.modules.junit4.PowerMockRunner;
30 import org.powermock.reflect.Whitebox;
32 import javax.ws.rs.client.Entity;
33 import javax.ws.rs.core.MultivaluedHashMap;
34 import javax.ws.rs.core.MultivaluedMap;
36 import java.util.HashMap;
39 import static org.easymock.EasyMock.anyObject;
40 import static org.junit.Assert.assertEquals;
41 import static org.onap.holmes.common.config.MicroServiceConfig.MSB_ADDR;
43 @RunWith(PowerMockRunner.class)
44 @PowerMockIgnore("javax.net.ssl.*")
45 @PrepareForTest({AaiQueryMdons.class, MicroServiceConfig.class})
46 public class AaiQueryMdonsTest {
49 public ExpectedException thrown = ExpectedException.none();
51 private static AaiQueryMdons aaiMdonsQuery = AaiQueryMdons.newInstance();
52 private static MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
54 private static JsonObject data;
56 private static final String AAI_ADDR = "https://aai.onap:8443/aai/v19/";
59 public static void beforeClass() {
60 System.setProperty(MSB_ADDR, "127.0.0.1:80");
61 System.setProperty("ENABLE_ENCRYPT", "true");
63 File file = new File(AaiQueryMdonsTest.class.getClassLoader().getResource("./aai-mdons.json").getFile());
64 BufferedReader reader = null;
66 reader = new BufferedReader(new FileReader(file));
67 StringBuilder sb = new StringBuilder();
68 reader.lines().forEach(l -> sb.append(l));
69 data = JsonParser.parseString(sb.toString()).getAsJsonObject();
70 } catch (FileNotFoundException e) {
72 } catch (IOException e) {
78 } catch (IOException e) {
84 headers.add("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
85 headers.add("X-FromAppId", AaiConfig.X_FROMAPP_ID);
86 headers.add("Authorization", AaiConfig.getAuthenticationCredentials());
87 headers.add("Accept", "application/json");
88 headers.add("Content-Type", "application/json");
93 public void before() {
94 Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
100 PowerMock.resetAll();
104 public void testProcessPnf() throws Exception {
105 String pnfUrl = AAI_ADDR + "network/pnfs/pnf/test1?depth=all";
106 String domainService = AAI_ADDR
107 + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/789";
108 PowerMock.resetAll();
110 aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
111 PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("pnf-depth-all").toString());
112 PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", domainService)
113 .andReturn(data.get("get-domain-service").toString());
115 PowerMock.replayAll();
116 Map<String, String> accessMap = aaiMdonsQuery.processPnf("test1");
117 PowerMock.verifyAll();
118 Map<String, String> verifyMap = new HashMap<>();
119 verifyMap.put("123", "access-service");
120 assertEquals(accessMap, verifyMap);
124 public void testGetPnfName() throws Exception {
125 String pnfUrl = AAI_ADDR + "network/pnfs?pnf-id=test1-id";
127 Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
129 aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
130 PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("get-pnf-by-id").toString());
131 PowerMock.replayAll();
132 String pnfName = Whitebox.invokeMethod(aaiMdonsQuery, "getPnfNameFromPnfId", "test1-id");
134 PowerMock.verifyAll();
135 assertEquals(pnfName, "test1");
140 public void testUpdatelinksAccess() throws Exception {
141 Map<String, String> accessMap = new HashMap<>();
142 accessMap.put("123", "access-service");
143 String accessService = AAI_ADDR
144 + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/123";
145 String linkUrl = AAI_ADDR + "network/logical-links/logical-link/link1";
148 "{\"link-name\":\"link1\",\"in-maint\":false,\"link-type\":\"inter-domain\",\"available-capacity\":\"ODU2\",\"resource-version\":\"1584338211407\",\"operational-status\":\"down\"}";
150 aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
152 JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
153 PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
154 EasyMock.expect(mockedClient.headers(anyObject(Map.class))).andReturn(mockedClient);
155 EasyMock.expect(mockedClient.put(anyObject(String.class), anyObject(Entity.class))).andReturn("");
157 PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", accessService)
158 .andReturn(data.get("get-access-service").toString());
159 PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", linkUrl).andReturn(data.get("get-inter-link").toString());
161 PowerMock.replayAll();
162 Whitebox.invokeMethod(aaiMdonsQuery, "updateLinksForAccessService", accessMap);
164 PowerMock.verifyAll();