modify copyright year
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / util / RouteUtilTest.java
1 /**
2  * Copyright 2016-2017 ZTE, Inc. and others.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.msb.apiroute.wrapper.util;
17
18 import java.util.HashSet;
19 import java.util.Set;
20
21 import org.junit.Assert;
22 import org.junit.Test;
23 import org.junit.runner.RunWith;
24 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
25 import org.onap.msb.apiroute.api.Node;
26 import org.onap.msb.apiroute.api.RouteInfo;
27 import org.onap.msb.apiroute.api.RouteServer;
28 import org.onap.msb.apiroute.api.exception.UnprocessableEntityException;
29 import org.powermock.api.mockito.PowerMockito;
30 import org.powermock.core.classloader.annotations.PrepareForTest;
31 import org.powermock.modules.junit4.PowerMockRunner;
32
33 @RunWith(PowerMockRunner.class)
34 @PrepareForTest({ConfigUtil.class})
35 public class RouteUtilTest {
36
37   @Test
38   public void test_getPrefixedKey() {
39     Assert.assertEquals("msb:routing:test:v1", RouteUtil.getPrefixedKey("", "test", "v1"));
40     Assert.assertEquals("msb:5656:test:v1", RouteUtil.getPrefixedKey("5656", "test", "v1"));
41
42   }
43
44   @Test
45   public void test_getPrefixedKey4Host() {
46     Assert.assertEquals("msb:host:test:v1", RouteUtil.getPrefixedKey4Host("test", "v1"));
47
48   }
49
50
51
52   @Test
53   public void test_checkRouteWay() {
54     try {
55       RouteUtil.checkRouteWay("ipp");
56     } catch (Exception e) {
57       Assert.assertTrue(e instanceof UnprocessableEntityException);
58     }
59
60   }
61
62   @Test
63   public void test_checkServiceNameAndVersion() {
64     try {
65       RouteUtil.checkServiceNameAndVersion("","v1");
66     } catch (Exception e) {
67       Assert.assertTrue(e instanceof UnprocessableEntityException);
68     }
69     
70     try {
71       RouteUtil.checkServiceNameAndVersion("test","ve1");
72     } catch (Exception e) {
73       Assert.assertTrue(e instanceof UnprocessableEntityException);
74     }
75   }
76   
77   @Test
78   public void test_checkServiceStatus() {
79     try {
80       RouteUtil.checkServiceStatus("2");
81     } catch (Exception e) {
82       Assert.assertTrue(e instanceof UnprocessableEntityException);
83     }
84   }
85   
86   @Test
87   public void test_checkRouterInfoFormat() {
88     RouteInfo routeInfo=new RouteInfo();
89     
90     try {
91       RouteUtil.checkRouterInfoFormat(routeInfo);
92     } catch (Exception e) {
93       Assert.assertTrue(e instanceof UnprocessableEntityException);
94     }
95   }
96   
97   @Test
98   public void test_checkMicroServiceInfoFormat() {
99     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
100     
101     try {
102       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"");
103     } catch (Exception e) {
104       Assert.assertTrue(e instanceof UnprocessableEntityException);
105     }
106   }
107   
108   @Test
109   public void test_checkMicroServiceInfoFormat_ip() {
110     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
111     microServiceInfo.setServiceName("name");
112     microServiceInfo.setProtocol("REST");
113     Set<Node> nodeSet = new HashSet<>();
114     nodeSet.add(new Node("10.74.148.88.22","8080"));
115     microServiceInfo.setNodes(nodeSet);
116     
117     try {
118       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"");
119     } catch (Exception e) {
120       Assert.assertTrue(e instanceof UnprocessableEntityException);
121     }
122   }
123   
124   @Test
125   public void test_checkMicroServiceInfoFormat_port() {
126     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
127     microServiceInfo.setServiceName("name");
128     microServiceInfo.setProtocol("REST");
129     Set<Node> nodeSet = new HashSet<>();
130     nodeSet.add(new Node("10.74.148.88.22","808770"));
131     microServiceInfo.setNodes(nodeSet);
132     
133     try {
134       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"");
135     } catch (Exception e) {
136       Assert.assertTrue(e instanceof UnprocessableEntityException);
137     }
138   }
139   
140   @Test
141   public void test_checkMicroServiceInfoFormat_version() {
142     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
143     microServiceInfo.setServiceName("name");
144     microServiceInfo.setProtocol("REST");
145     Set<Node> nodeSet = new HashSet<>();
146     nodeSet.add(new Node("","8089"));
147     microServiceInfo.setNodes(nodeSet);
148     microServiceInfo.setVersion("cv2");
149     
150     try {
151       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"10.74.55.36");
152     } catch (Exception e) {
153       Assert.assertTrue(e instanceof UnprocessableEntityException);
154     }
155   }
156   
157   @Test
158   public void test_checkMicroServiceInfoFormat_url() {
159     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
160     microServiceInfo.setServiceName("name");
161     microServiceInfo.setProtocol("REST");
162     Set<Node> nodeSet = new HashSet<>();
163     nodeSet.add(new Node("","8089"));
164     microServiceInfo.setNodes(nodeSet);
165     microServiceInfo.setVersion("v2");
166     microServiceInfo.setUrl("url");
167     
168     try {
169       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"10.74.55.36");
170     } catch (Exception e) {
171       Assert.assertTrue(e instanceof UnprocessableEntityException);
172     }
173   }
174   
175   @Test
176   public void test_checkMicroServiceInfoFormat_protocol() {
177     MicroServiceFullInfo microServiceInfo=new MicroServiceFullInfo();
178     microServiceInfo.setServiceName("name");
179     microServiceInfo.setProtocol("REST2");
180     Set<Node> nodeSet = new HashSet<>();
181     nodeSet.add(new Node("","8089"));
182     microServiceInfo.setNodes(nodeSet);
183     microServiceInfo.setVersion("v2");
184     microServiceInfo.setUrl("/url");
185     
186     try {
187       RouteUtil.checkMicroServiceInfoFormat(microServiceInfo,"10.74.55.36");
188     } catch (Exception e) {
189       Assert.assertTrue(e instanceof UnprocessableEntityException);
190     }
191   }
192   
193   @Test
194   public void test_getAPIRedisPrefixedKey() {
195     Assert.assertEquals("msb:20081:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost","20081","ip"));
196     Assert.assertEquals("msb:routing:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost","","ip"));
197     Assert.assertEquals("msb:host:testHost:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost","20081","domain"));
198   }
199   
200   @Test
201   public void test_getRedisPrefixedKey() {
202     Assert.assertEquals("msb:20081:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE,"/testName/v1", "testHost","20081","ip"));
203     Assert.assertEquals("msb:routing:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE,"/testName/v1", "testHost","","ip"));
204     Assert.assertEquals("msb:host:testHost:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE,"/testName/v1", "testHost","20081","domain"));
205   
206     Assert.assertEquals("msb:20081:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE,"testName", "testHost","20081","ip"));
207     Assert.assertEquals("msb:routing:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE,"testName", "testHost","","ip"));
208     Assert.assertEquals("msb:host:testHost:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE,"testName", "testHost","20081","domain"));
209   }
210   
211   @Test
212   public void test_getMutiRedisKey() {
213     Assert.assertEquals("msb:[^h]*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE,"ip"));
214     Assert.assertEquals("msb:[^h]*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE,"ip"));
215     Assert.assertEquals("msb:[^h]*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE,"ip"));
216
217     Assert.assertEquals("msb:host:*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE,"domain"));
218     Assert.assertEquals("msb:host:*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE,"domain"));
219     Assert.assertEquals("msb:host:*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE,"domain"));
220   }
221   
222   @Test
223   public void test_getRouteNameByns() {
224     Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName",""));
225     Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-ns","ns"));
226     Assert.assertEquals("serviceName-ns", RouteUtil.getRouteNameByns("serviceName-ns-ns","ns"));
227     Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName","default"));
228   }
229   
230   @Test
231   public void test_getVisualRangeByRouter(){
232     Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
233     Assert.assertEquals("1", RouteUtil.getVisualRangeByRouter("1"));
234     Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0"));
235     
236    
237   }
238   
239   @Test
240   public void test_getVisualRangeByRouter_muti(){
241     PowerMockito.mockStatic(System.class);
242     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:0|1");
243     ConfigUtil.getInstance().initRouteLabelsMatches();
244     Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
245   }
246   
247   @Test
248   public void test_checkRouterInfoFormat_url() {
249     RouteInfo routeInfo=new RouteInfo();
250     routeInfo.setServiceName("name");
251     routeInfo.setUrl("url");
252     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88","8080")});
253     
254     try {
255       RouteUtil.checkRouterInfoFormat(routeInfo);
256     } catch (Exception e) {
257       Assert.assertTrue(e instanceof UnprocessableEntityException);
258     }
259   }
260   
261   @Test
262   public void test_checkRouterInfoFormat_visualRangeRange() {
263     RouteInfo routeInfo=new RouteInfo();
264     routeInfo.setServiceName("name");
265     routeInfo.setUrl("/url");
266     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88","8080")});
267     routeInfo.setVisualRange("2");
268     
269     try {
270       RouteUtil.checkRouterInfoFormat(routeInfo);
271     } catch (Exception e) {
272       Assert.assertTrue(e instanceof UnprocessableEntityException);
273     }
274   }
275   
276   
277   @Test
278   public void test_checkRouterInfoFormat_controlRangeMatches() {
279     RouteInfo routeInfo=new RouteInfo();
280     routeInfo.setServiceName("name");
281     routeInfo.setUrl("/url");
282     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88","8080")});
283     routeInfo.setVisualRange("0");
284     routeInfo.setControl("3");
285     
286     try {
287       RouteUtil.checkRouterInfoFormat(routeInfo);
288     } catch (Exception e) {
289       Assert.assertTrue(e instanceof UnprocessableEntityException);
290     }
291   }
292   
293   @Test
294   public void test_checkRouterInfoFormat_statusRangeMatches() {
295     RouteInfo routeInfo=new RouteInfo();
296     routeInfo.setServiceName("name");
297     routeInfo.setUrl("/url");
298     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88","8080")});
299     routeInfo.setVisualRange("0");
300     routeInfo.setControl("0");
301     routeInfo.setStatus("3");
302     
303     try {
304       RouteUtil.checkRouterInfoFormat(routeInfo);
305     } catch (Exception e) {
306       Assert.assertTrue(e instanceof UnprocessableEntityException);
307     }
308   }
309   
310   
311   @Test
312   public void test_checkRouterInfoFormat_useOwnUpstreamRangeMatches() {
313     RouteInfo routeInfo=new RouteInfo();
314     routeInfo.setServiceName("name");
315     routeInfo.setUrl("/url");
316     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88","8080")});
317     routeInfo.setVisualRange("0");
318     routeInfo.setControl("0");
319     routeInfo.setStatus("0");
320     routeInfo.setUseOwnUpstream("3");
321     
322     try {
323       RouteUtil.checkRouterInfoFormat(routeInfo);
324     } catch (Exception e) {
325       Assert.assertTrue(e instanceof UnprocessableEntityException);
326     }
327   }
328   
329   @Test
330   public void test_checkRouterInfoFormat_ip() {
331     RouteInfo routeInfo=new RouteInfo();
332     routeInfo.setServiceName("name");
333     routeInfo.setUrl("/url");
334     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88.6","8080")});
335     routeInfo.setVisualRange("0");
336     routeInfo.setControl("0");
337     routeInfo.setStatus("0");
338     routeInfo.setUseOwnUpstream("1");
339     
340     try {
341       RouteUtil.checkRouterInfoFormat(routeInfo);
342     } catch (Exception e) {
343       Assert.assertTrue(e instanceof UnprocessableEntityException);
344     }
345   }
346   
347   
348   @Test
349   public void test_checkRouterInfoFormat_port() {
350     RouteInfo routeInfo=new RouteInfo();
351     routeInfo.setServiceName("name");
352     routeInfo.setUrl("/url");
353     routeInfo.setServers( new RouteServer[]{new RouteServer("10.74.148.88.6","757577")});
354     routeInfo.setVisualRange("0");
355     routeInfo.setControl("0");
356     routeInfo.setStatus("0");
357     routeInfo.setUseOwnUpstream("1");
358     
359     try {
360       RouteUtil.checkRouterInfoFormat(routeInfo);
361     } catch (Exception e) {
362       Assert.assertTrue(e instanceof UnprocessableEntityException);
363     }
364   }
365   
366   
367
368   
369   
370  
371
372
373 }