Add test case for multi part form data
[ccsdk/sli/plugins.git] / restapi-call-node / provider / src / test / java / jtest / org / onap / ccsdk / sli / plugins / restapicall / TestRestapiCallNode.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                      reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package jtest.org.onap.ccsdk.sli.plugins.restapicall;
23
24 import java.net.URI;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
29 import org.glassfish.jersey.media.multipart.MultiPartFeature;
30 import org.junit.Test;
31 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
32 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
33 import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.glassfish.jersey.server.ResourceConfig;
37
38 import static org.hamcrest.MatcherAssert.assertThat;
39 import static org.hamcrest.core.Is.is;
40
41 public class TestRestapiCallNode {
42
43     private static final Logger log = LoggerFactory.getLogger(TestRestapiCallNode.class);
44
45
46     @Test
47     public void testDelete() throws SvcLogicException {
48         SvcLogicContext ctx = new SvcLogicContext();
49
50         Map<String, String> p = new HashMap<String, String>();
51         p.put("restapiUrl", "https://echo.getpostman.com/delete");
52         p.put("restapiUser", "user1");
53         p.put("restapiPassword", "pwd1");
54         p.put("httpMethod", "delete");
55         p.put("skipSending", "true");
56
57         RestapiCallNode rcn = new RestapiCallNode();
58         rcn.sendRequest(p, ctx);
59     }
60
61     @Test
62     public void testJsonSdwanVpnTopologyTemplate() throws SvcLogicException {
63         SvcLogicContext ctx = new SvcLogicContext();
64
65         ctx.setAttribute("prop.topology", "topoType");
66
67         ctx.setAttribute("prop.roles_length", "1");
68         ctx.setAttribute("prop.roles[0]", "role1");
69
70         ctx.setAttribute("prop.siteAttachement_length", "2");
71
72         ctx.setAttribute("prop.siteAttachement[0].siteId", "site1");
73         ctx.setAttribute("prop.siteAttachement[0].roles_length", "0");
74         ctx.setAttribute("prop.siteAttachement[0].roles[0]", "role1");
75         ctx.setAttribute("prop.siteAttachement[0].roles[1]", "role3");
76
77         ctx.setAttribute("prop.siteAttachement[1].siteId", "site2");
78         ctx.setAttribute("prop.siteAttachement[1].roles_length", "1");
79         ctx.setAttribute("prop.siteAttachement[1].roles[0]", "role2");
80
81         Map<String, String> p = new HashMap<String, String>();
82         p.put("templateFileName", "src/test/resources/sdwan-vpn-topology.json");
83         p.put("restapiUrl", "http://echo.getpostman.com");
84         p.put("restapiUser", "user1");
85         p.put("restapiPassword", "abc123");
86         p.put("format", "json");
87         p.put("httpMethod", "post");
88         p.put("responsePrefix", "response");
89         p.put("skipSending", "true");
90
91         RestapiCallNode rcn = new RestapiCallNode();
92         rcn.sendRequest(p, ctx);
93     }
94
95     @Test
96     public void testJsonSdwanSiteTemplate() throws SvcLogicException {
97         SvcLogicContext ctx = new SvcLogicContext();
98
99         ctx.setAttribute("prop.name", "site1");
100
101
102         Map<String, String> p = new HashMap<String, String>();
103         p.put("templateFileName", "src/test/resources/sdwan-site.json");
104         p.put("restapiUrl", "http://echo.getpostman.com");
105         p.put("restapiUser", "user1");
106         p.put("restapiPassword", "abc123");
107         p.put("format", "json");
108         p.put("httpMethod", "post");
109         p.put("responsePrefix", "response");
110         p.put("skipSending", "true");
111
112         RestapiCallNode rcn = new RestapiCallNode();
113         rcn.sendRequest(p, ctx);
114     }
115
116     @Test
117     public void testJsonTemplate() throws SvcLogicException {
118         SvcLogicContext ctx = new SvcLogicContext();
119         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "3");
120         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
121         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
122         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
123         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
124         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
125         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
126         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
127         ctx.setAttribute("tmp.sdn-circuit-req-row[1].source-uid", "APIDOC-123");
128         ctx.setAttribute("tmp.sdn-circuit-req-row[1].action", "delete");
129         ctx.setAttribute("tmp.sdn-circuit-req-row[1].request-timestamp", "2016-09-09 16:30:35.0");
130         ctx.setAttribute("tmp.sdn-circuit-req-row[1].request-status", "New");
131         ctx.setAttribute("tmp.sdn-circuit-req-row[1].processing-status", "New");
132         ctx.setAttribute("tmp.sdn-circuit-req-row[1].service-clfi", "testClfi1");
133         ctx.setAttribute("tmp.sdn-circuit-req-row[1].clci", "clci");
134         ctx.setAttribute("tmp.sdn-circuit-req-row[2].source-uid", "APIDOC-123");
135         ctx.setAttribute("tmp.sdn-circuit-req-row[2].action", "delete");
136         ctx.setAttribute("tmp.sdn-circuit-req-row[2].request-timestamp", "2016-09-09 16:30:35.0");
137         ctx.setAttribute("tmp.sdn-circuit-req-row[2].request-status", "New");
138         ctx.setAttribute("tmp.sdn-circuit-req-row[2].processing-status", "New");
139         ctx.setAttribute("tmp.sdn-circuit-req-row[2].service-clfi", "testClfi1");
140         ctx.setAttribute("tmp.sdn-circuit-req-row[2].clci", "clci");
141
142         Map<String, String> p = new HashMap<String, String>();
143         p.put("templateFileName", "src/test/resources/test-template.json");
144         p.put("restapiUrl", "http://echo.getpostman.com");
145         p.put("restapiUser", "user1");
146         p.put("restapiPassword", "abc123");
147         p.put("format", "json");
148         p.put("httpMethod", "post");
149         p.put("responsePrefix", "response");
150         p.put("skipSending", "true");
151
152         RestapiCallNode rcn = new RestapiCallNode();
153         rcn.sendRequest(p, ctx);
154     }
155
156     @Test
157     public void testInvalidRepeatTimes() throws SvcLogicException {
158         SvcLogicContext ctx = new SvcLogicContext();
159         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "a");
160         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
161         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
162         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
163         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
164         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
165         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
166         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
167
168         Map<String, String> p = new HashMap<String, String>();
169         p.put("templateFileName", "src/test/resources/test-template.json");
170         p.put("restapiUrl", "http://echo.getpostman.com");
171         p.put("restapiUser", "user1");
172         p.put("restapiPassword", "abc123");
173         p.put("format", "json");
174         p.put("httpMethod", "post");
175         p.put("responsePrefix", "response");
176         p.put("skipSending", "true");
177
178         RestapiCallNode rcn = new RestapiCallNode();
179         rcn.sendRequest(p, ctx);
180     }
181
182     @Test(expected = SvcLogicException.class)
183     public void testInvalidTemplatePath() throws SvcLogicException {
184         SvcLogicContext ctx = new SvcLogicContext();
185         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
186         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
187         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
188         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
189         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
190         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
191         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
192         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
193
194         Map<String, String> p = new HashMap<String, String>();
195         p.put("templateFileName", "src/test/resourcess/test-template.json");
196         p.put("restapiUrl", "http://echo.getpostman.com");
197         p.put("restapiUser", "user1");
198         p.put("restapiPassword", "abc123");
199         p.put("format", "json");
200         p.put("httpMethod", "post");
201         p.put("responsePrefix", "response");
202         p.put("skipSending", "true");
203
204         RestapiCallNode rcn = new RestapiCallNode();
205         rcn.sendRequest(p, ctx);
206     }
207
208     @Test(expected = SvcLogicException.class)
209     public void testWithoutSkipSending() throws SvcLogicException {
210         SvcLogicContext ctx = new SvcLogicContext();
211         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
212         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
213         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
214         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
215         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
216         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
217         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
218         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
219
220         Map<String, String> p = new HashMap<String, String>();
221         p.put("templateFileName", "src/test/resources/test-template.json");
222         p.put("restapiUrl", "http://echo.getpostman.com");
223         p.put("restapiUser", "user1");
224         p.put("restapiPassword", "abc123");
225         p.put("format", "json");
226         p.put("httpMethod", "post");
227         p.put("responsePrefix", "response");
228         p.put("skipSending", "false");
229
230         RestapiCallNode rcn = new RestapiCallNode();
231         rcn.sendRequest(p, ctx);
232     }
233
234     @Test(expected = SvcLogicException.class)
235     public void testFormData() throws SvcLogicException {
236         SvcLogicContext ctx = new SvcLogicContext();
237         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
238         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
239         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
240         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
241         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
242         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
243         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
244         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
245
246         Map<String, String> p = new HashMap<String, String>();
247         p.put("templateFileName", "src/test/resources/test-template.json");
248         p.put("restapiUrl", "http://echo.getpostman.com");
249         p.put("restapiUser", "user1");
250         p.put("restapiPassword", "abc123");
251         p.put("format", "json");
252         p.put("httpMethod", "post");
253         p.put("responsePrefix", "response");
254         p.put("skipSending", "false");
255         p.put("multipartFormData", "true");
256         p.put("multipartFile", "src/test/resources/test-template.json");
257
258         RestapiCallNode rcn = new RestapiCallNode();
259         rcn.sendRequest(p, ctx);
260     }
261
262     @Test(expected = SvcLogicException.class)
263     public void testWithInvalidURI() throws SvcLogicException {
264         SvcLogicContext ctx = new SvcLogicContext();
265         ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
266         ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
267         ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
268         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
269         ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
270         ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
271         ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
272         ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
273
274         Map<String, String> p = new HashMap<String, String>();
275         p.put("templateFileName", "src/test/resources/test-template.json");
276         p.put("restapiUrl", "http://echo.  getpostman.com");
277         p.put("restapiUser", "user1");
278         p.put("restapiPassword", "abc123");
279         p.put("format", "json");
280         p.put("httpMethod", "post");
281         p.put("responsePrefix", "response");
282         p.put("skipSending", "false");
283
284         RestapiCallNode rcn = new RestapiCallNode();
285         rcn.sendRequest(p, ctx);
286     }
287
288     @Test
289     public void testVpnJsonTemplate() throws SvcLogicException {
290         SvcLogicContext ctx = new SvcLogicContext();
291         ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
292         ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
293
294         Map<String, String> p = new HashMap<String, String>();
295         p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
296         p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services");
297         p.put("restapiUser", "admin");
298         p.put("restapiPassword", "admin123");
299         p.put("format", "json");
300         p.put("httpMethod", "post");
301         p.put("responsePrefix", "restapi-result");
302         p.put("skipSending", "true");
303
304         RestapiCallNode rcn = new RestapiCallNode();
305         rcn.sendRequest(p, ctx);
306     }
307
308     @Test
309     public void testSiteJsonTemplate() throws SvcLogicException {
310         SvcLogicContext ctx = new SvcLogicContext();
311         ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
312         ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
313
314         ctx.setAttribute("prop.l3vpn.site1_name", "10000000-0000-0000-0000-000000000002");
315         ctx.setAttribute("prop.l3vpn.vpn-policy1-id", "10000000-0000-0000-0000-000000000003");
316         ctx.setAttribute("prop.l3vpn.entry1-id", "1");
317         ctx.setAttribute("prop.l3vpn.sna1_name", "10000000-0000-0000-0000-000000000004");
318         ctx.setAttribute("prop.l3vpn.pe1_id", "a8098c1a-f86e-11da-bd1a-00112444be1e");
319         ctx.setAttribute("prop.l3vpn.ac1_id", "a8098c1a-f86e-11da-bd1a-00112444be1b");
320         ctx.setAttribute("prop.l3vpn.ac1-peer-ip", "192.168.1.1");
321         ctx.setAttribute("prop.l3vpn.ac1-ip", "192.168.1.2");
322         ctx.setAttribute("prop.l3vpn.sna1_svlan", "100");
323         ctx.setAttribute("prop.l3vpn.ac1_protocol", "static");
324         ctx.setAttribute("prop.l3vpn.sna1-route.ip-prefix", "192.168.1.1/24");
325         ctx.setAttribute("prop.l3vpn.sna1-route.next-hop", "192.168.1.4");
326
327         ctx.setAttribute("prop.l3vpn.site2_name", "10000000-0000-0000-0000-000000000005");
328         ctx.setAttribute("prop.l3vpn.vpn-policy2-id", "10000000-0000-0000-0000-000000000006");
329         ctx.setAttribute("prop.l3vpn.entry2-id", "1");
330         ctx.setAttribute("prop.l3vpn.sna2_name", "10000000-0000-0000-0000-000000000007");
331         ctx.setAttribute("prop.l3vpn.pe2_id", "a8098c1a-f86e-11da-bd1a-00112444be1a");
332         ctx.setAttribute("prop.l3vpn.ac2_id", "a8098c1a-f86e-11da-bd1a-00112444be1c");
333         ctx.setAttribute("prop.l3vpn.ac2-peer-ip", "192.168.1.6");
334         ctx.setAttribute("prop.l3vpn.ac2-ip", "192.168.1.5");
335         ctx.setAttribute("prop.l3vpn.sna2_svlan", "200");
336         ctx.setAttribute("prop.l3vpn.ac2_protocol", "bgp");
337         ctx.setAttribute("prop.l3vpn.peer2-ip", "192.168.1.7");
338         ctx.setAttribute("prop.l3vpn.ac2_protocol_bgp_as", "200");
339
340         Map<String, String> p = new HashMap<String, String>();
341         p.put("templateFileName", "src/test/resources/l3smsitetemplate.json");
342         p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites");
343         p.put("restapiUser", "admin");
344         p.put("restapiPassword", "admin123");
345         p.put("format", "json");
346         p.put("httpMethod", "post");
347         p.put("responsePrefix", "restapi-result");
348         p.put("skipSending", "true");
349
350         RestapiCallNode rcn = new RestapiCallNode();
351         rcn.sendRequest(p, ctx);
352     }
353
354     @Test
355     public void testVrfJsonTemplate() throws SvcLogicException {
356         SvcLogicContext ctx = new SvcLogicContext();
357         ctx.setAttribute("prop.l3vpn.vrf1-id", "10000000-0000-0000-0000-000000000007");
358         ctx.setAttribute("prop.l3vpn.vpn-policy1-id", "10000000-0000-0000-0000-000000000003");
359         ctx.setAttribute("prop.l3vpn.pe1_id", "a8098c1a-f86e-11da-bd1a-00112444be1e");
360         ctx.setAttribute("prop.l3vpn.vrf2-id", "10000000-0000-0000-0000-000000000009");
361         ctx.setAttribute("prop.l3vpn.vpn-policy2-id", "10000000-0000-0000-0000-000000000006");
362         ctx.setAttribute("prop.l3vpn.pe2_id", "a8098c1a-f86e-11da-bd1a-00112444be1a");
363
364         Map<String, String> p = new HashMap<String, String>();
365         p.put("templateFileName", "src/test/resources/l3smvrftemplate.json");
366         p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vrf-attributes");
367         p.put("restapiUser", "admin");
368         p.put("restapiPassword", "admin123");
369         p.put("format", "json");
370         p.put("httpMethod", "post");
371         p.put("responsePrefix", "restapi-result");
372         p.put("skipSending", "true");
373
374         RestapiCallNode rcn = new RestapiCallNode();
375         rcn.sendRequest(p, ctx);
376     }
377
378     @Test
379     public void testDeleteVpnJsonTemplate() throws SvcLogicException {
380         SvcLogicContext ctx = new SvcLogicContext();
381         ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
382         ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
383
384         Map<String, String> p = new HashMap<String, String>();
385         //p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
386         p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services"
387             + "/vpnservice=10000000-0000-0000-0000-000000000001");
388         p.put("restapiUser", "admin");
389         p.put("restapiPassword", "admin123");
390         p.put("format", "json");
391         p.put("httpMethod", "delete");
392         p.put("responsePrefix", "restapi-result");
393         p.put("skipSending", "true");
394
395         RestapiCallNode rcn = new RestapiCallNode();
396         rcn.sendRequest(p, ctx);
397     }
398
399     @Test
400     public void testL2DciTemplate() throws SvcLogicException {
401         SvcLogicContext ctx = new SvcLogicContext();
402         ctx.setAttribute("prop.dci-connects.id", "Id1");
403         ctx.setAttribute("prop.dci-connects.name", "Name1");
404         ctx.setAttribute("prop.dci-connects.local_networks[0]", "NetId1");
405         ctx.setAttribute("prop.dci-connects.local_networks[1]", "NetId2");
406         ctx.setAttribute("prop.dci-connects.evpn_irts[0]", "100:1");
407         ctx.setAttribute("prop.dci-connects.evpn_erts[0]", "100:2");
408         ctx.setAttribute("prop.dci-connects.evpn_irts[1]", "200:1");
409         ctx.setAttribute("prop.dci-connects.evpn_erts[1]", "200:2");
410         ctx.setAttribute("prop.dci-connects.vni", "1");
411
412         Map<String, String> p = new HashMap<String, String>();
413         p.put("templateFileName", "src/test/resources/l2-dci-connects-template.json");
414         p.put("restapiUrl", "http://echo.getpostman.com");
415         p.put("restapiUser", "user1");
416         p.put("restapiPassword", "abc123");
417         p.put("format", "json");
418         p.put("httpMethod", "post");
419         p.put("responsePrefix", "response");
420         p.put("skipSending", "true");
421
422         RestapiCallNode rcn = new RestapiCallNode();
423         rcn.sendRequest(p, ctx);
424     }
425
426     @Test
427     public void testL3DciTemplate() throws SvcLogicException {
428         SvcLogicContext ctx = new SvcLogicContext();
429         ctx.setAttribute("prop.dci-connects.id", "Id1");
430         ctx.setAttribute("prop.dci-connects.name", "Name1");
431         ctx.setAttribute("prop.dci-connects.local_networks_length", "2");
432         ctx.setAttribute("prop.dci-connects.local_networks[0]", "NetId1");
433         ctx.setAttribute("prop.dci-connects.local_networks[1]", "NetId2");
434         ctx.setAttribute("prop.dci-connects.evpn_irts[0]", "100:1");
435         ctx.setAttribute("prop.dci-connects.evpn_erts[0]", "100:2");
436         ctx.setAttribute("prop.dci-connects.evpn_irts[1]", "200:1");
437         ctx.setAttribute("prop.dci-connects.evpn_erts[1]", "200:2");
438         ctx.setAttribute("prop.dci-connects.vni", "1");
439
440         Map<String, String> p = new HashMap<String, String>();
441         p.put("templateFileName", "src/test/resources/l3-dci-connects-template.json");
442         p.put("restapiUrl", "http://echo.getpostman.com");
443         p.put("restapiUser", "user1");
444         p.put("restapiPassword", "abc123");
445         p.put("format", "json");
446         p.put("httpMethod", "post");
447         p.put("responsePrefix", "response");
448         p.put("skipSending", "true");
449
450         RestapiCallNode rcn = new RestapiCallNode();
451         rcn.sendRequest(p, ctx);
452
453     }
454
455     @Test
456     public void testControllerTokenTemplate() throws SvcLogicException {
457         SvcLogicContext ctx = new SvcLogicContext();
458         ctx.setAttribute("prop.sdncRestApi.thirdpartySdnc.user", "admin");
459         ctx.setAttribute("prop.sdncRestApi.thirdpartySdnc.password", "admin123");
460
461         Map<String, String> p = new HashMap<String, String>();
462         p.put("templateFileName", "src/test/resources/actokentemplate.json");
463         p.put("restapiUrl", "https://ipwan:18002/controller/v2/tokens");
464         p.put("format", "json");
465         p.put("httpMethod", "post");
466         p.put("responsePrefix", "restapi-result");
467         p.put("skipSending", "true");
468
469         RestapiCallNode rcn = new RestapiCallNode();
470         rcn.sendRequest(p, ctx);
471     }
472
473
474     @Test
475     public void testDeleteNoneAsContentType() throws SvcLogicException {
476         SvcLogicContext ctx = new SvcLogicContext();
477
478         Map<String, String> p = new HashMap<String, String>();
479         p.put("restapiUrl", "https://echo.getpostman.com/delete");
480         p.put("restapiUser", "user1");
481         p.put("restapiPassword", "pwd1");
482         p.put("httpMethod", "delete");
483         p.put("format", "none");
484         p.put("skipSending", "true");
485
486         RestapiCallNode rcn = new RestapiCallNode();
487         rcn.sendRequest(p, ctx);
488     }
489
490     @Test
491     public void testPostNoneAsContentType() throws SvcLogicException {
492         SvcLogicContext ctx = new SvcLogicContext();
493         ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
494         ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
495
496         Map<String, String> p = new HashMap<String, String>();
497         p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
498         p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services");
499         p.put("restapiUser", "admin");
500         p.put("restapiPassword", "admin123");
501         p.put("format", "none");
502         p.put("httpMethod", "post");
503         p.put("responsePrefix", "restapi-result");
504         p.put("skipSending", "true");
505
506         RestapiCallNode rcn = new RestapiCallNode();
507         rcn.sendRequest(p, ctx);
508     }
509
510     @Test
511     public void testDeleteOAuthType() throws SvcLogicException {
512         SvcLogicContext ctx = new SvcLogicContext();
513
514         Map<String, String> p = new HashMap<String, String>();
515         p.put("restapiUrl", "https://echo.getpostman.com/delete");
516         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
517         p.put("oAuthConsumerSecret", "secret");
518         p.put("oAuthSignatureMethod", "plainTEXT");
519         p.put("oAuthVersion", "1.0");
520         p.put("httpMethod", "delete");
521         p.put("format", "none");
522         p.put("skipSending", "true");
523
524         RestapiCallNode rcn = new RestapiCallNode();
525         rcn.sendRequest(p, ctx);
526     }
527
528     @Test
529     public void testDeleteAuthTypeBasic() throws SvcLogicException {
530         SvcLogicContext ctx = new SvcLogicContext();
531
532         Map<String, String> p = new HashMap<String, String>();
533         p.put("restapiUrl", "https://echo.getpostman.com/delete");
534         p.put("authType", "basic");
535         p.put("restapiUser", "admin");
536         p.put("restapiPassword", "admin123");
537         p.put("httpMethod", "delete");
538         p.put("format", "none");
539         p.put("skipSending", "true");
540
541         RestapiCallNode rcn = new RestapiCallNode();
542         rcn.sendRequest(p, ctx);
543     }
544
545     @Test
546     public void testDeleteAuthTypeDigest() throws SvcLogicException {
547         SvcLogicContext ctx = new SvcLogicContext();
548
549         Map<String, String> p = new HashMap<String, String>();
550         p.put("restapiUrl", "https://echo.getpostman.com/delete");
551         p.put("authType", "digest");
552         p.put("restapiUser", "admin");
553         p.put("restapiPassword", "admin123");
554         p.put("httpMethod", "delete");
555         p.put("format", "none");
556         p.put("skipSending", "true");
557
558         RestapiCallNode rcn = new RestapiCallNode();
559         rcn.sendRequest(p, ctx);
560     }
561
562     @Test
563     public void testDeleteAuthTypeOAuth() throws SvcLogicException {
564         SvcLogicContext ctx = new SvcLogicContext();
565
566         Map<String, String> p = new HashMap<String, String>();
567         p.put("restapiUrl", "https://echo.getpostman.com/delete");
568         p.put("authType", "oauth");
569         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
570         p.put("oAuthConsumerSecret", "secret");
571         p.put("oAuthSignatureMethod", "plainTEXT");
572         p.put("oAuthVersion", "1.0");
573         p.put("httpMethod", "delete");
574         p.put("format", "none");
575         p.put("skipSending", "true");
576
577         RestapiCallNode rcn = new RestapiCallNode();
578         rcn.sendRequest(p, ctx);
579     }
580
581     @Test
582     public void testDeleteAuthTypeNoneOAuth() throws SvcLogicException {
583         SvcLogicContext ctx = new SvcLogicContext();
584
585         Map<String, String> p = new HashMap<String, String>();
586         p.put("restapiUrl", "https://echo.getpostman.com/delete");
587         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
588         p.put("oAuthConsumerSecret", "secret");
589         p.put("oAuthSignatureMethod", "plainTEXT");
590         p.put("oAuthVersion", "1.0");
591         p.put("httpMethod", "delete");
592         p.put("format", "none");
593         p.put("skipSending", "true");
594
595         RestapiCallNode rcn = new RestapiCallNode();
596         rcn.sendRequest(p, ctx);
597     }
598     @Test
599     public void testDeleteAuthTypeNoneBasic() throws SvcLogicException {
600         SvcLogicContext ctx = new SvcLogicContext();
601
602         Map<String, String> p = new HashMap<String, String>();
603         p.put("restapiUrl", "https://echo.getpostman.com/delete");
604         p.put("restapiUser", "admin");
605         p.put("restapiPassword", "admin123");
606         p.put("httpMethod", "delete");
607         p.put("format", "none");
608         p.put("skipSending", "true");
609
610         RestapiCallNode rcn = new RestapiCallNode();
611         rcn.sendRequest(p, ctx);
612     }
613
614     @Test(expected = SvcLogicException.class)
615     public void testInvalidDeleteAuthTypeOAuth() throws SvcLogicException {
616         SvcLogicContext ctx = new SvcLogicContext();
617
618         Map<String, String> p = new HashMap<String, String>();
619         p.put("restapiUrl", "https://echo.getpostman.com/delete");
620         p.put("authType", "oauth");
621         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
622         p.put("oAuthConsumerSecret", "secret");
623         p.put("httpMethod", "delete");
624         p.put("format", "none");
625         p.put("skipSending", "true");
626
627         RestapiCallNode rcn = new RestapiCallNode();
628         rcn.sendRequest(p, ctx);
629     }
630
631     @Test(expected = SvcLogicException.class)
632     public void testInvalidDeleteAuthTypeBasic() throws SvcLogicException {
633         SvcLogicContext ctx = new SvcLogicContext();
634
635         Map<String, String> p = new HashMap<String, String>();
636         p.put("restapiUrl", "https://echo.getpostman.com/delete");
637         p.put("authType", "basic");
638         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
639         p.put("oAuthConsumerSecret", "secret");
640         p.put("httpMethod", "delete");
641         p.put("format", "none");
642         p.put("skipSending", "true");
643
644         RestapiCallNode rcn = new RestapiCallNode();
645         rcn.sendRequest(p, ctx);
646     }
647
648     @Test(expected = SvcLogicException.class)
649     public void testInvalidDeleteAuthTypeDigest() throws SvcLogicException {
650         SvcLogicContext ctx = new SvcLogicContext();
651
652         Map<String, String> p = new HashMap<String, String>();
653         p.put("restapiUrl", "https://echo.getpostman.com/delete");
654         p.put("authType", "digest");
655         p.put("oAuthConsumerKey", "f2a1ed52710d4533bde25be6da03b6e3");
656         p.put("oAuthConsumerSecret", "secret");
657         p.put("httpMethod", "delete");
658         p.put("format", "none");
659         p.put("skipSending", "true");
660
661         RestapiCallNode rcn = new RestapiCallNode();
662         rcn.sendRequest(p, ctx);
663     }
664
665     @Test
666     public void testMultipartFormData() throws SvcLogicException {
667         final ResourceConfig resourceConfig = new ResourceConfig(
668                 MultipartServerMock.class, MultiPartFeature.class);
669         GrizzlyHttpServerFactory.createHttpServer(
670                 URI.create("http://localhost:8080/"),resourceConfig);
671
672         Map<String, String> p = new HashMap<>();
673         p.put("multipartFormData", "true");
674         p.put("format", "none");
675         p.put("multipartFile", "src/test/resources/test-template.json");
676         p.put("restapiUrl", "http://localhost:8080/file-upload/upload");
677
678         SvcLogicContext ctx = new SvcLogicContext();
679         RestapiCallNode rcn = new RestapiCallNode();
680         rcn.sendRequest(p, ctx);
681         assertThat(ctx.getAttribute("response-code"), is("200"));
682         assertThat(ctx.getAttribute("httpResponse"), is( "test-template.json"));
683     }
684 }