Exemple #1
0
        public async Task GetDevice_TooManyActiveAccounts_UnhappyPath()
        {
            var cwsDevice = new DeviceResponseModel()
            {
                TRN        = TRNHelper.MakeTRN(_deviceUid, TRNHelper.TRN_DEVICE),
                DeviceName = _deviceName, SerialNumber = _serialNumber
            };
            var cwsDeviceClient = new Mock <ICwsDeviceClient>();

            cwsDeviceClient.Setup(pr => pr.GetDeviceBySerialNumber(It.IsAny <string>(), _customHeaders))
            .ReturnsAsync(cwsDevice);
            var cwsDeviceAccountList = new DeviceAccountListResponseModel()
            {
                Accounts = new List <DeviceAccountResponseModel>()
                {
                    new DeviceAccountResponseModel()
                    {
                        TRN         = TRNHelper.MakeTRN(_customerUid, TRNHelper.TRN_ACCOUNT),
                        AccountName = "the customer name", RelationStatus = _relationStatus, TccDeviceStatus = _tccDeviceStatus
                    },
                    new DeviceAccountResponseModel()
                    {
                        TRN         = TRNHelper.MakeTRN(Guid.NewGuid().ToString(), TRNHelper.TRN_ACCOUNT),
                        AccountName = "the other customer name", RelationStatus = _relationStatus, TccDeviceStatus = _tccDeviceStatus
                    }
                }
            };

            cwsDeviceClient.Setup(pr => pr.GetAccountsForDevice(It.IsAny <Guid>(), _customHeaders))
            .ReturnsAsync(cwsDeviceAccountList);

            var getDeviceBySerialExecutor = RequestExecutorContainerFactory.Build <GetDeviceBySerialExecutor>
                                                (_logger, _configStore, _serviceExceptionHandler,
                                                headers: _customHeaders, cwsDeviceClient: cwsDeviceClient.Object);
            var response = await getDeviceBySerialExecutor.ProcessAsync(new DeviceSerial(_serialNumber))
                           as DeviceDescriptorSingleResult;

            Assert.NotNull(response);
            Assert.Equal(103, response.Code);
            Assert.Equal("There is >1 active account for the device in cws", response.Message);

            Assert.NotNull(response.DeviceDescriptor);
            Assert.Equal(103, response.DeviceDescriptor.Code);
            Assert.Null(response.DeviceDescriptor.CustomerUID);
            Assert.Equal(_deviceUid, response.DeviceDescriptor.DeviceUID);
            Assert.Equal(_deviceName, response.DeviceDescriptor.DeviceName);
            Assert.Equal(_serialNumber, response.DeviceDescriptor.SerialNumber);
            Assert.Equal("UNKNOWN", response.DeviceDescriptor.RelationStatus.ToString().ToUpper());
            Assert.Equal("Unknown", response.DeviceDescriptor.TccDeviceStatus.ToString());
            Assert.Null(response.DeviceDescriptor.ShortRaptorAssetId);
        }
Exemple #2
0
        public Task <DeviceAccountListResponseModel> GetAccountsForDevice(Guid deviceUid, IHeaderDictionary customHeaders = null)
        {
            log.LogDebug($"{nameof(GetAccountsForDevice)} Mock: deviceUid {deviceUid}");

            var deviceAccountListResponseModel = new DeviceAccountListResponseModel()
            {
                Accounts = new List <DeviceAccountResponseModel>()
                {
                    new DeviceAccountResponseModel()
                    {
                        TRN             = TRNHelper.MakeTRN(Guid.NewGuid().ToString(), TRNHelper.TRN_DEVICE),
                        AccountName     = "an account name",
                        RelationStatus  = RelationStatusEnum.Active,
                        TccDeviceStatus = TCCDeviceStatusEnum.Pending
                    }
                }
            };

            log.LogDebug($"{nameof(GetAccountsForDevice)} Mock: deviceAccountListResponseModel {JsonConvert.SerializeObject(deviceAccountListResponseModel)}");
            return(Task.FromResult(deviceAccountListResponseModel));
        }
Exemple #3
0
        public void GetAccountsForDeviceTest()
        {
            const string deviceTrn          = "trn::profilex:us-west-2:device:560c2a6c-6b7e-48d8-b1a5-e4009e2d4c97";
            const string expectedAccountTrn = "trn::profilex:us-west-2:account:560c2a6c-6b7e-48d8-b1a5-e4009e2d4c97";

            var deviceAccountListResponseModel = new DeviceAccountListResponseModel
            {
                HasMore  = false,
                Accounts = new List <DeviceAccountResponseModel>()
                {
                    new DeviceAccountResponseModel()
                    {
                        TRN             = expectedAccountTrn,
                        AccountName     = "an account name",
                        RelationStatus  = RelationStatusEnum.Active,
                        TccDeviceStatus = TCCDeviceStatusEnum.Pending
                    }
                }
            };
            var route       = $"/devices/{deviceTrn}/accounts";
            var expectedUrl = $"{baseUrl}{route}?from=0&limit=20";

            mockServiceResolution.Setup(m => m.ResolveRemoteServiceEndpoint(
                                            It.IsAny <string>(), It.IsAny <ApiType>(), It.IsAny <ApiVersion>(), route, It.IsAny <IList <KeyValuePair <string, string> > >())).Returns(Task.FromResult(expectedUrl));

            MockUtilities.TestRequestSendsCorrectJson("Get accounts for a device", mockWebRequest, null, expectedUrl, HttpMethod.Get, deviceAccountListResponseModel, async() =>
            {
                var client = ServiceProvider.GetRequiredService <ICwsDeviceClient>();
                var result = await client.GetAccountsForDevice(TRNHelper.ExtractGuid(deviceTrn).Value);

                Assert.NotNull(result);
                Assert.False(result.HasMore);
                Assert.NotNull(result.Accounts);
                Assert.Single(result.Accounts);
                Assert.Equal(TRNHelper.ExtractGuidAsString(expectedAccountTrn), result.Accounts[0].Id);
                Assert.Equal(RelationStatusEnum.Active, result.Accounts[0].RelationStatus);
                return(true);
            });
        }