2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.mso.cloudify.connector.http;
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
24 import static com.github.tomakehurst.wiremock.client.WireMock.post;
25 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
26 import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
28 import com.github.tomakehurst.wiremock.junit.WireMockRule;
29 import static com.github.tomakehurst.wiremock.client.WireMock.get;
30 import static com.github.tomakehurst.wiremock.client.WireMock.delete;
31 import static com.github.tomakehurst.wiremock.client.WireMock.put;
32 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
33 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
34 import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
35 import static com.github.tomakehurst.wiremock.client.WireMock.verify;
36 import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
37 import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor;
38 import static com.github.tomakehurst.wiremock.client.WireMock.deleteRequestedFor;
39 import org.apache.http.HttpStatus;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.rules.ExpectedException;
43 import static org.hamcrest.CoreMatchers.*;
44 import org.openecomp.mso.cloudify.base.client.CloudifyRequest;
45 import org.openecomp.mso.cloudify.base.client.CloudifyResponseException;
46 import org.openecomp.mso.cloudify.base.client.HttpMethod;
47 import org.openecomp.mso.cloudify.v3.model.Deployment;
49 public class HttpClientConnectorTest {
52 public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort());
55 public ExpectedException thrown = ExpectedException.none();
58 public void sunnyDay_POST(){
59 wireMockRule.stubFor(post(urlPathEqualTo("/testUrl")).willReturn(aResponse()
60 .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
61 int port = wireMockRule.port();
62 HttpClientConnector conector = new HttpClientConnector();
63 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
64 Deployment deployment = new Deployment();
65 deployment.setId("id");
66 request.entity(deployment, "application/json");
67 request.endpoint("http://localhost:"+port+"/testUrl");
68 request.setBasicAuthentication("USER","PASSWORD");
69 request.header("Content-Type","application/json");
70 request.method(HttpMethod.POST);
71 conector.request(request);
72 verify(postRequestedFor(urlEqualTo("/testUrl")));
77 public void sunnyDay_GET(){
78 wireMockRule.stubFor(get(urlPathEqualTo("/testUrl")).willReturn(aResponse()
79 .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
80 int port = wireMockRule.port();
81 HttpClientConnector conector = new HttpClientConnector();
82 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
83 request.endpoint("http://localhost:"+port+"/testUrl");
84 request.setBasicAuthentication("USER","PASSWORD");
85 request.method(HttpMethod.GET);
86 conector.request(request);
87 verify(getRequestedFor(urlEqualTo("/testUrl")));
91 public void sunnyDay_PUT(){
92 wireMockRule.stubFor(put(urlPathEqualTo("/testUrl")).willReturn(aResponse()
93 .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
94 int port = wireMockRule.port();
95 HttpClientConnector conector = new HttpClientConnector();
96 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
97 request.endpoint("http://localhost:"+port+"/testUrl");
98 request.setBasicAuthentication("USER","PASSWORD");
99 request.method(HttpMethod.PUT);
100 conector.request(request);
101 verify(putRequestedFor(urlEqualTo("/testUrl")));
106 public void sunnyDay_DELETE(){
107 wireMockRule.stubFor(delete(urlPathEqualTo("/testUrl")).willReturn(aResponse()
108 .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
109 int port = wireMockRule.port();
110 HttpClientConnector conector = new HttpClientConnector();
111 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
112 request.endpoint("http://localhost:"+port+"/testUrl");
113 request.setBasicAuthentication("USER","PASSWORD");
114 request.method(HttpMethod.DELETE);
115 conector.request(request);
116 verify(deleteRequestedFor(urlEqualTo("/testUrl")));
121 public void rainydDay_PATCH(){
122 thrown.expect(HttpClientException.class);
123 thrown.expectMessage("Unrecognized HTTP Method: PATCH");
124 HttpClientConnector conector = new HttpClientConnector();
125 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
126 request.endpoint("http://localhost:123123/testUrl");
127 request.setBasicAuthentication("USER","PASSWORD");
128 request.method(HttpMethod.PATCH);
129 conector.request(request);
135 public void rainydDay_RunTimeException(){
136 wireMockRule.stubFor(post(urlEqualTo("/503")).willReturn(
137 aResponse().withStatus(503).withHeader("Content-Type", "text/plain").withBody("failure")));
138 thrown.expect(RuntimeException.class);
139 thrown.expectMessage("Unexpected client exception");
140 HttpClientConnector conector = new HttpClientConnector();
141 CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
142 request.endpoint("http://localhost:123123/503");
143 request.setBasicAuthentication("USER","PASSWORD");
144 request.method(HttpMethod.POST);
145 conector.request(request);