increase coverage for restAdaptor HTTP_DELETE
[appc.git] / appc-adapters / appc-rest-adapter / appc-rest-adapter-bundle / src / test / java / org / onap / appc / adapter / rest / impl / TestRestAdapterImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Copyright (C) 2017 Intel Corp.
10  * =============================================================================
11  * Modifications Copyright (C) 2018 Samsung
12  * ================================================================================
13  * Licensed under the Apache License, Version 2.0 (the "License");
14  * you may not use this file except in compliance with the License.
15  * You may obtain a copy of the License at
16  * 
17  *      http://www.apache.org/licenses/LICENSE-2.0
18  * 
19  * Unless required by applicable law or agreed to in writing, software
20  * distributed under the License is distributed on an "AS IS" BASIS,
21  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22  * See the License for the specific language governing permissions and
23  * limitations under the License.
24  * 
25  * ============LICENSE_END=========================================================
26  */
27
28 package org.onap.appc.adapter.rest.impl;
29
30 import static org.junit.Assert.assertEquals;
31
32 import java.io.IOException;
33 import java.util.HashMap;
34 import java.util.Map;
35
36 import org.apache.http.client.methods.HttpDelete;
37 import org.apache.http.client.methods.HttpGet;
38 import org.apache.http.client.methods.HttpPost;
39 import org.apache.http.client.methods.HttpPut;
40 import org.apache.http.client.methods.HttpRequestBase;
41 import org.apache.http.util.EntityUtils;
42 import org.junit.Before;
43 import org.junit.BeforeClass;
44 import org.junit.Test;
45
46 import org.onap.appc.exceptions.APPCException;
47 import com.att.cdp.exceptions.ZoneException;
48 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
49
50
51 /**
52  * Test the ProviderAdapter implementation.
53  */
54 public class TestRestAdapterImpl {
55     private RestAdapterImpl adapter;
56
57
58     @SuppressWarnings("nls")
59     @BeforeClass
60     public static void once() throws NoSuchFieldException, SecurityException, NoSuchMethodException {
61
62     }
63
64     @Before
65     public void setup() throws IllegalArgumentException, IllegalAccessException {
66
67         adapter = new RestAdapterImpl();
68     }
69     
70     @Test
71     public void testCreateHttpRequestGet() throws IOException, IllegalStateException, IllegalArgumentException,
72         ZoneException, APPCException {
73
74         Map<String, String> params = new HashMap<>();
75         params.put("org.onap.appc.instance.URI", "http://example.com:8080/about/health");
76         params.put("org.onap.appc.instance.haveHeader","false");
77
78         HttpGet httpGet = ((HttpGet) givenParams(params, "GET"));
79
80         assertEquals("GET", httpGet.getMethod());
81         assertEquals("http://example.com:8080/about/health", httpGet.getURI().toURL().toString());
82     }
83     
84     @Test
85     public void testCreateHttpRequestPost() throws IOException, IllegalStateException, IllegalArgumentException,
86         ZoneException, APPCException {    
87
88         Map<String, String> params = new HashMap<>();
89         params.put("org.onap.appc.instance.URI", "http://example.com:8081/posttest");
90         params.put("org.onap.appc.instance.haveHeader","false");
91         params.put("org.onap.appc.instance.requestBody", "{\"name\":\"MyNode\", \"width\":200, \"height\":100}");
92
93         HttpPost httpPost = ((HttpPost) givenParams(params, "POST"));
94
95         assertEquals("POST", httpPost.getMethod());
96         assertEquals("http://example.com:8081/posttest", httpPost.getURI().toURL().toString());
97         assertEquals("{\"name\":\"MyNode\", \"width\":200, \"height\":100}", EntityUtils.toString(httpPost.getEntity()));
98     }
99     
100     @Test
101     public void testCreateHttpRequestPut() throws IOException, IllegalStateException, IllegalArgumentException,
102         ZoneException, APPCException {    
103
104         Map<String, String> params = new HashMap<>();
105         params.put("org.onap.appc.instance.URI", "http://example.com:8081/puttest");
106         params.put("org.onap.appc.instance.haveHeader","false");
107         params.put("org.onap.appc.instance.requestBody", "{\"name\":\"MyNode2\", \"width\":300, \"height\":300}");
108
109         HttpPut httpPut = ((HttpPut) givenParams(params, "PUT"));
110         //Header headers[] = httpPut.getAllHeaders();
111
112         assertEquals("PUT", httpPut.getMethod());
113         assertEquals("http://example.com:8081/puttest", httpPut.getURI().toURL().toString());
114         assertEquals("{\"name\":\"MyNode2\", \"width\":300, \"height\":300}", EntityUtils.toString(httpPut.getEntity()));
115     }
116
117     @Test
118     public void testCreateRequestNoParamPut() throws IOException, IllegalStateException, IllegalArgumentException,
119             ZoneException, APPCException {
120
121         SvcLogicContext ctx = new SvcLogicContext();
122         Map<String, String> params = new HashMap<>();
123
124         adapter.commonPut(params, ctx);
125
126         assertEquals("failure", ctx.getStatus());
127         assertEquals("500", ctx.getAttribute("org.openecomp.rest.result.code"));
128         assertEquals("java.lang.IllegalArgumentException: HTTP request may not be null",
129                      ctx.getAttribute("org.openecomp.rest.result.message"));
130     }
131
132     @Test
133     public void testCreateRequestInvalidParamPut() throws IOException, IllegalStateException, IllegalArgumentException,
134             ZoneException, APPCException {
135
136         SvcLogicContext ctx = new SvcLogicContext();
137         Map<String, String> params = new HashMap<>();
138         params.put("org.onap.appc.instance.URI", "boo");
139         params.put("org.onap.appc.instance.haveHeader","false");
140         params.put("org.onap.appc.instance.requestBody", "{\"name\":\"MyNode2\", \"width\":300, \"height\":300}");
141
142         adapter.commonPut(params, ctx);
143
144         assertEquals("failure", ctx.getStatus());
145         assertEquals("500", ctx.getAttribute("org.openecomp.rest.result.code"));
146         assertEquals("org.apache.http.client.ClientProtocolException",
147                      ctx.getAttribute("org.openecomp.rest.result.message"));
148     }
149
150     @Test
151     public void testCreateHttpRequestDelete() throws IOException, IllegalStateException, IllegalArgumentException,
152         ZoneException, APPCException {    
153
154         Map<String, String> params = new HashMap<>();
155         params.put("org.onap.appc.instance.URI", "http://example.com:8081/deletetest");
156         params.put("org.onap.appc.instance.haveHeader","false");
157
158         HttpDelete httpDelete = ((HttpDelete) givenParams(params, "DELETE"));
159
160         assertEquals("DELETE", httpDelete.getMethod());
161         assertEquals("http://example.com:8081/deletetest", httpDelete.getURI().toURL().toString());
162     }
163
164     @Test
165     public void testCreateRequestNoParamDelete() throws IOException, IllegalStateException, IllegalArgumentException,
166             ZoneException, APPCException {
167
168         SvcLogicContext ctx = new SvcLogicContext();
169         Map<String, String> params = new HashMap<>();
170
171         adapter.commonDelete(params, ctx);
172
173         assertEquals("failure", ctx.getStatus());
174         assertEquals("500", ctx.getAttribute("org.openecomp.rest.result.code"));
175         assertEquals("java.lang.IllegalArgumentException: HTTP request may not be null",
176                      ctx.getAttribute("org.openecomp.rest.result.message"));
177     }
178
179     @Test
180     public void testCreateRequestInvalidParamDelete() throws IOException, IllegalStateException, IllegalArgumentException,
181             ZoneException, APPCException {
182
183         SvcLogicContext ctx = new SvcLogicContext();
184         Map<String, String> params = new HashMap<>();
185         params.put("org.onap.appc.instance.URI", "boo");
186         params.put("org.onap.appc.instance.haveHeader","false");
187         params.put("org.onap.appc.instance.requestBody", "{\"name\":\"MyNode2\", \"width\":300, \"height\":300}");
188
189         adapter.commonDelete(params, ctx);
190
191         assertEquals("failure", ctx.getStatus());
192         assertEquals("500", ctx.getAttribute("org.openecomp.rest.result.code"));
193         assertEquals("org.apache.http.client.ClientProtocolException",
194                      ctx.getAttribute("org.openecomp.rest.result.message"));
195     }
196     
197     private HttpRequestBase givenParams(Map<String, String> params, String method){
198         SvcLogicContext ctx = new SvcLogicContext();
199         RequestContext rc = new RequestContext(ctx);
200         rc.isAlive();
201
202         adapter = new RestAdapterImpl();
203         return adapter.createHttpRequest(method, params, rc);
204     }
205
206
207 }