2 * //******************************************************************
4 * // Copyright 2016 Samsung Electronics All Rights Reserved.
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
12 * // http://www.apache.org/licenses/LICENSE-2.0
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.
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
23 package org.iotivity.cloud.ciserver.resources;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.Mockito.mock;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.concurrent.CountDownLatch;
33 import org.iotivity.cloud.base.device.CoapDevice;
34 import org.iotivity.cloud.base.protocols.IRequest;
35 import org.iotivity.cloud.base.protocols.IResponse;
36 import org.iotivity.cloud.base.protocols.MessageBuilder;
37 import org.iotivity.cloud.base.protocols.coap.CoapResponse;
38 import org.iotivity.cloud.base.protocols.enums.ContentFormat;
39 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
40 import org.iotivity.cloud.base.protocols.enums.ResponseStatus;
41 import org.iotivity.cloud.util.Cbor;
42 import org.junit.After;
43 import org.junit.Before;
44 import org.junit.Test;
45 import org.mockito.Mockito;
46 import org.mockito.MockitoAnnotations;
47 import org.mockito.invocation.InvocationOnMock;
48 import org.mockito.stubbing.Answer;
50 public class KeepAliveResourceTest {
52 private KeepAliveResource keepAliveResource;
53 private CoapDevice mockDevice;
54 private Cbor<HashMap<String, ArrayList<Integer>>> mCbor = new Cbor<>();
55 private final CountDownLatch mLatch = new CountDownLatch(
57 private IResponse mRes;
58 private int[] mInterval = { 1, 2, 4,
62 public void setUp() throws Exception {
63 keepAliveResource = new KeepAliveResource(mInterval);
64 MockitoAnnotations.initMocks(this);
65 mockDevice = mock(CoapDevice.class);
68 Mockito.doAnswer(new Answer<Object>() {
70 public CoapResponse answer(InvocationOnMock invocation)
72 Object[] args = invocation.getArguments();
73 CoapResponse resp = (CoapResponse) args[0];
75 .println("\t----payload : " + resp.getPayloadString());
77 .println("\t----responsestatus : " + resp.getStatus());
81 }).when(mockDevice).sendResponse(Mockito.anyObject());
82 keepAliveResource.startSessionChecker(0, 3000);
86 public void Endup() throws Exception {
87 keepAliveResource.stopSessionChecker();
91 public void testOnDefaultGetRequestReceived() {
92 IRequest request = MessageBuilder.createRequest(RequestMethod.GET,
94 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
95 HashMap<String, ArrayList<Integer>> payloadData = mCbor
96 .parsePayloadFromCbor(mRes.getPayload(), HashMap.class);
97 HashMap<String, ArrayList<Integer>> comparisonData = new HashMap<>();
98 ArrayList<Integer> comparisonArray = new ArrayList<>();
99 comparisonArray.add(1);
100 comparisonArray.add(2);
101 comparisonArray.add(4);
102 comparisonArray.add(8);
103 comparisonData.put("inarray", comparisonArray);
104 assertEquals(payloadData, comparisonData);
105 assertTrue(methodCheck(mRes, ResponseStatus.CONTENT));
109 public void testOnDefaultPutRequestReceived() {
110 HashMap<String, Integer> payloadData = new HashMap<>();
111 Cbor<HashMap<String, Object>> cbor = new Cbor<>();
112 payloadData.put("in", 8);
113 IRequest request = MessageBuilder.createRequest(RequestMethod.PUT,
114 "/oic/ping", null, ContentFormat.APPLICATION_CBOR,
115 cbor.encodingPayloadToCbor(payloadData));
116 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
117 assertTrue(methodCheck(mRes, ResponseStatus.VALID));
120 private boolean methodCheck(IResponse response,
121 ResponseStatus responseStatus) {
122 if (responseStatus == response.getStatus())