/******************************************************************************* * Copyright 2016-2017 ZTE, Inc. and others. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. ******************************************************************************/ package org.onap.msb.apiroute.wrapper.util; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.msb.apiroute.api.MicroServiceFullInfo; import org.onap.msb.apiroute.api.Node; import org.onap.msb.apiroute.api.RouteInfo; import org.onap.msb.apiroute.api.RouteServer; import org.onap.msb.apiroute.api.exception.UnprocessableEntityException; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest({ConfigUtil.class}) public class RouteUtilTest { @Test public void test_getPrefixedKey() { Assert.assertEquals("msb:routing:test:v1", RouteUtil.getPrefixedKey("", "test", "v1")); Assert.assertEquals("msb:5656:test:v1", RouteUtil.getPrefixedKey("5656", "test", "v1")); } @Test public void test_getPrefixedKey4Host() { Assert.assertEquals("msb:host:test:v1", RouteUtil.getPrefixedKey4Host("test", "v1")); } @Test public void test_checkRouteWay() { try { RouteUtil.checkRouteWay("ipp"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkServiceNameAndVersion() { try { RouteUtil.checkServiceNameAndVersion("", "v1"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } try { RouteUtil.checkServiceNameAndVersion("test", "ve1"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkServiceStatus() { try { RouteUtil.checkServiceStatus("2"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat() { RouteInfo routeInfo = new RouteInfo(); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, ""); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat_ip() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); microServiceInfo.setServiceName("name"); microServiceInfo.setProtocol("REST"); Set nodeSet = new HashSet<>(); nodeSet.add(new Node("10.74.148.88.22", "8080")); microServiceInfo.setNodes(nodeSet); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, ""); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat_port() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); microServiceInfo.setServiceName("name"); microServiceInfo.setProtocol("REST"); Set nodeSet = new HashSet<>(); nodeSet.add(new Node("10.74.148.88.22", "808770")); microServiceInfo.setNodes(nodeSet); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, ""); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat_version() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); microServiceInfo.setServiceName("name"); microServiceInfo.setProtocol("REST"); Set nodeSet = new HashSet<>(); nodeSet.add(new Node("", "8089")); microServiceInfo.setNodes(nodeSet); microServiceInfo.setVersion("cv2"); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat_url() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); microServiceInfo.setServiceName("name"); microServiceInfo.setProtocol("REST"); Set nodeSet = new HashSet<>(); nodeSet.add(new Node("", "8089")); microServiceInfo.setNodes(nodeSet); microServiceInfo.setVersion("v2"); microServiceInfo.setUrl("url"); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkMicroServiceInfoFormat_protocol() { MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo(); microServiceInfo.setServiceName("name"); microServiceInfo.setProtocol("REST2"); Set nodeSet = new HashSet<>(); nodeSet.add(new Node("", "8089")); microServiceInfo.setNodes(nodeSet); microServiceInfo.setVersion("v2"); microServiceInfo.setUrl("/url"); try { RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36"); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_getAPIRedisPrefixedKey() { Assert.assertEquals("msb:20081:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "ip")); Assert.assertEquals("msb:routing:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "", "ip")); Assert.assertEquals("msb:host:testHost:api:testApi:v1", RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "domain")); } @Test public void test_getRedisPrefixedKey() { Assert.assertEquals("msb:20081:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "20081", "ip")); Assert.assertEquals("msb:routing:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "", "ip")); Assert.assertEquals("msb:host:testHost:custom:/testName/v1", RouteUtil .getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "20081", "domain")); Assert.assertEquals("msb:20081:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "ip")); Assert.assertEquals("msb:routing:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "", "ip")); Assert.assertEquals("msb:host:testHost:iui:testName", RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "domain")); } @Test public void test_getMutiRedisKey() { Assert.assertEquals("msb:[^h]*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "ip")); Assert.assertEquals("msb:[^h]*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "ip")); Assert.assertEquals("msb:[^h]*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "ip")); Assert.assertEquals("msb:host:*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "domain")); Assert.assertEquals("msb:host:*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "domain")); Assert.assertEquals("msb:host:*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "domain")); } @Test public void test_getRouteNameByns() { Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "")); Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-ns", "ns")); Assert.assertEquals("serviceName-ns", RouteUtil.getRouteNameByns("serviceName-ns-ns", "ns")); Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "default")); } @Test public void test_getVisualRangeByRouter() { Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1")); Assert.assertEquals("1", RouteUtil.getVisualRangeByRouter("1")); Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0")); } @Test public void test_getVisualRangeByRouter_muti() { PowerMockito.mockStatic(System.class); PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:0|1"); ConfigUtil.getInstance().initRouteLabelsMatches(); Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1")); } @Test public void test_checkRouterInfoFormat_url() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")}); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_visualRangeRange() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")}); routeInfo.setVisualRange("2"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_controlRangeMatches() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")}); routeInfo.setVisualRange("0"); routeInfo.setControl("3"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_statusRangeMatches() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")}); routeInfo.setVisualRange("0"); routeInfo.setControl("0"); routeInfo.setStatus("3"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_useOwnUpstreamRangeMatches() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")}); routeInfo.setVisualRange("0"); routeInfo.setControl("0"); routeInfo.setStatus("0"); routeInfo.setUseOwnUpstream("3"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_ip() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "8080")}); routeInfo.setVisualRange("0"); routeInfo.setControl("0"); routeInfo.setStatus("0"); routeInfo.setUseOwnUpstream("1"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } @Test public void test_checkRouterInfoFormat_port() { RouteInfo routeInfo = new RouteInfo(); routeInfo.setServiceName("name"); routeInfo.setUrl("/url"); routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "757577")}); routeInfo.setVisualRange("0"); routeInfo.setControl("0"); routeInfo.setStatus("0"); routeInfo.setUseOwnUpstream("1"); try { RouteUtil.checkRouterInfoFormat(routeInfo); } catch (Exception e) { Assert.assertTrue(e instanceof UnprocessableEntityException); } } }