CI unit test included
[platform/upstream/iotivity.git] / cloud / interface / src / test / java / org / iotivity / cloud / ciserver / resources / proxy / account / AccountTest.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.HashMap;
9 import java.util.concurrent.CountDownLatch;
10
11 import org.iotivity.cloud.base.connector.ConnectorPool;
12 import org.iotivity.cloud.base.device.CoapDevice;
13 import org.iotivity.cloud.base.device.IRequestChannel;
14 import org.iotivity.cloud.base.protocols.IRequest;
15 import org.iotivity.cloud.base.protocols.IResponse;
16 import org.iotivity.cloud.base.protocols.MessageBuilder;
17 import org.iotivity.cloud.base.protocols.coap.CoapRequest;
18 import org.iotivity.cloud.base.protocols.enums.ContentFormat;
19 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
20 import org.iotivity.cloud.ciserver.DeviceServerSystem;
21 import org.iotivity.cloud.util.Cbor;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.mockito.InjectMocks;
25 import org.mockito.Mock;
26 import org.mockito.Mockito;
27 import org.mockito.MockitoAnnotations;
28 import org.mockito.invocation.InvocationOnMock;
29 import org.mockito.stubbing.Answer;
30
31 public class AccountTest {
32     private String             di                 = "B371C481-38E6-4D47-8320-7688D8A5B58C";
33     public static final String ACCOUNT_URI        = "/.well-known/ocf/account";
34     private String             authProvider       = "github";
35     private String             authCode           = "f6b55d8d8a27e0d32ab8";
36     String                     userId             = "testuser";
37     private CoapDevice         mockDevice         = mock(CoapDevice.class);
38     IResponse                  res                = null;
39     IRequest                   req                = null;
40     ConnectorPool              connectorPool      = null;
41     DeviceServerSystem         deviceServerSystem = new DeviceServerSystem();
42     final CountDownLatch       latch              = new CountDownLatch(1);
43     @Mock
44     IRequestChannel            requestChannel;
45
46     @InjectMocks
47     Account                    acHandler          = new Account();
48
49     @Before
50     public void setUp() throws Exception {
51         res = null;
52         req = null;
53         Mockito.doReturn("mockDeviceUser").when(mockDevice).getUserId();
54         MockitoAnnotations.initMocks(this);
55         deviceServerSystem.addResource(acHandler);
56         Mockito.doAnswer(new Answer<Object>() {
57             @Override
58             public CoapRequest answer(InvocationOnMock invocation)
59                     throws Throwable {
60                 Object[] args = invocation.getArguments();
61                 CoapRequest request = (CoapRequest) args[0];
62                 req = request;
63                 latch.countDown();
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                 return null;
71             }
72         }).when(requestChannel).sendRequest(Mockito.any(IRequest.class),
73                 Mockito.any(CoapDevice.class));
74     }
75
76     @Test
77     public void testAccountDeviceDeleteOnRequestReceived() throws Exception {
78         System.out.println(
79                 "\t--------------OnRequestReceived Device Delete Test------------");
80         // sign up request from the client
81         IRequest request = null;
82         request = MessageBuilder.createRequest(RequestMethod.DELETE,
83                 ACCOUNT_URI, "di=device1");
84         deviceServerSystem.onRequestReceived(mockDevice, request);
85         assertTrue(latch.await(1L, SECONDS));
86         assertTrue(req.getUriQueryMap().get("uid").contains("mockDeviceUser"));
87         assertTrue(req.getUriQueryMap().get("di").contains("device1"));
88         assertTrue(req.getUriPath().equals(ACCOUNT_URI));
89     }
90
91     @Test
92     public void testAccountResourceOnRequestReceived() throws Exception {
93         System.out.println(
94                 "\t--------------OnRequestReceived Sign Up Test------------");
95         // sign up request from the client
96         IRequest request = null;
97         HashMap<String, String> payloadData = new HashMap<String, String>();
98         payloadData.put("authcode", authCode);
99         payloadData.put("authprovider", authProvider);
100         payloadData.put("di", di);
101         Cbor<HashMap<String, String>> cbor = new Cbor<HashMap<String, String>>();
102         request = MessageBuilder.createRequest(RequestMethod.POST, ACCOUNT_URI,
103                 null, ContentFormat.APPLICATION_CBOR,
104                 cbor.encodingPayloadToCbor(payloadData));
105         deviceServerSystem.onRequestReceived(mockDevice, request);
106         // assertion : request msg to the AS is identical to the request msg
107         // from the client
108         assertTrue(latch.await(1L, SECONDS));
109         assertEquals(request, req);
110     }
111 }