2 * Copyright 2017 Huawei Technologies Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient;
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertNotNull;
22 import java.io.IOException;
23 import java.lang.reflect.Field;
25 import org.eclipse.jetty.client.HttpClient;
26 import org.eclipse.jetty.client.HttpExchange;
27 import org.junit.After;
28 import org.junit.AfterClass;
29 import org.junit.Assert;
30 import org.junit.Before;
31 import org.junit.BeforeClass;
32 import org.junit.Rule;
33 import org.junit.Test;
34 import org.junit.rules.ExpectedException;
35 import org.junit.runner.RunWith;
39 import mockit.integration.junit4.JMockit;
49 @RunWith(JMockit.class)
50 public class TestHttpRest {
53 public ExpectedException thrown = ExpectedException.none();
58 * @throws java.lang.Exception
62 public static void setUpBeforeClass() throws Exception {
68 * @throws java.lang.Exception
72 public static void tearDownAfterClass() throws Exception {
78 * @throws java.lang.Exception
82 public void setUp() throws Exception {
88 * @throws java.lang.Exception
92 public void tearDown() throws Exception {
102 public void testInitHttpRest() throws Exception {
103 final RestfulOptions options = new RestfulOptions();
104 new MockUp<HttpClient>() {
107 public void doStart() {
110 final HttpRest httpRest = new HttpRest();
111 httpRest.initHttpRest(options);
112 final Field httpClient = HttpBaseRest.class.getDeclaredField("client");
113 httpClient.setAccessible(true);
114 Assert.assertNotNull(httpClient.get(httpRest));
120 * @throws NoSuchFieldException
125 public void testCreateRestHttpContentExchange() throws NoSuchFieldException, Exception {
126 final HttpBaseRest httpRest = new HttpRest();
127 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
130 public void callback(final RestfulResponse response) {
135 public void handleExcepion(final Throwable e) {
140 final RestHttpContentExchange exchange = httpRest.createRestHttpContentExchange(callback);
141 assertNotNull(exchange);
142 final Field callbackField = RestHttpContentExchange.class.getDeclaredField("callback");
143 assertNotNull(callbackField);
153 public void testGetStringRestfulParametes() throws Exception {
154 final RestfulOptions options = new RestfulOptions();
156 final HttpRest httpRest = getHttpRest(options);
157 new MockUp<RestHttpContentExchange>() {
160 public int waitForDone() {
161 return HttpExchange.STATUS_COMPLETED;
165 public RestfulResponse getResponse() throws IOException {
166 final RestfulResponse response = new RestfulResponse();
167 response.setStatus(HttpExchange.STATUS_COMPLETED);
172 final RestfulParametes parametes = new RestfulParametes();
173 parametes.put("id", "1234");
174 parametes.put("name", "some-name");
175 parametes.put("address", null);
176 parametes.putHttpContextHeader("Content-Type", "application/json");
177 parametes.putHttpContextHeader("Accept-Encoding", "*/*");
178 final RestfulResponse response = httpRest.get("path/to/service", parametes);
179 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
190 public void testGetStringRestfulParametesRestfulOptions() throws Exception {
191 final RestfulOptions options = new RestfulOptions();
193 final HttpRest httpRest = getHttpRest(options);
194 new MockUp<RestHttpContentExchange>() {
197 public int waitForDone() {
198 return HttpExchange.STATUS_COMPLETED;
202 public RestfulResponse getResponse() throws IOException {
203 final RestfulResponse response = new RestfulResponse();
204 response.setStatus(HttpExchange.STATUS_COMPLETED);
209 final RestfulResponse response = httpRest.get("path/to/service", new RestfulParametes(), options);
210 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
220 public void testHeadStringRestfulParametes() throws Exception {
221 final RestfulOptions options = new RestfulOptions();
223 final HttpRest httpRest = getHttpRest(options);
224 new MockUp<RestHttpContentExchange>() {
227 public int waitForDone() {
228 return HttpExchange.STATUS_COMPLETED;
232 public RestfulResponse getResponse() throws IOException {
233 final RestfulResponse response = new RestfulResponse();
234 response.setStatus(HttpExchange.STATUS_COMPLETED);
239 final RestfulParametes parametes = new RestfulParametes();
240 parametes.put("id", "1234");
241 parametes.put("name", "some-name");
242 parametes.put("address", null);
243 parametes.putHttpContextHeader("Content-Type", "");
244 parametes.putHttpContextHeader("Accept-Encoding", "");
245 final RestfulResponse response = httpRest.head("path/to/service", parametes);
246 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
256 public void testHeadStringRestfulParametesRestfulOptions() throws Exception {
257 final RestfulOptions options = new RestfulOptions();
259 final HttpRest httpRest = getHttpRest(options);
260 new MockUp<RestHttpContentExchange>() {
263 public int waitForDone() {
264 return HttpExchange.STATUS_COMPLETED;
268 public RestfulResponse getResponse() throws IOException {
269 final RestfulResponse response = new RestfulResponse();
270 response.setStatus(HttpExchange.STATUS_COMPLETED);
275 final RestfulParametes parametes = new RestfulParametes();
276 parametes.put("id", "1234");
277 parametes.put("name", "some-name");
278 parametes.put("address", null);
279 parametes.putHttpContextHeader("Content-Type", "");
280 parametes.putHttpContextHeader("Accept-Encoding", "");
281 final RestfulResponse response = httpRest.head("path/to/service", parametes, options);
282 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
290 * @throws ServiceException
293 private HttpRest getHttpRest(final RestfulOptions options) throws ServiceException {
294 final HttpRest httpRest = new HttpRest();
296 new MockUp<HttpClient>() {
299 public void doStart() {
303 public void send(final HttpExchange exchange) throws IOException {
306 httpRest.initHttpRest(options);
319 public void testAsyncGetStringRestfulParametesRestfulAsyncCallback() throws Exception {
320 final RestfulOptions options = new RestfulOptions();
322 final HttpRest httpRest = getHttpRest(options);
323 new MockUp<RestHttpContentExchange>() {
326 public int waitForDone() {
327 return HttpExchange.STATUS_COMPLETED;
331 public RestfulResponse getResponse() throws IOException {
332 final RestfulResponse response = new RestfulResponse();
333 response.setStatus(HttpExchange.STATUS_COMPLETED);
339 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
342 public void callback(final RestfulResponse response) {
347 public void handleExcepion(final Throwable e) {
352 httpRest.asyncGet("path/to/service", new RestfulParametes(), callback);
353 httpRest.asyncGet("path/to/service", new RestfulParametes(), null);
359 * @throws ServiceException
363 public void testAsyncGetStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException {
364 final RestfulOptions options = new RestfulOptions();
366 final HttpRest httpRest = getHttpRest(options);
367 new MockUp<RestHttpContentExchange>() {
370 public int waitForDone() {
371 return HttpExchange.STATUS_COMPLETED;
375 public RestfulResponse getResponse() throws IOException {
376 final RestfulResponse response = new RestfulResponse();
377 response.setStatus(HttpExchange.STATUS_COMPLETED);
383 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
386 public void callback(final RestfulResponse response) {
391 public void handleExcepion(final Throwable e) {
396 httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), callback);
397 httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), null);
403 * @throws ServiceException
407 public void testPutStringRestfulParametes() throws ServiceException {
408 final RestfulOptions options = new RestfulOptions();
410 final HttpRest httpRest = getHttpRest(options);
411 new MockUp<RestHttpContentExchange>() {
414 public int waitForDone() {
415 return HttpExchange.STATUS_COMPLETED;
419 public RestfulResponse getResponse() throws IOException {
420 final RestfulResponse response = new RestfulResponse();
421 response.setStatus(HttpExchange.STATUS_COMPLETED);
426 final RestfulParametes parametes = new RestfulParametes();
427 parametes.put("id", "1234");
428 parametes.put("name", "some-name");
429 parametes.put("address", null);
430 parametes.putHttpContextHeader("Content-Type", "");
431 parametes.putHttpContextHeader("Accept-Encoding", "");
432 final RestfulResponse response = httpRest.put("path/to/service", parametes);
433 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
439 * @throws ServiceException
443 public void testPutStringRestfulParametesRestfulOptions() throws ServiceException {
445 final RestfulOptions options = new RestfulOptions();
447 final HttpRest httpRest = getHttpRest(options);
448 new MockUp<RestHttpContentExchange>() {
451 public int waitForDone() {
452 return HttpExchange.STATUS_COMPLETED;
456 public RestfulResponse getResponse() throws IOException {
457 final RestfulResponse response = new RestfulResponse();
458 response.setStatus(HttpExchange.STATUS_COMPLETED);
463 final RestfulParametes parametes = new RestfulParametes();
464 parametes.put("id", "1234");
465 parametes.put("name", "some-name");
466 parametes.put("address", null);
467 parametes.putHttpContextHeader("Content-Type", "");
468 parametes.putHttpContextHeader("Accept-Encoding", "");
469 final RestfulResponse response = httpRest.put("path/to/service", parametes, null);
470 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
476 * @throws ServiceException
480 public void testAsyncPutStringRestfulParametesRestfulAsyncCallback() throws ServiceException {
481 final RestfulOptions options = new RestfulOptions();
483 final HttpRest httpRest = getHttpRest(options);
484 new MockUp<RestHttpContentExchange>() {
487 public int waitForDone() {
488 return HttpExchange.STATUS_COMPLETED;
492 public RestfulResponse getResponse() throws IOException {
493 final RestfulResponse response = new RestfulResponse();
494 response.setStatus(HttpExchange.STATUS_COMPLETED);
500 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
503 public void callback(final RestfulResponse response) {
508 public void handleExcepion(final Throwable e) {
513 httpRest.asyncPut("path/to/service", new RestfulParametes(), callback);
514 httpRest.asyncPut("path/to/service", new RestfulParametes(), null);
524 public void testAsyncPutStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws Exception {
525 final RestfulOptions options = new RestfulOptions();
527 final HttpRest httpRest = getHttpRest(options);
528 new MockUp<RestHttpContentExchange>() {
531 public int waitForDone() {
532 return HttpExchange.STATUS_COMPLETED;
536 public RestfulResponse getResponse() throws IOException {
537 final RestfulResponse response = new RestfulResponse();
538 response.setStatus(HttpExchange.STATUS_COMPLETED);
544 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
547 public void callback(final RestfulResponse response) {
552 public void handleExcepion(final Throwable e) {
557 httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), callback);
558 httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), null);
568 public void testAsyncPostStringRestfulParametesRestfulAsyncCallback() throws Exception {
569 final RestfulOptions options = new RestfulOptions();
570 options.setRestTimeout(10);
572 final HttpBaseRest httpRest = getHttpRest(options);
573 new MockUp<RestHttpContentExchange>() {
576 public int waitForDone() {
581 public RestfulResponse getResponse() throws IOException {
582 final RestfulResponse response = new RestfulResponse();
583 response.setStatus(HttpExchange.STATUS_EXCEPTED);
589 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
592 public void callback(final RestfulResponse response) {
597 public void handleExcepion(final Throwable e) {
602 httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback);
603 httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null);
609 * @throws ServiceException
613 public void testAsyncPostStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException {
614 final RestfulOptions options = new RestfulOptions();
615 options.setRestTimeout(10);
617 final HttpBaseRest httpRest = getHttpRest(options);
618 new MockUp<RestHttpContentExchange>() {
621 public int waitForDone() {
622 return HttpExchange.STATUS_COMPLETED;
626 public RestfulResponse getResponse() throws IOException {
627 final RestfulResponse response = new RestfulResponse();
628 response.setStatus(HttpExchange.STATUS_COMPLETED);
634 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
637 public void callback(final RestfulResponse response) {
642 public void handleExcepion(final Throwable e) {
647 httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback);
648 httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null);
654 * @throws ServiceException
658 public void testDeleteStringRestfulParametes() throws ServiceException {
659 final RestfulOptions options = new RestfulOptions();
661 final HttpBaseRest httpRest = getHttpRest(options);
663 final RestfulResponse response = httpRest.delete("path/to/service", null);
664 assertEquals(-1, response.getStatus());
670 * @throws ServiceException
674 public void testDeleteStringRestfulParametesRestfulOptions() throws ServiceException {
675 final RestfulOptions options = new RestfulOptions();
677 final HttpBaseRest httpRest = getHttpRest(options);
678 new MockUp<RestHttpContentExchange>() {
681 public int waitForDone() {
682 return HttpExchange.STATUS_COMPLETED;
686 public RestfulResponse getResponse() throws IOException {
687 final RestfulResponse response = new RestfulResponse();
688 response.setStatus(HttpExchange.STATUS_COMPLETED);
693 final RestfulParametes parameters = new RestfulParametes();
694 parameters.put("id", "1234");
695 parameters.put("name", "some-name");
696 parameters.put("address", null);
697 parameters.setRawData("{ \"data\"=\"sample JSON data\"");
698 parameters.putHttpContextHeader("Content-Type", "");
699 parameters.putHttpContextHeader("Accept-Encoding", "");
700 final RestfulResponse response = httpRest.delete("path/to/service", parameters, options);
701 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
707 * @throws ServiceException
711 public void testAsyncDeleteStringRestfulParametesRestfulAsyncCallback() throws ServiceException {
712 final RestfulOptions options = new RestfulOptions();
713 options.setRestTimeout(10);
715 final HttpBaseRest httpRest = getHttpRest(options);
716 new MockUp<RestHttpContentExchange>() {
719 public int waitForDone() {
720 return HttpExchange.STATUS_COMPLETED;
724 public RestfulResponse getResponse() throws IOException {
725 final RestfulResponse response = new RestfulResponse();
726 response.setStatus(HttpExchange.STATUS_COMPLETED);
732 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
735 public void callback(final RestfulResponse response) {
740 public void handleExcepion(final Throwable e) {
745 httpRest.asyncDelete("path/to/service", new RestfulParametes(), callback);
746 httpRest.asyncDelete("path/to/service", new RestfulParametes(), null);
752 * @throws ServiceException
756 public void testAsyncDeleteStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException {
757 final RestfulOptions options = new RestfulOptions();
758 options.setRestTimeout(10);
760 final HttpBaseRest httpRest = getHttpRest(options);
761 new MockUp<RestHttpContentExchange>() {
764 public int waitForDone() {
765 return HttpExchange.STATUS_COMPLETED;
769 public RestfulResponse getResponse() throws IOException {
770 final RestfulResponse response = new RestfulResponse();
771 response.setStatus(HttpExchange.STATUS_COMPLETED);
777 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
780 public void callback(final RestfulResponse response) {
785 public void handleExcepion(final Throwable e) {
790 httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, callback);
791 httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, null);
797 * @throws ServiceException
801 public void testPatchStringRestfulParametes() throws ServiceException {
802 final RestfulOptions options = new RestfulOptions();
804 final HttpBaseRest httpRest = getHttpRest(options);
805 new MockUp<RestHttpContentExchange>() {
808 public int waitForDone() {
809 return HttpExchange.STATUS_COMPLETED;
813 public RestfulResponse getResponse() throws IOException {
814 final RestfulResponse response = new RestfulResponse();
815 response.setStatus(HttpExchange.STATUS_COMPLETED);
820 final RestfulParametes parameters = new RestfulParametes();
821 parameters.put("id", "1234");
822 parameters.put("name", "some-name");
823 parameters.put("address", null);
824 parameters.setRawData("{ \"data\"=\"sample JSON data\"");
825 parameters.putHttpContextHeader("Content-Type", "");
826 parameters.putHttpContextHeader("Accept-Encoding", "");
827 final RestfulResponse response = httpRest.patch("path/to/service", parameters);
828 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
834 * @throws ServiceException
838 public void testPatchStringRestfulParametesRestfulOptions() throws ServiceException {
839 final RestfulOptions options = new RestfulOptions();
841 final HttpBaseRest httpRest = getHttpRest(options);
842 new MockUp<RestHttpContentExchange>() {
845 public int waitForDone() {
846 return HttpExchange.STATUS_COMPLETED;
850 public RestfulResponse getResponse() throws IOException {
851 final RestfulResponse response = new RestfulResponse();
852 response.setStatus(HttpExchange.STATUS_COMPLETED);
857 final RestfulParametes parameters = new RestfulParametes();
858 parameters.put("id", "1234");
859 parameters.put("name", "some-name");
860 parameters.put("address", null);
861 parameters.setRawData("{ \"data\"=\"sample JSON data\"");
862 parameters.putHttpContextHeader("Content-Type", "");
863 parameters.putHttpContextHeader("Accept-Encoding", "");
864 final RestfulResponse response = httpRest.patch("path/to/service", parameters, options);
865 assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus());
871 * @throws ServiceException
875 public void testAsyncPatchStringRestfulParametesRestfulAsyncCallback() throws ServiceException {
876 final RestfulOptions options = new RestfulOptions();
877 options.setRestTimeout(10);
879 final HttpBaseRest httpRest = getHttpRest(options);
880 new MockUp<RestHttpContentExchange>() {
883 public int waitForDone() {
884 return HttpExchange.STATUS_COMPLETED;
888 public RestfulResponse getResponse() throws IOException {
889 final RestfulResponse response = new RestfulResponse();
890 response.setStatus(HttpExchange.STATUS_COMPLETED);
896 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
899 public void callback(final RestfulResponse response) {
904 public void handleExcepion(final Throwable e) {
909 httpRest.asyncPatch("path/to/service", new RestfulParametes(), callback);
910 httpRest.asyncPatch("path/to/service", new RestfulParametes(), null);
916 * @throws ServiceException
920 public void testAsyncPatchStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException {
921 final RestfulOptions options = new RestfulOptions();
922 options.setRestTimeout(10);
924 final HttpBaseRest httpRest = getHttpRest(options);
925 new MockUp<RestHttpContentExchange>() {
928 public int waitForDone() {
929 return HttpExchange.STATUS_COMPLETED;
933 public RestfulResponse getResponse() throws IOException {
934 final RestfulResponse response = new RestfulResponse();
935 response.setStatus(HttpExchange.STATUS_COMPLETED);
941 final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
944 public void callback(final RestfulResponse response) {
949 public void handleExcepion(final Throwable e) {
954 httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, callback);
955 httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, null);