Add license header for java files
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / IuiRouteServiceWrapperTest.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;
17
18 import java.lang.reflect.InvocationHandler;
19 import java.lang.reflect.Method;
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.Comparator;
23 import java.util.List;
24
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.BeforeClass;
28 import org.junit.Ignore;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 import org.onap.msb.apiroute.api.IuiRouteInfo;
32 import org.onap.msb.apiroute.api.RouteServer;
33 import org.onap.msb.apiroute.api.exception.ExtendedNotFoundException;
34 import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
35 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
36 import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
37 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
38 import org.onap.msb.apiroute.wrapper.util.RouteUtil;
39 import org.powermock.api.mockito.PowerMockito;
40 import org.powermock.core.classloader.annotations.PowerMockIgnore;
41 import org.powermock.core.classloader.annotations.PrepareForTest;
42 import org.powermock.modules.junit4.PowerMockRunner;
43
44 import redis.clients.jedis.JedisPool;
45 import redis.clients.jedis.JedisPoolConfig;
46
47 import com.fiftyonred.mock_jedis.MockJedisPool;
48
49
50 @RunWith(PowerMockRunner.class)
51 @PrepareForTest({JedisUtil.class,RouteUtil.class,RedisAccessWrapper.class})
52 @PowerMockIgnore( {"javax.management.*"})
53 public class IuiRouteServiceWrapperTest {
54     private static IuiRouteServiceWrapper iuiRouteServiceWrapper;
55     private static Comparator<IuiRouteInfo> iuiRouteComparator = null;
56     
57     @BeforeClass
58     public static void setUpBeforeClass() throws Exception {
59         iuiRouteServiceWrapper=IuiRouteServiceWrapper.getInstance();
60         iuiRouteComparator = new Comparator<IuiRouteInfo>() {
61           @Override
62           public int compare(IuiRouteInfo o1, IuiRouteInfo o2) {
63               if (!o1.getServiceName().equals(o2.getServiceName()))
64                   return (o1.getServiceName()).compareTo(o2.getServiceName());            
65               return 0;
66           }
67       };
68       
69       PowerMockito.mockStatic(System.class);        
70       PowerMockito.when(System.getenv("ROUTE_WAY")).thenReturn(null);      
71       PowerMockito.when(System.getenv("ROUTE_WAY")).thenReturn("ip|domain");
72       ConfigUtil.getInstance().initRouteWay();
73     }
74     
75     @Before
76     public void setUpBeforeTest() throws Exception {
77         final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
78         PowerMockito.mockStatic(JedisUtil.class);
79         JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
80         PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
81
82         PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
83             @Override
84             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
85                 return mockJedisPool.getResource().keys((String) args[0]);
86             }
87         });
88     }
89     
90
91     @Test
92     public void test_getIuiRouteInstance_not_exist(){
93       try {     
94         iuiRouteServiceWrapper.getIuiRouteInstance("testForJunit","","","ip");
95         Assert.fail("should not process to here.");          
96         } 
97         catch(Exception e){
98             Assert.assertTrue(e instanceof ExtendedNotFoundException);
99            
100         }
101        
102     }
103     
104     @Test
105     public void test_getIuiRouteInstance(){
106               
107       IuiRouteInfo iuirouteInfo  = buildIuiRouteInfo();
108           try {
109               iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
110               IuiRouteInfo dbIuiRouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
111               Assert.assertEquals(iuirouteInfo,dbIuiRouteInfo );
112           } catch (Exception e) {
113             Assert.fail("throw exception means error occured!" + e.getMessage());
114           }
115        
116     }
117     
118     @Test
119     public void test_getAllIuiRouteInstances(){
120       IuiRouteInfo iuirouteInfo = buildIuiRouteInfo();
121       IuiRouteInfo iuirouteInfo2 = buildIuiRouteInfo2();
122       List<IuiRouteInfo> expected = new ArrayList<>();
123       expected.add(iuirouteInfo);
124       expected.add(iuirouteInfo2);
125       Collections.sort(expected, iuiRouteComparator);
126       
127       try {
128         iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
129         iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo2, "ip");
130
131         
132         
133         PowerMockito.mockStatic(RouteUtil.class);
134         PowerMockito.when(RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "ip")).thenReturn("msb:routing:iui:*");
135         List<IuiRouteInfo> iuiRouterList=iuiRouteServiceWrapper.getAllIuiRouteInstances("ip");
136         Collections.sort(iuiRouterList, iuiRouteComparator);
137         
138         Assert.assertEquals(expected,iuiRouterList);
139         
140       } catch (Exception e) {
141         Assert.fail("throw exception means error occured!" + e.getMessage());
142       }
143       
144     }
145     
146     @Test
147     public void test_updateIuiRouteStatus(){
148       IuiRouteInfo iuirouteInfo = buildIuiRouteInfo();
149       try {
150           iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
151           IuiRouteInfo dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
152           Assert.assertEquals("1",dbIuirouteInfo.getStatus() );
153           iuiRouteServiceWrapper.updateIuiRouteStatus("testiui","","","0", "ip");
154           dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
155           Assert.assertEquals("0",dbIuirouteInfo.getStatus() );
156       } catch (Exception e) {
157         Assert.fail("throw exception means error occured!" + e.getMessage());
158       }
159       
160     }
161     
162    
163     
164     @Test
165     public void test_deleteIuiRoute(){
166       IuiRouteInfo iuirouteInfo2 = buildIuiRouteInfo2();
167       try {
168           iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo2, "ip");
169           IuiRouteInfo dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui2","","","ip");
170           Assert.assertNotNull(dbIuirouteInfo);          
171           
172       } catch (Exception e) {
173         Assert.fail("throw exception means error occured!" + e.getMessage());
174       }
175       try {
176         iuiRouteServiceWrapper.deleteIuiRoute("testiui2","","","ip");
177         iuiRouteServiceWrapper.getIuiRouteInstance("testiui2","","","ip");
178       }
179       catch(Exception e){
180         Assert.assertTrue(e instanceof ExtendedNotFoundException);       
181       }
182     }
183  
184     
185     private IuiRouteInfo buildIuiRouteInfo(){
186       IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
187       iuirouteInfo.setServiceName("testiui");
188       iuirouteInfo.setStatus("1");
189       iuirouteInfo.setUrl("/iui/testiui");
190       iuirouteInfo.setUseOwnUpstream("0");
191       iuirouteInfo.setVisualRange("0");
192       iuirouteInfo.setEnable_ssl(false);
193       RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
194       iuirouteInfo.setServers(servers);
195       return iuirouteInfo;
196     }
197     
198     private IuiRouteInfo buildIuiRouteInfo2(){
199       IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
200       iuirouteInfo.setServiceName("testiui2");
201       iuirouteInfo.setStatus("1");
202       iuirouteInfo.setUrl("/iui/testiui");
203       iuirouteInfo.setUseOwnUpstream("0");
204       iuirouteInfo.setVisualRange("1");
205       iuirouteInfo.setEnable_ssl(true);
206       RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.89","8080")};
207       iuirouteInfo.setServers(servers);
208       return iuirouteInfo;
209     }
210    
211     
212 }