1 package org.iotivity.cloud.ciserver.resources;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import static org.mockito.Mockito.mock;
7 import java.util.ArrayList;
8 import java.util.HashMap;
10 import org.iotivity.cloud.base.device.CoapDevice;
11 import org.iotivity.cloud.base.protocols.IRequest;
12 import org.iotivity.cloud.base.protocols.IResponse;
13 import org.iotivity.cloud.base.protocols.MessageBuilder;
14 import org.iotivity.cloud.base.protocols.coap.CoapResponse;
15 import org.iotivity.cloud.base.protocols.enums.ContentFormat;
16 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
17 import org.iotivity.cloud.base.protocols.enums.ResponseStatus;
18 import org.iotivity.cloud.util.Cbor;
19 import org.junit.After;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.Mockito;
23 import org.mockito.MockitoAnnotations;
24 import org.mockito.invocation.InvocationOnMock;
25 import org.mockito.stubbing.Answer;
27 public class KeepAliveResourceTest {
29 KeepAliveResource keepAliveResource;
30 CoapDevice mockDevice;
31 private Cbor<HashMap<String, ArrayList<Integer>>> mCbor = new Cbor<>();
33 int[] interval = { 1, 2, 4, 8 };
36 public void setUp() throws Exception {
37 keepAliveResource = new KeepAliveResource(interval);
38 MockitoAnnotations.initMocks(this);
39 mockDevice = mock(CoapDevice.class);
42 Mockito.doAnswer(new Answer<Object>() {
44 public CoapResponse answer(InvocationOnMock invocation)
46 Object[] args = invocation.getArguments();
47 CoapResponse resp = (CoapResponse) args[0];
49 .println("\t----payload : " + resp.getPayloadString());
51 .println("\t----responsestatus : " + resp.getStatus());
55 }).when(mockDevice).sendResponse(Mockito.anyObject());
56 keepAliveResource.startSessionChecker();
60 public void Endup() throws Exception {
61 keepAliveResource.stopSessionChecker();
65 public void testOnDefaultGetRequestReceived() {
66 IRequest request = MessageBuilder.createRequest(RequestMethod.GET,
68 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
69 HashMap<String, ArrayList<Integer>> payloadData = mCbor
70 .parsePayloadFromCbor(res.getPayload(), HashMap.class);
71 HashMap<String, ArrayList<Integer>> comparisonData = new HashMap<>();
72 ArrayList<Integer> comparisonArray = new ArrayList<>();
73 comparisonArray.add(1);
74 comparisonArray.add(2);
75 comparisonArray.add(4);
76 comparisonArray.add(8);
77 comparisonData.put("inarray", comparisonArray);
78 assertEquals(payloadData, comparisonData);
79 assertTrue(methodCheck(res, ResponseStatus.CONTENT));
83 public void testOnDefaultPutRequestReceived() {
84 HashMap<String, Integer> payloadData = new HashMap<>();
85 Cbor<HashMap<String, Object>> cbor = new Cbor<>();
86 payloadData.put("in", 8);
87 IRequest request = MessageBuilder.createRequest(RequestMethod.PUT,
88 "/oic/ping", null, ContentFormat.APPLICATION_CBOR,
89 cbor.encodingPayloadToCbor(payloadData));
90 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
91 assertTrue(methodCheck(res, ResponseStatus.VALID));
94 // TODO : exception response assertion
96 public void testOnDefaultPutEmptyPayloadRequestReceived() {
97 HashMap<String, Integer> payloadData = new HashMap<>();
98 Cbor<HashMap<String, Object>> cbor = new Cbor<>();
99 IRequest request = MessageBuilder.createRequest(RequestMethod.PUT,
100 "/oic/ping", null, ContentFormat.APPLICATION_CBOR,
101 cbor.encodingPayloadToCbor(payloadData));
102 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
103 assertTrue(methodCheck(res, ResponseStatus.VALID));
107 public void testOnDefaultPutNullPayloadRequestReceived() {
108 IRequest request = MessageBuilder.createRequest(RequestMethod.PUT,
110 keepAliveResource.onDefaultRequestReceived(mockDevice, request);
111 assertTrue(methodCheck(res, ResponseStatus.BAD_REQUEST));
114 private boolean methodCheck(IResponse response,
115 ResponseStatus responseStatus) {
116 if (responseStatus == response.getStatus())