示例#1
0
        public void GetLinkedDevices_ShouldCallAndReturnDataFromTransportLayer()
        {
            var mockTransport = new Mock <ITransport>();
            var client        = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            mockTransport.Setup(
                t => t.DirectoryV3DevicesListPost(
                    It.IsAny <DirectoryV3DevicesListPostRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                ).Returns(new DirectoryV3DevicesListPostResponse(new List <DirectoryV3DevicesListPostResponse.Device>
            {
                new DirectoryV3DevicesListPostResponse.Device {
                    Name = "my phone", Id = TestConsts.DefaultDeviceId, Created = TestConsts.DefaultTime, Status = 1, Type = "IOS", Updated = TestConsts.DefaultTime
                }
            }));

            var response = client.GetLinkedDevices("user id");

            Assert.IsTrue(response.Count == 1);

            Assert.AreEqual("my phone", response[0].Name);
            Assert.AreEqual("IOS", response[0].Type);
            Assert.AreEqual(TestConsts.DefaultDeviceId.ToString("D"), response[0].Id);
            Assert.AreEqual(TestConsts.DefaultTime, response[0].Created);
            Assert.AreEqual(TestConsts.DefaultTime, response[0].Updated);
            Assert.AreEqual(DeviceStatus.Linked, response[0].Status);
        }
示例#2
0
        public void GetServicePublicKeys_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var serviceId     = Guid.NewGuid();

            mockTransport
            .Setup(p => p.DirectoryV3ServiceKeysListPost(
                       It.Is <ServiceKeysListPostRequest>(x => x.ServiceId == serviceId)
                       , TestConsts.DefaultDirectoryEntity))
            .Returns(new KeysListPostResponse(new List <KeysListPostResponse.Key> {
                new KeysListPostResponse.Key
                {
                    Active    = true,
                    Created   = new DateTime(2020, 1, 1),
                    Expires   = new DateTime(2021, 1, 1),
                    Id        = "id",
                    PublicKey = "k"
                }
            }))
            .Verifiable();

            var client = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            var result = client.GetServicePublicKeys(serviceId);

            mockTransport.Verify();

            Assert.IsTrue(result.Count == 1);
            Assert.IsTrue(result[0].Active == true);
            Assert.IsTrue(result[0].Created == new DateTime(2020, 1, 1));
            Assert.IsTrue(result[0].Expires == new DateTime(2021, 1, 1));
            Assert.IsTrue(result[0].Id == "id");
        }
示例#3
0
        public void GetAllServices_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var callbackUrl   = new Uri("http://example.com");
            var iconUrl       = new Uri("http://example.com/icon");
            var serviceObject = new ServicesGetResponse.Service {
                Active = true, CallbackUrl = callbackUrl, Description = "one service", Name = "my service", Icon = iconUrl, Id = Guid.NewGuid()
            };

            mockTransport.Setup(p => p.DirectoryV3ServicesGet(It.IsAny <EntityIdentifier>()))
            .Returns(new ServicesGetResponse(new List <ServicesGetResponse.Service> {
                serviceObject
            }))
            .Verifiable();

            var client         = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);
            var responseObject = client.GetAllServices();

            // verify the call made it to transport with right params
            mockTransport.Verify();

            // verify our code translated the objects OK
            Assert.AreEqual(responseObject[0].Active, serviceObject.Active);
            Assert.AreEqual(responseObject[0].CallbackUrl, serviceObject.CallbackUrl);
            Assert.AreEqual(responseObject[0].Description, serviceObject.Description);
            Assert.AreEqual(responseObject[0].Icon, serviceObject.Icon);
            Assert.AreEqual(responseObject[0].Id, serviceObject.Id);
            Assert.AreEqual(responseObject[0].Name, serviceObject.Name);
        }
示例#4
0
        public void UpdateService_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var callbackUrl   = new Uri("http://example.com");
            var iconUrl       = new Uri("http://example.com/icon");
            var serviceId     = Guid.NewGuid();

            mockTransport.Setup(p =>
                                p.DirectoryV3ServicesPatch(
                                    It.IsAny <ServicesPatchRequest>(),
                                    It.IsAny <EntityIdentifier>()
                                    )
                                );

            var client = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            client.UpdateService(serviceId, "service name", "desc", iconUrl, callbackUrl, true);

            // verify the call made it to transport with right params
            mockTransport.Verify(
                x => x.DirectoryV3ServicesPatch(It.Is <ServicesPatchRequest>(
                                                    p => p.Active == true &&
                                                    p.Name == "service name" &&
                                                    p.Description == "desc" &&
                                                    p.CallbackUrl == callbackUrl &&
                                                    p.Icon == iconUrl &&
                                                    p.ServiceId == serviceId
                                                    ),
                                                It.IsAny <EntityIdentifier>()), Times.Once());
        }
