AAI data query changes for the MDONS CLosed
[holmes/common.git] / holmes-actions / src / test / java / org / onap / holmes / common / aai / AaiQueryMdonsTest.java
1 /**
2  * Copyright 2020 Fujitsu Limited.
3  * <p>
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
6  * <p>
7  * http://www.apache.org/licenses/LICENSE-2.0
8  * <p>
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
12  * the License.
13  */
14
15 package org.onap.holmes.common.aai;
16
17 import static org.junit.Assert.assertEquals;
18 import static org.onap.holmes.common.config.MicroServiceConfig.MSB_ADDR;
19
20 import java.io.BufferedReader;
21 import java.io.File;
22 import java.io.FileNotFoundException;
23 import java.io.FileReader;
24 import java.io.IOException;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import javax.ws.rs.core.MultivaluedHashMap;
29 import javax.ws.rs.core.MultivaluedMap;
30
31 import org.apache.http.HttpResponse;
32 import org.apache.http.client.methods.HttpGet;
33 import org.junit.After;
34 import org.junit.Before;
35 import org.junit.BeforeClass;
36 import org.junit.Rule;
37 import org.junit.Test;
38 import org.junit.rules.ExpectedException;
39 import org.junit.runner.RunWith;
40 import org.onap.holmes.common.aai.config.AaiConfig;
41 import org.onap.holmes.common.config.MicroServiceConfig;
42 import org.onap.holmes.common.utils.HttpsUtils;
43 import org.powermock.api.easymock.PowerMock;
44 import org.powermock.core.classloader.annotations.PowerMockIgnore;
45 import org.powermock.core.classloader.annotations.PrepareForTest;
46 import org.powermock.modules.junit4.PowerMockRunner;
47 import org.powermock.reflect.Whitebox;
48
49 import com.google.gson.JsonObject;
50 import com.google.gson.JsonParser;
51
52 @RunWith(PowerMockRunner.class)
53 @PowerMockIgnore("javax.net.ssl.*")
54 @PrepareForTest({AaiQueryMdons.class, HttpsUtils.class, MicroServiceConfig.class, HttpGet.class})
55 public class AaiQueryMdonsTest {
56
57     @Rule
58     public ExpectedException thrown = ExpectedException.none();
59
60     private static AaiQueryMdons aaiMdonsQuery = AaiQueryMdons.newInstance();
61     private static MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
62
63     private static JsonObject data;
64
65     private HttpResponse httpResponse;
66     private static final String AAI_ADDR = "https://aai.onap:8443/aai/v19/";
67
68     @BeforeClass
69     public static void beforeClass() {
70         System.setProperty(MSB_ADDR, "127.0.0.1:80");
71         System.setProperty("ENABLE_ENCRYPT", "true");
72
73         File file = new File(AaiQueryMdonsTest.class.getClassLoader().getResource("./aai-mdons.json").getFile());
74         BufferedReader reader = null;
75         try {
76             reader = new BufferedReader(new FileReader(file));
77             StringBuilder sb = new StringBuilder();
78             reader.lines().forEach(l -> sb.append(l));
79             data = JsonParser.parseString(sb.toString()).getAsJsonObject();
80         } catch (FileNotFoundException e) {
81             // Do nothing
82         } catch (IOException e) {
83             // Do nothing
84         } finally {
85             if (reader != null) {
86                 try {
87                     reader.close();
88                 } catch (IOException e) {
89                     // Do nothing
90                 }
91             }
92         }
93
94         headers.add("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
95         headers.add("X-FromAppId", AaiConfig.X_FROMAPP_ID);
96         headers.add("Authorization", AaiConfig.getAuthenticationCredentials());
97         headers.add("Accept", "application/json");
98         headers.add("Content-Type", "application/json");
99
100     }
101
102     @Before
103     public void before() {
104         httpResponse = PowerMock.createMock(HttpResponse.class);
105         Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
106
107     }
108
109     @After
110     public void after() {
111         PowerMock.resetAll();
112     }
113
114     @Test
115     public void testProcessPnf() throws Exception {
116         String pnfUrl = AAI_ADDR + "network/pnfs/pnf/test1?depth=all";
117         String domainService = AAI_ADDR
118                 + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/789";
119         PowerMock.resetAll();
120
121         aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
122         PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("pnf-depth-all").toString());
123         PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", domainService)
124                 .andReturn(data.get("get-domain-service").toString());
125
126         PowerMock.replayAll();
127         Map<String, String> accessMap = aaiMdonsQuery.processPnf("test1");
128         PowerMock.verifyAll();
129         Map<String, String> verifyMap = new HashMap<>();
130         verifyMap.put("123", "access-service");
131         assertEquals(accessMap, verifyMap);
132     }
133
134     @Test
135     public void testGetPnfName() throws Exception {
136         String pnfUrl = AAI_ADDR + "network/pnfs?pnf-id=test1-id";
137
138         Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
139
140         aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
141         PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("get-pnf-by-id").toString());
142         PowerMock.replayAll();
143         String pnfName = Whitebox.invokeMethod(aaiMdonsQuery, "getPnfNameFromPnfId", "test1-id");
144
145         PowerMock.verifyAll();
146         assertEquals(pnfName, "test1");
147
148     }
149
150     @Test
151     public void testUpdatelinksAccess() throws Exception {
152         Map<String, String> accessMap = new HashMap<>();
153         accessMap.put("123", "access-service");
154         String accessService = AAI_ADDR
155                 + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/123";
156         String linkUrl = AAI_ADDR + "network/logical-links/logical-link/link1";
157
158         String response =
159                 "{\"link-name\":\"link1\",\"in-maint\":false,\"link-type\":\"inter-domain\",\"available-capacity\":\"ODU2\",\"resource-version\":\"1584338211407\",\"operational-status\":\"down\"}";
160
161         aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse", "put");
162
163         PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", accessService)
164                 .andReturn(data.get("get-access-service").toString());
165         PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", linkUrl).andReturn(data.get("get-inter-link").toString());
166         PowerMock.expectPrivate(aaiMdonsQuery, "put", linkUrl, response).andReturn(httpResponse);
167
168         PowerMock.replayAll();
169         Whitebox.invokeMethod(aaiMdonsQuery, "updateLinksForAccessService", accessMap);
170
171         PowerMock.verifyAll();
172
173     }
174
175 }