cc8c0470d54b9e8403cb256c6a72009519753cfd
[holmes/rule-management.git] / rulemgt / src / test / java / org / onap / holmes / rulemgt / bolt / enginebolt / EngineWrapperTest.java
1 /**\r
2  * Copyright 2017 ZTE Corporation.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.holmes.rulemgt.bolt.enginebolt;\r
18 \r
19 \r
20 import static org.hamcrest.MatcherAssert.assertThat;\r
21 import static org.hamcrest.Matchers.equalTo;\r
22 \r
23 import org.apache.http.HttpResponse;\r
24 import org.apache.http.StatusLine;\r
25 import org.easymock.EasyMock;\r
26 import org.junit.Before;\r
27 import org.junit.Rule;\r
28 import org.junit.Test;\r
29 import org.junit.rules.ExpectedException;\r
30 import org.junit.runner.RunWith;\r
31 import org.onap.holmes.common.utils.HttpsUtils;\r
32 import org.onap.holmes.rulemgt.bean.request.CorrelationCheckRule4Engine;\r
33 import org.onap.holmes.rulemgt.bean.request.CorrelationDeployRule4Engine;\r
34 import org.onap.holmes.common.exception.CorrelationException;\r
35 import org.powermock.api.easymock.PowerMock;\r
36 import org.powermock.api.mockito.PowerMockito;\r
37 import org.powermock.core.classloader.annotations.PrepareForTest;\r
38 import org.powermock.modules.junit4.PowerMockRunner;\r
39 import org.powermock.reflect.Whitebox;\r
40 \r
41 @PrepareForTest({EngineWrapper.class, EngineService.class, HttpsUtils.class, HttpResponse.class,\r
42         StatusLine.class})\r
43 @RunWith(PowerMockRunner.class)\r
44 public class EngineWrapperTest {\r
45 \r
46     @Rule\r
47     public ExpectedException thrown = ExpectedException.none();\r
48     private EngineWrapper engineWrapper = new EngineWrapper();\r
49     private EngineService engineServiceMock;\r
50     private HttpResponse httpResponse;\r
51     private StatusLine statusLineMock;\r
52 \r
53     @Before\r
54     public void setUp() throws Exception {\r
55         engineServiceMock = PowerMock.createMock(EngineService.class);\r
56         httpResponse = PowerMock.createMock(HttpResponse.class);\r
57         statusLineMock = PowerMock.createMock(StatusLine.class);\r
58         Whitebox.setInternalState(engineWrapper, "engineService", engineServiceMock);\r
59     }\r
60 \r
61     @Test\r
62     public void deployEngine_invoke_rule_deploy_exception() throws Exception {\r
63         thrown.expect(CorrelationException.class);\r
64         thrown.expectMessage("Failed to call the rule deployment RESTful API.");\r
65 \r
66         EasyMock.expect(\r
67                 engineServiceMock.deploy(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
68                 .andThrow(\r
69                         new RuntimeException(""));\r
70         PowerMock.replayAll();\r
71 \r
72         engineWrapper.deployEngine(new CorrelationDeployRule4Engine());\r
73 \r
74         PowerMock.verifyAll();\r
75     }\r
76 \r
77     @Test\r
78     public void deployEngine_http_status_not_ok() throws Exception {\r
79         thrown.expect(CorrelationException.class);\r
80         thrown.expectMessage("Failed to deploy the rule!");\r
81 \r
82         EasyMock.expect(\r
83                 engineServiceMock.deploy(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
84                 .andReturn(httpResponse);\r
85         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
86         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(400);\r
87         PowerMock.replayAll();\r
88 \r
89         engineWrapper.deployEngine(new CorrelationDeployRule4Engine());\r
90 \r
91         PowerMock.verifyAll();\r
92     }\r
93 \r
94     @Test\r
95     public void deployEngine_parse_content_exception() throws Exception {\r
96         PowerMock.resetAll();\r
97         String content = "";\r
98         PowerMockito.mockStatic(HttpsUtils.class);\r
99         thrown.expect(CorrelationException.class);\r
100         thrown.expectMessage(\r
101                 "Failed to parse the value returned by the engine management service.");\r
102         EasyMock.expect(\r
103                 engineServiceMock.deploy(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
104                 .andReturn(httpResponse);\r
105         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
106         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(200);\r
107         PowerMockito.when(HttpsUtils.extractResponseEntity(httpResponse)).thenReturn(content);\r
108         PowerMock.replayAll();\r
109 \r
110         engineWrapper.deployEngine(new CorrelationDeployRule4Engine());\r
111 \r
112         PowerMock.verifyAll();\r
113     }\r
114 \r
115     @Test\r
116     public void deployEngine_success() throws Exception {\r
117         PowerMock.resetAll();\r
118         String content = "{\"packageName\":\"test\"}";\r
119         PowerMockito.mockStatic(HttpsUtils.class);\r
120         EasyMock.expect(\r
121                 engineServiceMock.deploy(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
122                 .andReturn(httpResponse);\r
123         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
124         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(200);\r
125         PowerMockito.when(HttpsUtils.extractResponseEntity(httpResponse)).thenReturn(content);\r
126         PowerMock.replayAll();\r
127 \r
128         String result = engineWrapper.deployEngine(new CorrelationDeployRule4Engine());\r
129 \r
130         assertThat(result, equalTo("test"));\r
131 \r
132     }\r
133 \r
134     @Test\r
135     public void deleteRuleFromEngine_invoke_rule_delete_exception() throws Exception {\r
136         thrown.expect(CorrelationException.class);\r
137         thrown.expectMessage("Failed to call the rule deleting RESTful API.");\r
138 \r
139         EasyMock.expect(engineServiceMock.delete(EasyMock.anyObject(String.class))).andThrow(\r
140                 new RuntimeException(""));\r
141         PowerMock.replayAll();\r
142 \r
143         engineWrapper.deleteRuleFromEngine("");\r
144 \r
145         PowerMock.verifyAll();\r
146     }\r
147 \r
148     @Test\r
149     public void deleteRuleFromEngine_http_status_not_ok() throws Exception {\r
150         thrown.expect(CorrelationException.class);\r
151         thrown.expectMessage("Failed to delete the rule!");\r
152 \r
153         EasyMock.expect(engineServiceMock.delete(EasyMock.anyObject(String.class)))\r
154                 .andReturn(httpResponse);\r
155         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
156         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(400);\r
157 \r
158         PowerMock.replayAll();\r
159 \r
160         engineWrapper.deleteRuleFromEngine("");\r
161 \r
162         PowerMock.verifyAll();\r
163     }\r
164 \r
165     @Test\r
166     public void deleteRuleFromEngine_success() throws Exception {\r
167         EasyMock.expect(engineServiceMock.delete(EasyMock.anyObject(String.class)))\r
168                 .andReturn(httpResponse);\r
169         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
170         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(200);\r
171 \r
172         PowerMock.replayAll();\r
173 \r
174         boolean result = engineWrapper.deleteRuleFromEngine("");\r
175 \r
176         assertThat(result, equalTo(true));\r
177     }\r
178 \r
179     @Test\r
180     public void checkRuleFromEngine_rule_delete_exception() throws Exception {\r
181         thrown.expect(CorrelationException.class);\r
182         thrown.expectMessage("Failed to call the rule verification RESTful API.");\r
183 \r
184         EasyMock.expect(\r
185                 engineServiceMock.check(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
186                 .andThrow(\r
187                         new RuntimeException(""));\r
188         PowerMock.replayAll();\r
189 \r
190         engineWrapper.checkRuleFromEngine(new CorrelationCheckRule4Engine());\r
191 \r
192         PowerMock.verifyAll();\r
193     }\r
194 \r
195     @Test\r
196     public void checkRuleFromEngine_success() throws Exception {\r
197         EasyMock.expect(\r
198                 engineServiceMock.check(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
199                 .andReturn(httpResponse);\r
200         EasyMock.expect(httpResponse.getStatusLine()).andReturn(statusLineMock);\r
201         EasyMock.expect(statusLineMock.getStatusCode()).andReturn(200);\r
202 \r
203         PowerMock.replayAll();\r
204 \r
205         boolean result = engineWrapper.checkRuleFromEngine(new CorrelationCheckRule4Engine());\r
206 \r
207         assertThat(result, equalTo(true));\r
208     }\r
209 }