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.Arrays;
9 import java.util.HashMap;
10 import java.util.concurrent.CountDownLatch;
12 import org.iotivity.cloud.base.OCFConstants;
13 import org.iotivity.cloud.base.connector.ConnectorPool;
14 import org.iotivity.cloud.base.device.CoapDevice;
15 import org.iotivity.cloud.base.device.IRequestChannel;
16 import org.iotivity.cloud.base.protocols.IRequest;
17 import org.iotivity.cloud.base.protocols.MessageBuilder;
18 import org.iotivity.cloud.base.protocols.coap.CoapRequest;
19 import org.iotivity.cloud.base.protocols.enums.ContentFormat;
20 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
21 import org.iotivity.cloud.ciserver.DeviceServerSystem;
22 import org.iotivity.cloud.util.Cbor;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mock;
27 import org.mockito.Mockito;
28 import org.mockito.MockitoAnnotations;
29 import org.mockito.invocation.InvocationOnMock;
30 import org.mockito.stubbing.Answer;
32 public class AclGroupTest {
33 private static final String TEST_RESOURCE_GROUP_URI = "/"
34 + OCFConstants.PREFIX_WELL_KNOWN + "/" + OCFConstants.PREFIX_OCF
35 + "/" + OCFConstants.ACL_URI + "/" + OCFConstants.GROUP_URI;
36 private CoapDevice mockDevice = mock(
39 ConnectorPool connectorPool = null;
40 DeviceServerSystem deviceServerSystem = new DeviceServerSystem();
41 final CountDownLatch latch = new CountDownLatch(1);
44 IRequestChannel requestChannel;
47 AclGroup aclGroupHandler = new AclGroup();
50 public void setUp() throws Exception {
52 Mockito.doReturn("mockUserId").when(mockDevice).getUserId();
53 MockitoAnnotations.initMocks(this);
54 deviceServerSystem.addResource(aclGroupHandler);
56 Mockito.doAnswer(new Answer<Object>() {
58 public CoapRequest answer(InvocationOnMock invocation)
60 Object[] args = invocation.getArguments();
61 CoapRequest request = (CoapRequest) args[0];
63 "\t----------payload : " + request.getPayloadString());
65 "\t----------uripath : " + request.getUriPath());
67 "\t---------uriquery : " + request.getUriQuery());
72 }).when(requestChannel).sendRequest(Mockito.any(IRequest.class),
73 Mockito.any(CoapDevice.class));
77 public void testCreateGroupRequestReceived() throws Exception {
79 "\t--------------OnRequestReceived(AS) Create Group Test------------");
81 HashMap<String, Object> payloadData = new HashMap<>();
82 payloadData.put("gtype", "public");
83 Cbor<HashMap<Object, Object>> cbor = new Cbor<>();
84 IRequest request = MessageBuilder.createRequest(RequestMethod.POST,
85 TEST_RESOURCE_GROUP_URI, null, ContentFormat.APPLICATION_CBOR,
86 cbor.encodingPayloadToCbor(payloadData));
87 aclGroupHandler.onRequestReceived(mockDevice, request);
89 assertTrue(latch.await(1L, SECONDS));
90 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
91 .containsKey("gtype"));
92 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
93 .containsKey("gmid"));
94 assertEquals(req.getUriPath(), TEST_RESOURCE_GROUP_URI);
98 public void testAddMemberRequestReceived() throws Exception {
100 "\t--------------OnRequestReceived(AS) Add Member Test------------");
102 HashMap<String, Object> payloadData = new HashMap<>();
103 Cbor<HashMap<Object, Object>> cbor = new Cbor<>();
104 IRequest request = MessageBuilder.createRequest(RequestMethod.POST,
105 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup", null,
106 ContentFormat.APPLICATION_CBOR,
107 cbor.encodingPayloadToCbor(payloadData));
108 aclGroupHandler.onRequestReceived(mockDevice, request);
110 assertTrue(latch.await(1L, SECONDS));
111 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
112 .containsKey("midlist"));
113 assertEquals(req.getUriPath(),
114 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup");
118 public void testAddDeviceRequestReceived() throws Exception {
120 "\t--------------OnRequestReceived(AS) Add Device Test------------");
122 HashMap<String, Object> payloadData = new HashMap<>();
123 payloadData.put("dilist", Arrays.asList("sampleDevice"));
124 Cbor<HashMap<Object, Object>> cbor = new Cbor<>();
125 IRequest request = MessageBuilder.createRequest(RequestMethod.POST,
126 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup", null,
127 ContentFormat.APPLICATION_CBOR,
128 cbor.encodingPayloadToCbor(payloadData));
129 aclGroupHandler.onRequestReceived(mockDevice, request);
131 assertTrue(latch.await(1L, SECONDS));
132 assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
133 .containsKey("dilist"));
134 assertEquals(req.getUriPath(),
135 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup");
139 public void testGetGroupListAndGetGroupInfoRequestReceived()
142 "\t--------------OnRequestReceived(AS) Get Group List & Get Group Info Test------------");
144 IRequest request = MessageBuilder.createRequest(RequestMethod.GET,
145 TEST_RESOURCE_GROUP_URI, null, null, null);
146 aclGroupHandler.onRequestReceived(mockDevice, request);
148 assertTrue(latch.await(1L, SECONDS));
149 assertTrue(req.getUriQueryMap().containsKey("mid"));
150 assertEquals(req.getUriPath(), TEST_RESOURCE_GROUP_URI);
154 public void testDeleteGroupRequestReceived() throws Exception {
156 "\t--------------OnRequestReceived(AS) Delete Group Test------------");
158 IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
159 TEST_RESOURCE_GROUP_URI, "gid=samplegid", null, null);
160 aclGroupHandler.onRequestReceived(mockDevice, request);
162 assertTrue(latch.await(1L, SECONDS));
163 assertTrue(req.getUriQueryMap().containsKey("gid"));
164 assertTrue(req.getUriQueryMap().containsKey("gmid"));
165 assertEquals(req.getUriPath(), TEST_RESOURCE_GROUP_URI);
169 public void testDeleteMemberRequestReceived() throws Exception {
171 "\t--------------OnRequestReceived(AS) Delete Member Test------------");
173 IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
174 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup", null, null,
176 aclGroupHandler.onRequestReceived(mockDevice, request);
178 assertTrue(latch.await(1L, SECONDS));
179 assertTrue(req.getUriQueryMap().containsKey("midlist"));
180 assertEquals(req.getUriPath(),
181 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup");
185 public void testDeleteDeviceRequestReceived() throws Exception {
187 "\t--------------OnRequestReceived(AS) Delete Member Test------------");
189 IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
190 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup",
191 "dilist=sampledi", null, null);
192 aclGroupHandler.onRequestReceived(mockDevice, request);
194 assertTrue(latch.await(1L, SECONDS));
195 assertTrue(req.getUriQueryMap().containsKey("dilist"));
196 assertEquals(req.getUriPath(),
197 TEST_RESOURCE_GROUP_URI + "/" + "sampleGroup");