08518b100ed0581f394828d5faaa83cd64c1e51f
[aai/data-router.git] / src / test / java / org / onap / aai / datarouter / policy / SpikeEntitySearchProcessorTest.java
1 package org.onap.aai.datarouter.policy;
2
3 import static org.junit.Assert.assertNotNull;
4 import static org.junit.Assert.assertNull;
5 import static org.mockito.Matchers.anyObject;
6 import static org.mockito.Matchers.anyString;
7
8 import java.io.File;
9 import java.io.FileInputStream;
10
11 import org.apache.camel.Exchange;
12 import org.apache.camel.Message;
13 import org.apache.commons.io.IOUtils;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.onap.aai.datarouter.util.NodeUtils;
17 import org.onap.aai.datarouter.util.SearchServiceAgent;
18 import org.powermock.api.mockito.PowerMockito;
19
20
21
22 public class SpikeEntitySearchProcessorTest {
23   SpikeEntitySearchProcessor policy;
24   String eventJson;
25
26   @SuppressWarnings("unchecked")
27   @Before
28   public void init() throws Exception {
29     SpikeEventPolicyConfig config = PowerMockito.mock(SpikeEventPolicyConfig.class);
30     PowerMockito.when(config.getSearchKeystorePwd()).thenReturn("password");
31     PowerMockito.when(config.getSourceDomain()).thenReturn("JUNIT");
32
33
34     SearchServiceAgent searchServiceAgent = PowerMockito.mock(SearchServiceAgent.class);
35     PowerMockito.whenNew(SearchServiceAgent.class).withAnyArguments()
36         .thenReturn(searchServiceAgent);
37
38
39     policy = new SpikeEntitySearchProcessorStubbed(config);
40     FileInputStream event = new FileInputStream(new File("src/test/resources/spike_event.json"));
41     eventJson = IOUtils.toString(event, "UTF-8");  
42
43   }
44
45   @Test
46   public void testProcess_success() throws Exception {
47     policy.process(getExchangeEvent("12345", "create", "generic-vnf"));
48     policy.process(getExchangeEvent("23456", "create", "generic-vnf"));
49
50     assertNotNull(
51         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/12345")));
52     assertNotNull(
53         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/23456")));
54
55    
56     policy.process(getExchangeEvent("23456", "delete", "generic-vnf"));
57     assertNull(InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/23456")));
58     
59     policy.process(getExchangeEvent("333333", "", "generic-vnf"));
60     assertNull(InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/333333")));
61   }
62   @Test
63   public void testProcess_fail() throws Exception {
64     policy.process(getExchangeEvent("xxxxx", "create", "NotValid"));
65     assertNull(
66         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("NotValid/xxxxx")));
67     
68     policy.process(getExchangeEvent("", "create", "generic-vnf"));
69     assertNull(
70         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/")));
71    
72     policy.process(getExchangeEvent("yyyy", "create", ""));
73     assertNull(
74         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("/yyyy")));
75     policy.process(getExchangeEvent("", "create", ""));
76     assertNull(
77         InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("/")));
78   }
79   @Test
80   public void testProcess_null() throws Exception {
81     policy.process(getExchangeEvent());
82   }
83   
84   private Exchange getExchangeEvent(String key, String action, String type) {
85     Object obj = eventJson.replace("$KEY", key).replace("$ACTION", action).replace("$TYPE", type);
86     Exchange exchange = PowerMockito.mock(Exchange.class);
87     Message inMessage = PowerMockito.mock(Message.class);
88     Message outMessage = PowerMockito.mock(Message.class);
89     PowerMockito.when(exchange.getIn()).thenReturn(inMessage); 
90     PowerMockito.when(inMessage.getBody()).thenReturn(obj);
91
92     PowerMockito.when(exchange.getOut()).thenReturn(outMessage);
93     PowerMockito.doNothing().when(outMessage).setBody(anyObject());
94     PowerMockito.doNothing().when(outMessage).setHeader(anyString(), anyObject());
95
96     return exchange;
97
98   }
99   
100   private Exchange getExchangeEvent() {
101     Object obj = "";
102     Exchange exchange = PowerMockito.mock(Exchange.class);
103     Message inMessage = PowerMockito.mock(Message.class);
104     Message outMessage = PowerMockito.mock(Message.class);
105     PowerMockito.when(exchange.getIn()).thenReturn(inMessage); 
106     PowerMockito.when(inMessage.getBody()).thenReturn(obj);
107
108     PowerMockito.when(exchange.getOut()).thenReturn(outMessage);
109     PowerMockito.doNothing().when(outMessage).setBody(anyObject());
110     PowerMockito.doNothing().when(outMessage).setHeader(anyString(), anyObject());
111     
112     return exchange;
113
114   }
115
116
117 }