示例#5
0
        public void CreateService_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var callbackUrl   = new Uri("http://example.com");
            var iconUrl       = new Uri("http://example.com/icon");
            var returnedGuid  = Guid.NewGuid();

            mockTransport.Setup(p =>
                                p.DirectoryV3ServicesPost(
                                    It.IsAny <ServicesPostRequest>(),
                                    It.IsAny <EntityIdentifier>()
                                    )
                                )
            .Returns(new ServicesPostResponse {
                Id = returnedGuid
            });

            var client   = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);
            var response = client.CreateService("service name", "desc", iconUrl, callbackUrl, true);

            // verify the call made it to transport with right params
            mockTransport.Verify(
                x => x.DirectoryV3ServicesPost(It.Is <ServicesPostRequest>(
                                                   p => p.Active == true &&
                                                   p.Name == "service name" &&
                                                   p.Description == "desc" &&
                                                   p.CallbackUrl == callbackUrl &&
                                                   p.Icon == iconUrl
                                                   ),
                                               It.IsAny <EntityIdentifier>()), Times.Once());

            // verify result from transport made its way back out
            Assert.AreEqual(returnedGuid, response);
        }
示例#6
0
        public void LinkDevice_ShouldCallAndReturnDataFromTransportLayer()
        {
            var mockTransport   = new Mock <ITransport>();
            var client          = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);
            var expectedRequest = new DirectoryV3DevicesPostRequest("user id", 123);

            string deviceID = Guid.NewGuid().ToString();

            mockTransport.Setup(
                t => t.DirectoryV3DevicesPost(
                    It.IsAny <DirectoryV3DevicesPostRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                ).Returns(new DirectoryV3DevicesPostResponse {
                Code = "code", QrCode = "qrcode", DeviceId = deviceID
            });

            var response = client.LinkDevice("user id", 123);

            Assert.AreEqual("code", response.Code);
            Assert.AreEqual("qrcode", response.QrCode);
            Assert.AreEqual(deviceID, response.DeviceId.ToString());

            mockTransport.Verify(
                x => x.DirectoryV3DevicesPost(It.Is <DirectoryV3DevicesPostRequest>(
                                                  r => r.Identifier == "user id" &&
                                                  r.TTL == 123
                                                  ),
                                              It.IsAny <EntityIdentifier>()), Times.Once());
        }
示例#7
0
        public void GetAllServiceSessions_ShouldCallAndReturnDataFromTransportLayer()
        {
            var mockTransport = new Mock <ITransport>();
            var client        = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            mockTransport.Setup(
                t => t.DirectoryV3SessionsListPost(
                    It.IsAny <DirectoryV3SessionsListPostRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                ).Returns(new DirectoryV3SessionsListPostResponse(new List <DirectoryV3SessionsListPostResponse.Session>
            {
                new DirectoryV3SessionsListPostResponse.Session
                {
                    AuthRequest = TestConsts.DefaultAuthenticationId,
                    Created     = TestConsts.DefaultTime,
                    ServiceIcon = "url",
                    ServiceId   = TestConsts.DefaultServiceId,
                    ServiceName = "my name"
                }
            }));

            var response = client.GetAllServiceSessions("user id");

            Assert.IsTrue(response.Count == 1);
            var s = response[0];

            Assert.AreEqual(TestConsts.DefaultAuthenticationId, s.AuthRequest);
            Assert.AreEqual(TestConsts.DefaultTime, s.Created);
            Assert.AreEqual("url", s.ServiceIcon);
            Assert.AreEqual("my name", s.ServiceName);
            Assert.AreEqual(TestConsts.DefaultServiceId, s.ServiceId);
        }
示例#8
0
        public void EndAllServiceSessions_ShouldCallAndReturnDataFromTransportLayer()
        {
            var mockTransport = new Mock <ITransport>();
            var client        = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            mockTransport.Setup(
                t => t.DirectoryV3SessionsDelete(
                    It.IsAny <DirectoryV3SessionsDeleteRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                );
            client.EndAllServiceSessions("user");

            mockTransport.Verify(p => p.DirectoryV3SessionsDelete(It.IsAny <DirectoryV3SessionsDeleteRequest>(), It.IsAny <EntityIdentifier>()));
        }
示例#9
0
        public void UnlinkDevice_ShouldCallAndReturnDataFromTransportLayer()
        {
            var mockTransport = new Mock <ITransport>();
            var client        = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            mockTransport.Setup(
                t => t.DirectoryV3DevicesDelete(
                    It.IsAny <DirectoryV3DevicesDeleteRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                );

            client.UnlinkDevice("user id", TestConsts.DefaultDeviceId.ToString("D"));

            mockTransport.Verify(p => p.DirectoryV3DevicesDelete(It.IsAny <DirectoryV3DevicesDeleteRequest>(), It.IsAny <EntityIdentifier>()));
        }
示例#10
0
        public void GetService_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var callbackUrl   = new Uri("http://example.com");
            var iconUrl       = new Uri("http://example.com/icon");
            var serviceId     = Guid.NewGuid();
            var serviceObject = new ServicesListPostResponse.Service
            {
                Id          = serviceId,
                Name        = "my name",
                Description = "my description",
                Active      = true,
                CallbackUrl = callbackUrl,
                Icon        = iconUrl
            };

            mockTransport.Setup(p =>
                                p.DirectoryV3ServicesListPost(
                                    It.IsAny <ServicesListPostRequest>(),
                                    It.IsAny <EntityIdentifier>()
                                    )
                                )
            .Returns(new ServicesListPostResponse(new List <ServicesListPostResponse.Service> {
                serviceObject
            }));

            var client         = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);
            var responseObject = client.GetService(serviceId);

            // verify the call made it to transport with right params
            mockTransport.Verify(
                x => x.DirectoryV3ServicesListPost(It.Is <ServicesListPostRequest>(
                                                       p => p.ServiceIds != null &&
                                                       p.ServiceIds.Count == 1 &&
                                                       p.ServiceIds[0] == serviceId
                                                       ),
                                                   It.IsAny <EntityIdentifier>()), Times.Once());

            // verify our code translated the objects OK
            Assert.AreEqual(responseObject.Active, serviceObject.Active);
            Assert.AreEqual(responseObject.CallbackUrl, serviceObject.CallbackUrl);
            Assert.AreEqual(responseObject.Description, serviceObject.Description);
            Assert.AreEqual(responseObject.Icon, serviceObject.Icon);
            Assert.AreEqual(responseObject.Id, serviceObject.Id);
            Assert.AreEqual(responseObject.Name, serviceObject.Name);
        }
示例#11
0
        public void LinkDevice_ShouldReturnNullGuidWhenNotPassedInValue()
        {
            var mockTransport   = new Mock <ITransport>();
            var client          = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);
            var expectedRequest = new DirectoryV3DevicesPostRequest("user id", 123);

            mockTransport.Setup(
                t => t.DirectoryV3DevicesPost(
                    It.IsAny <DirectoryV3DevicesPostRequest>(),
                    It.IsAny <EntityIdentifier>()
                    )
                ).Returns(new DirectoryV3DevicesPostResponse {
                Code = "code", QrCode = "qrcode"
            });

            var response = client.LinkDevice("user id", 123);

            Assert.AreEqual(null, response.DeviceId);
        }
