1 package org.iotivity.cloud.ciserver.resources.proxy.account;
3 import static java.util.concurrent.TimeUnit.SECONDS;
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertTrue;
6 import static org.mockito.Mockito.mock;
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.HashMap;
11 import java.util.concurrent.CountDownLatch;
13 import org.iotivity.cloud.base.OCFConstants;
14 import org.iotivity.cloud.base.connector.ConnectorPool;
15 import org.iotivity.cloud.base.device.CoapDevice;
16 import org.iotivity.cloud.base.device.IRequestChannel;
17 import org.iotivity.cloud.base.protocols.IRequest;
18 import org.iotivity.cloud.base.protocols.MessageBuilder;
19 import org.iotivity.cloud.base.protocols.coap.CoapRequest;
20 import org.iotivity.cloud.base.protocols.enums.ContentFormat;
21 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
22 import org.iotivity.cloud.ciserver.DeviceServerSystem;
23 import org.iotivity.cloud.util.Cbor;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.mockito.InjectMocks;
27 import org.mockito.Mock;
28 import org.mockito.Mockito;
29 import org.mockito.MockitoAnnotations;
30 import org.mockito.invocation.InvocationOnMock;
31 import org.mockito.stubbing.Answer;
33 public class AclInviteTest {
34 private static final String TEST_RESOURCE_INVITE_URI = "/"
35 + OCFConstants.PREFIX_WELL_KNOWN + "/" + OCFConstants.PREFIX_OCF
36 + "/" + OCFConstants.ACL_URI + "/" + OCFConstants.INVITE_URI;
37 private CoapDevice mockDevice = mock(
40 ConnectorPool connectorPool = null;
41 DeviceServerSystem deviceServerSystem = new DeviceServerSystem();
42 final CountDownLatch latch = new CountDownLatch(
46 IRequestChannel requestChannel;
49 AclInvite aclInviteHandler = new AclInvite();
52 public void setUp() throws Exception {
54 Mockito.doReturn("mockUserId").when(mockDevice).getUserId();
55 MockitoAnnotations.initMocks(this);
56 deviceServerSystem.addResource(aclInviteHandler);
58 Mockito.doAnswer(new Answer<Object>() {
60 public CoapRequest answer(InvocationOnMock invocation)
62 Object[] args = invocation.getArguments();
63 CoapRequest request = (CoapRequest) args[0];
65 "\t----------payload : " + request.getPayloadString());
67 "\t----------uripath : " + request.getUriPath());
69 "\t---------uriquery : " + request.getUriQuery());
74 }).when(requestChannel).sendRequest(Mockito.any(IRequest.class),
75 Mockito.any(CoapDevice.class));
79 public void testPostRequestReceived() throws Exception {
81 "\t--------------OnRequestReceived(AS) Post Message Test------------");
83 HashMap<String, Object> payloadData = new HashMap<>();
84 HashMap<String, Object> invite = new HashMap<>();
85 invite.put("gid", "g0001");
86 invite.put("mid", "u0001");
87 payloadData.put("invite", Arrays.asList(invite));
88 Cbor<HashMap<Object, Object>> cbor = new Cbor<>();
89 IRequest request = MessageBuilder.createRequest(RequestMethod.POST,
90 TEST_RESOURCE_INVITE_URI, null, ContentFormat.APPLICATION_CBOR,
91 cbor.encodingPayloadToCbor(payloadData));
92 aclInviteHandler.onRequestReceived(mockDevice, request);
94 assertTrue(latch.await(1L, SECONDS));
95 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
97 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
98 .containsKey("invite"));
99 ArrayList<HashMap<String, Object>> getinvite = (ArrayList<HashMap<String, Object>>) cbor
100 .parsePayloadFromCbor(req.getPayload(), HashMap.class)
102 assertTrue(getinvite.get(0).containsKey("gid"));
103 assertTrue(getinvite.get(0).containsKey("mid"));
104 assertEquals(req.getUriPath(), TEST_RESOURCE_INVITE_URI);
108 public void testGetRequestReceived() throws Exception {
110 "\t--------------OnRequestReceived(AS) Get Message Test------------");
112 IRequest request = MessageBuilder.createRequest(RequestMethod.GET,
113 TEST_RESOURCE_INVITE_URI, null, null, null);
114 aclInviteHandler.onRequestReceived(mockDevice, request);
116 assertTrue(latch.await(1L, SECONDS));
117 assertTrue(req.getUriQueryMap().containsKey("uid"));
118 assertEquals(req.getUriPath(), TEST_RESOURCE_INVITE_URI);
122 public void testDeleteRequestReceived() throws Exception {
124 "\t--------------OnRequestReceived(AS) Delete Message Test------------");
126 IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
127 TEST_RESOURCE_INVITE_URI, "gid=g0001", null, null);
128 aclInviteHandler.onRequestReceived(mockDevice, request);
130 assertTrue(latch.await(1L, SECONDS));
131 assertTrue(req.getUriQueryMap().containsKey("gid"));
132 assertTrue(req.getUriQueryMap().containsKey("uid"));
133 assertEquals(req.getUriPath(), TEST_RESOURCE_INVITE_URI);