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.HashMap;
9 import java.util.concurrent.CountDownLatch;
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;
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);
40 ConnectorPool connectorPool = null;
41 DeviceServerSystem deviceServerSystem = new DeviceServerSystem();
42 final CountDownLatch latch = new CountDownLatch(1);
44 IRequestChannel requestChannel;
47 Account acHandler = new Account();
50 public void setUp() throws Exception {
53 Mockito.doReturn("mockDeviceUser").when(mockDevice).getUserId();
54 MockitoAnnotations.initMocks(this);
55 deviceServerSystem.addResource(acHandler);
56 Mockito.doAnswer(new Answer<Object>() {
58 public CoapRequest answer(InvocationOnMock invocation)
60 Object[] args = invocation.getArguments();
61 CoapRequest request = (CoapRequest) args[0];
65 "\t----------payload : " + request.getPayloadString());
67 "\t----------uripath : " + request.getUriPath());
69 "\t---------uriquery : " + request.getUriQuery());
72 }).when(requestChannel).sendRequest(Mockito.any(IRequest.class),
73 Mockito.any(CoapDevice.class));
77 public void testAccountDeviceDeleteOnRequestReceived() throws Exception {
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));
92 public void testAccountResourceOnRequestReceived() throws Exception {
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
108 assertTrue(latch.await(1L, SECONDS));
109 assertEquals(request, req);