示例#12
0
        public void RemoveServicePublicKey_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var serviceId     = Guid.NewGuid();

            mockTransport
            .Setup(p => p.DirectoryV3ServiceKeysDelete(
                       It.Is <ServiceKeysDeleteRequest>(x =>
                                                        x.KeyId == "keyid" &&
                                                        x.ServiceId == serviceId
                                                        ),
                       TestConsts.DefaultDirectoryEntity
                       )).Verifiable();

            var client = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            client.RemoveServicePublicKey(serviceId, "keyid");

            mockTransport.Verify();
        }
示例#13
0
        public void UpdateServicePublicKey_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var serviceId     = Guid.NewGuid();

            mockTransport
            .Setup(p => p.DirectoryV3ServiceKeysPatch(
                       It.Is <ServiceKeysPatchRequest>(x =>
                                                       x.Active == true &&
                                                       x.Expires == new DateTime(2020, 1, 1).ToUniversalTime() &&
                                                       x.KeyId == "keyid" &&
                                                       x.ServiceId == serviceId
                                                       ),
                       TestConsts.DefaultDirectoryEntity
                       )).Verifiable();

            var client = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            client.UpdateServicePublicKey(serviceId, "keyid", true, new DateTime(2020, 1, 1));

            mockTransport.Verify();
        }
示例#14
0
        public void AddServicePublicKey_ShouldCallTransportWithCorrectParams()
        {
            var mockTransport = new Mock <ITransport>();
            var serviceId     = Guid.NewGuid();

            mockTransport
            .Setup(p => p.DirectoryV3ServiceKeysPost(It.Is <ServiceKeysPostRequest>(x =>
                                                                                    x.Active == true &&
                                                                                    x.Expires == new DateTime(2020, 1, 1).ToUniversalTime() &&
                                                                                    x.PublicKey == "keyhere" &&
                                                                                    x.ServiceId == serviceId), It.IsAny <EntityIdentifier>()))
            .Returns(new KeysPostResponse {
                Id = "keyid"
            })
            .Verifiable();

            var client = new BasicDirectoryClient(TestConsts.DefaultDirectoryId, mockTransport.Object);

            var response = client.AddServicePublicKey(serviceId, "keyhere", true, new DateTime(2020, 1, 1));

            mockTransport.Verify();

            Assert.IsTrue(response == "keyid");
        }