CI unit test included
[platform/upstream/iotivity.git] / cloud / interface / src / test / java / org / iotivity / cloud / ciserver / resources / proxy / account / AclInviteTest.java
1 package org.iotivity.cloud.ciserver.resources.proxy.account;
2
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;
7
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.HashMap;
11 import java.util.concurrent.CountDownLatch;
12
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;
32
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(
38             CoapDevice.class);
39     IRequest                    req                      = null;
40     ConnectorPool               connectorPool            = null;
41     DeviceServerSystem          deviceServerSystem       = new DeviceServerSystem();
42     final CountDownLatch        latch                    = new CountDownLatch(
43             1);
44
45     @Mock
46     IRequestChannel             requestChannel;
47
48     @InjectMocks
49     AclInvite                   aclInviteHandler         = new AclInvite();
50
51     @Before
52     public void setUp() throws Exception {
53         req = null;
54         Mockito.doReturn("mockUserId").when(mockDevice).getUserId();
55         MockitoAnnotations.initMocks(this);
56         deviceServerSystem.addResource(aclInviteHandler);
57         // callback mock
58         Mockito.doAnswer(new Answer<Object>() {
59             @Override
60             public CoapRequest answer(InvocationOnMock invocation)
61                     throws Throwable {
62                 Object[] args = invocation.getArguments();
63                 CoapRequest request = (CoapRequest) args[0];
64                 System.out.println(
65                         "\t----------payload : " + request.getPayloadString());
66                 System.out.println(
67                         "\t----------uripath : " + request.getUriPath());
68                 System.out.println(
69                         "\t---------uriquery : " + request.getUriQuery());
70                 req = request;
71                 latch.countDown();
72                 return null;
73             }
74         }).when(requestChannel).sendRequest(Mockito.any(IRequest.class),
75                 Mockito.any(CoapDevice.class));
76     }
77
78     @Test
79     public void testPostRequestReceived() throws Exception {
80         System.out.println(
81                 "\t--------------OnRequestReceived(AS) Post Message Test------------");
82
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);
93
94         assertTrue(latch.await(1L, SECONDS));
95         assertTrue(cbor.parsePayloadFromCbor(req.getPayload(), HashMap.class)
96                 .containsKey("uid"));
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)
101                 .get("invite");
102         assertTrue(getinvite.get(0).containsKey("gid"));
103         assertTrue(getinvite.get(0).containsKey("mid"));
104         assertEquals(req.getUriPath(), TEST_RESOURCE_INVITE_URI);
105     }
106
107     @Test
108     public void testGetRequestReceived() throws Exception {
109         System.out.println(
110                 "\t--------------OnRequestReceived(AS) Get Message Test------------");
111
112         IRequest request = MessageBuilder.createRequest(RequestMethod.GET,
113                 TEST_RESOURCE_INVITE_URI, null, null, null);
114         aclInviteHandler.onRequestReceived(mockDevice, request);
115
116         assertTrue(latch.await(1L, SECONDS));
117         assertTrue(req.getUriQueryMap().containsKey("uid"));
118         assertEquals(req.getUriPath(), TEST_RESOURCE_INVITE_URI);
119     }
120
121     @Test
122     public void testDeleteRequestReceived() throws Exception {
123         System.out.println(
124                 "\t--------------OnRequestReceived(AS) Delete Message Test------------");
125
126         IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
127                 TEST_RESOURCE_INVITE_URI, "gid=g0001", null, null);
128         aclInviteHandler.onRequestReceived(mockDevice, request);
129
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);
134     }
135 }