コード例 #1
0
        public Task <ProjectListResponseModel> GetProjectsForDevice(Guid deviceUid, bool includeProjectSettings = true, IHeaderDictionary customHeaders = null)
        {
            log.LogDebug($"{nameof(GetProjectsForDevice)} Mock: deviceUid {deviceUid}");

            var projectListResponseModel = new ProjectListResponseModel()
            {
                Projects = new List <ProjectResponseModel>()
                {
                    new ProjectResponseModel()
                    {
                        AccountTRN  = TRNHelper.MakeTRN(Guid.NewGuid().ToString(), TRNHelper.TRN_ACCOUNT),
                        ProjectTRN  = TRNHelper.MakeTRN(Guid.NewGuid().ToString()),
                        ProjectName = "this is a project",
                        Timezone    = "Timbucktoo",
                        Boundary    = new ProjectBoundary()
                        {
                            type        = "Polygon",
                            coordinates = new List <List <double[]> > {
                                new List <double[]> {
                                    new[] { 150.3, 1.2 }, new[] { 150.4, 1.2 }, new[] { 150.4, 1.3 }, new[] { 150.4, 1.4 }, new[] { 150.3, 1.2 }
                                }
                            }
                        }
                    }
                }
            };

            log.LogDebug($"{nameof(GetProjectsForDevice)} Mock: projectListResponseModel {JsonConvert.SerializeObject(projectListResponseModel)}");
            return(Task.FromResult(projectListResponseModel));
        }
コード例 #2
0
        public ProjectListResponseModel GetProjectsForDevice(string deviceTrn)
        {
            var projectListResponseModel = new ProjectListResponseModel()
            {
                Projects = new List <ProjectResponseModel>
                {
                    new ProjectResponseModel
                    {
                        AccountTRN  = TRNHelper.MakeTRN(Guid.NewGuid().ToString(), TRNHelper.TRN_ACCOUNT),
                        ProjectTRN  = TRNHelper.MakeTRN(Guid.NewGuid().ToString(), TRNHelper.TRN_PROJECT),
                        ProjectName = "this is a project",
                        Timezone    = "Timbucktoo",
                        Boundary    = new ProjectBoundary()
                        {
                            type = "Polygon", coordinates = new List <List <double[]> > {
                                new List <double[]> {
                                    new double[] { 180, 90 }, new double[] { 180, 90 }
                                }
                            }
                        }
                    }
                }
            };

            Logger.LogInformation($"{nameof(GetProjectsForDevice)}: deviceTrn {deviceTrn}. projectListResponseModel {JsonConvert.SerializeObject(projectListResponseModel)}");
            return(projectListResponseModel);
        }
コード例 #3
0
        public async Task GetProjects_NoneFoundInCws_UnhappyPath()
        {
            var cwsProjects     = new ProjectListResponseModel();
            var cwsDeviceClient = new Mock <ICwsDeviceClient>();

            cwsDeviceClient.Setup(pr => pr.GetProjectsForDevice(It.IsAny <Guid>(), true, _customHeaders))
            .ReturnsAsync(cwsProjects);

            var getProjectsForDeviceExecutor = RequestExecutorContainerFactory.Build <GetProjectsForDeviceExecutor>
                                                   (_logger, _configStore, _serviceExceptionHandler,
                                                   headers: _customHeaders, cwsDeviceClient: cwsDeviceClient.Object);
            var response = await getProjectsForDeviceExecutor.ProcessAsync(new DeviceIsUid(_deviceUid)) as ProjectDataListResult;

            Assert.NotNull(response);
            Assert.Equal(105, response.Code);
            Assert.Equal("Unable to locate projects for device in cws", response.Message);

            Assert.Empty(response.ProjectDescriptors);
        }
コード例 #4
0
        public void GetProjectsForDeviceTest()
        {
            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";
            const string expectedProjectTrn = "trn::profilex:us-west-2:project:560c2a6c-6b7e-48d8-b1a5-e4009e2d4c97";

            var projectListResponseModel = new ProjectListResponseModel
            {
                HasMore  = false,
                Projects = new List <ProjectResponseModel>()
                {
                    new ProjectResponseModel()
                    {
                        ProjectTRN = expectedProjectTrn, AccountTRN = expectedAccountTrn
                    }
                }
            };
            var route       = $"/devices/{deviceTrn}/projects";
            var expectedUrl = $"{baseUrl}{route}?from=0&limit=20&includeProjectSettings=true";

            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 projects for a device", mockWebRequest, null, expectedUrl, HttpMethod.Get, projectListResponseModel, async() =>
            {
                var client = ServiceProvider.GetRequiredService <ICwsDeviceClient>();
                var result = await client.GetProjectsForDevice(TRNHelper.ExtractGuid(deviceTrn).Value, true);

                Assert.NotNull(result);
                Assert.False(result.HasMore);
                Assert.NotNull(result.Projects);
                Assert.Single(result.Projects);
                Assert.Equal(TRNHelper.ExtractGuidAsString(expectedProjectTrn), result.Projects[0].ProjectId);
                Assert.Equal(TRNHelper.ExtractGuidAsString(expectedAccountTrn), result.Projects[0].AccountId);
                return(true);
            });
        }
コード例 #5
0
        public async Task GetProjects_HappyPath()
        {
            var cwsProjects = new ProjectListResponseModel
            {
                Projects = new List <ProjectResponseModel>
                {
                    new ProjectResponseModel()
                    {
                        AccountTRN  = TRNHelper.MakeTRN(_customerUid, TRNHelper.TRN_ACCOUNT),
                        ProjectTRN  = TRNHelper.MakeTRN(_projectUid, TRNHelper.TRN_PROJECT),
                        ProjectName = _projectName, Timezone = _timeZone, Boundary = _projectBoundary
                    }
                }
            };
            var cwsDeviceClient = new Mock <ICwsDeviceClient>();

            cwsDeviceClient.Setup(pr => pr.GetProjectsForDevice(It.IsAny <Guid>(), true, _customHeaders))
            .ReturnsAsync(cwsProjects);

            var getProjectsForDeviceExecutor = RequestExecutorContainerFactory.Build <GetProjectsForDeviceExecutor>
                                                   (_logger, _configStore, _serviceExceptionHandler,
                                                   headers: _customHeaders, cwsDeviceClient: cwsDeviceClient.Object);
            var response = await getProjectsForDeviceExecutor.ProcessAsync(new DeviceIsUid(_deviceUid)) as ProjectDataListResult;

            Assert.NotNull(response);
            Assert.Equal(0, response.Code);
            Assert.Equal("success", response.Message);

            Assert.NotNull(response.ProjectDescriptors);
            Assert.Single(response.ProjectDescriptors);
            Assert.Equal(_customerUid, response.ProjectDescriptors[0].CustomerUID);
            Assert.Equal(_projectUid, response.ProjectDescriptors[0].ProjectUID);
            Assert.Equal(Guid.Parse(_projectUid).ToLegacyId(), response.ProjectDescriptors[0].ShortRaptorProjectId);
            Assert.Equal(_projectName, response.ProjectDescriptors[0].Name);
            Assert.False(response.ProjectDescriptors[0].IsArchived);
            Assert.Equal(_boundaryString, response.ProjectDescriptors[0].ProjectGeofenceWKT);
        }