public async Task TRexExecutor_Manual_Happy_Project_NoDevice_UsingNE() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var northing = 67.8; var easting = 21.3; var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "cb460Serial", 0, 0, northing, easting); // expected convertNEtoLL result var points = new[] { new TwoDConversionCoordinate(insideLong.LonDegreesToRadians(), insideLat.LatDegreesToRadians()) }; var coordinateConversionResult = new CoordinateConversionResult(points); var projectForProjectUid = projectOfInterest; var platformSerialDevice = (DeviceData)null; var projectListForplatformSerial = (ProjectDataResult)null; var expectedResult = new GetProjectUidsResult(projectUid, string.Empty, string.Empty); await ExecuteManual (getProjectUidsRequest, projectForProjectUid, platformSerialDevice, projectListForplatformSerial, coordinateConversionResult, expectedResult, expectedCode : 0, expectedMessage : "success" ); }
public async Task TRexExecutor_Manual_Happy_Project_NoValidPosition_Calculated() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var northing = 67.8; var easting = 21.3; var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "cb450serial", 0, 0, northing, easting); var coordinateConversionResult = new CoordinateConversionResult(new TwoDConversionCoordinate[0]); var projectForProjectUid = projectOfInterest; var platformSerialDevice = (DeviceData)null; var projectListForPlatformSerial = (ProjectDataResult)null; var expectedResult = new GetProjectUidsResult(string.Empty, string.Empty, string.Empty); await ExecuteManual (getProjectUidsRequest, projectForProjectUid, platformSerialDevice, projectListForPlatformSerial, coordinateConversionResult, expectedResult, expectedCode : 3018, expectedMessage : "Manual Import: Unable to determine lat/long from northing/easting position" ); }
private async Task ExecuteManual(GetProjectUidsRequest request, ProjectData projectForProjectUid, DeviceData platformDevice, ProjectDataResult projectListForPlatform, CoordinateConversionResult coordinateConversionResult, GetProjectUidsResult expectedResult, int expectedCode, string expectedMessage ) { projectProxy.Setup(p => p.GetProject(request.ProjectUid, It.IsAny <HeaderDictionary>())).ReturnsAsync(projectForProjectUid); deviceProxy.Setup(d => d.GetDevice(request.PlatformSerial, It.IsAny <HeaderDictionary>())).ReturnsAsync(platformDevice); if (platformDevice != null) { deviceProxy.Setup(d => d.GetProjectsForDevice(platformDevice.DeviceUID, It.IsAny <HeaderDictionary>())).ReturnsAsync(projectListForPlatform); } if (coordinateConversionResult != null) { tRexCompactionDataProxy.Setup(x => x.SendDataPostRequest <CoordinateConversionResult, CoordinateConversionRequest>( It.IsAny <CoordinateConversionRequest>(), It.IsAny <string>(), It.IsAny <HeaderDictionary>(), false)) .ReturnsAsync(coordinateConversionResult); } var executor = RequestExecutorContainer.Build <ProjectUidsExecutor>( _loggerFactory.CreateLogger <ProjectUidsExecutorManualTests>(), ConfigStore, authorization.Object, projectProxy.Object, deviceProxy.Object, tRexCompactionDataProxy.Object, requestCustomHeaders); var result = await executor.ProcessAsync(request) as GetProjectUidsResult; ValidateResult(result, expectedResult, expectedCode, expectedMessage); }
public async Task TRexExecutor_Manual_Happy_Project_NoDevice_UsingLL() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "CB450", insideLat, insideLong); var projectForProjectUid = projectOfInterest; var platformSerialDevice = (DeviceData)null; var projectListForPlatformSerial = (ProjectDataResult)null; var expectedResult = new GetProjectUidsResult(projectUid, string.Empty, string.Empty); await ExecuteManual (getProjectUidsRequest, projectForProjectUid, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 0, expectedMessage : "success" ); }
private void ValidateResult(GetProjectUidsResult actualResult, GetProjectUidsResult expectedResult) { Assert.NotNull(actualResult); Assert.Equal(expectedResult.ProjectUid, actualResult.ProjectUid); Assert.Equal(expectedResult.DeviceUid, actualResult.DeviceUid); Assert.Equal(expectedResult.CustomerUid, actualResult.CustomerUid); Assert.Equal(expectedResult.Code, actualResult.Code); Assert.Equal(expectedResult.Message, actualResult.Message); }
private void ValidateResult(GetProjectUidsResult actualResult, GetProjectUidsResult expectedResult, int resultCode, string resultMessage) { Assert.IsNotNull(actualResult, "executor returned nothing"); Assert.AreEqual(expectedResult.ProjectUid, actualResult.ProjectUid, "executor returned incorrect ProjectUid"); Assert.AreEqual(expectedResult.DeviceUid, actualResult.DeviceUid, "executor returned incorrect DeviceUid"); Assert.AreEqual(expectedResult.CustomerUid, actualResult.CustomerUid, "executor returned incorrect CustomerUid"); Assert.AreEqual(resultCode, actualResult.Code, "executor returned incorrect result code"); Assert.AreEqual(resultMessage, actualResult.Message, "executor returned incorrect result message"); }
private async Task <GetProjectUidsResult> HandleManualImport(GetProjectUidsRequest request, DeviceData device) { // no checking of device or project states or WM licensing at this stage var deviceUid = device == null ? string.Empty : device.DeviceUID; var customerUid = device == null ? string.Empty : device.CustomerUID; var project = await dataRepository.GetProject(request.ProjectUid); log.LogDebug($"{nameof(HandleManualImport)}: Loaded project? {(project == null ? "project not found" : JsonConvert.SerializeObject(project))}"); if (project == null) { return(GetProjectUidsResult.FormatResult(deviceUid: deviceUid, customerUid: customerUid, uniqueCode: 38)); } if (!project.ProjectType.HasFlag(CwsProjectType.AcceptsTagFiles)) { return(GetProjectUidsResult.FormatResult(deviceUid: deviceUid, customerUid: customerUid, uniqueCode: 53)); } // New requirement for WorksOS. if (project.IsArchived) { return(GetProjectUidsResult.FormatResult(deviceUid: deviceUid, customerUid: customerUid, uniqueCode: 43)); } // we need to retain ability to identify specific error codes 38, 43, 41, 53 if (!request.HasLatLong && request.HasNE && request.Northing != null && request.Easting != null) { var convertedLL = await dataRepository.ConvertNEtoLL(request.ProjectUid, request.Northing.Value, request.Easting.Value); if (convertedLL == null) { return(GetProjectUidsResult.FormatResult(deviceUid: deviceUid, customerUid: customerUid, uniqueCode: 18)); } request.Longitude = convertedLL.ConversionCoordinates[0].X; request.Latitude = convertedLL.ConversionCoordinates[0].Y; } var intersects = PolygonUtils.PointInPolygon(project.ProjectGeofenceWKT, request.Latitude, request.Longitude); log.LogDebug($"{nameof(HandleManualImport)}: la/long is with project?: {intersects}"); if (!intersects) { return(GetProjectUidsResult.FormatResult(deviceUid: deviceUid, customerUid: customerUid, uniqueCode: 41)); } return(GetProjectUidsResult.FormatResult(project.ProjectUID, deviceUid, customerUid)); }
public async Task NoProjectProvided_Auto_Happy_DeviceAndSingleProjectFound() { var platformSerial = ExecutorTestFixture.dimensionsSerial; var latitude = 15.0; var longitude = 180.0; var request = new GetProjectUidsRequest(string.Empty, platformSerial, latitude, longitude); request.Validate(); var expectedResult = new GetProjectUidsResult(ExecutorTestFixture.dimensionsProjectUid, ExecutorTestFixture.dimensionsSerialDeviceUid, ExecutorTestFixture.dimensionsCustomerUID, 0, "success"); var result = await ExecutorTestFixture.tagFileAuthProjectV5Proxy.GetProjectUids(request); ValidateResult(result, expectedResult); }
public async Task NoProjectProvided_Auto_Happy_DeviceAndSingleProjectFound_UsingNE() { var platformSerial = ExecutorTestFixture.dimensionsSerial; var northing = 2300.77; var easting = 1650.66; var request = new GetProjectUidsRequest(string.Empty, platformSerial, 0, 0, northing, easting); request.Validate(); var expectedResult = new GetProjectUidsResult(ExecutorTestFixture.dimensionsProjectUid, ExecutorTestFixture.dimensionsSerialDeviceUid, ExecutorTestFixture.dimensionsCustomerUID, 0, "success"); var result = await ExecutorTestFixture.tagFileAuthProjectV5Proxy.GetProjectUids(request); ValidateResult(result, expectedResult); }
public async Task NoProjectProvided_Auto_Sad_DeviceNotFound() { var platformSerial = Guid.NewGuid().ToString(); var latitude = 89.0; var longitude = 130.0; var request = new GetProjectUidsRequest(string.Empty, platformSerial, latitude, longitude); request.Validate(); var expectedResult = new GetProjectUidsResult(string.Empty, string.Empty, string.Empty, uniqueCode: 3100, "Unable to locate device by serialNumber in cws"); var result = await ExecutorTestFixture.tagFileAuthProjectV5Proxy.GetProjectUids(request); ValidateResult(result, expectedResult); }
public async Task ProjectProvided_Manual_Sad_ProjectNotFound() { var projectUid = Guid.NewGuid().ToString(); var platformSerial = ExecutorTestFixture.dimensionsSerial; var latitude = 89.0; var longitude = 130.0; var request = new GetProjectUidsRequest(projectUid, platformSerial, latitude, longitude); request.Validate(); var expectedResult = new GetProjectUidsResult(string.Empty, ExecutorTestFixture.dimensionsSerialDeviceUid, ExecutorTestFixture.dimensionsCustomerUID, 3038, "Manual Import: Unable to find the Project requested"); var result = await ExecutorTestFixture.tagFileAuthProjectV5Proxy.GetProjectUids(request); ValidateResult(result, expectedResult); }
public void Validate() { if (string.IsNullOrEmpty(PlatformSerial)) { throw new ServiceException(System.Net.HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(uniqueCode: 51)); } if (Latitude < -90 || Latitude > 90) { throw new ServiceException(System.Net.HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(uniqueCode: 21)); } if (Longitude < -180 || Longitude > 180) { throw new ServiceException(System.Net.HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(uniqueCode: 22)); } }
public new void Validate() { base.Validate(); // if it has a projectUid, then it's a manual import and must have either assetUid or radio/dt if (!string.IsNullOrEmpty(ProjectUid) && !Guid.TryParse(ProjectUid, out var _)) { throw new ServiceException(System.Net.HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(ProjectUid, uniqueCode: 36)); } if (!HasLatLong && !HasNE) { throw new ServiceException(System.Net.HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(uniqueCode: 54)); } // NE can be negative and zero }
public async Task TRexExecutor_Auto_Happy_CBdevice_TooManyProjects() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var projectOfInterest2 = new ProjectData { ProjectUID = Guid.NewGuid().ToString(), ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "CB450Serial", insideLat, insideLong); var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest, projectOfInterest2 } }; var expectedResult = new GetProjectUidsResult(string.Empty, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteAuto (getProjectUidsRequest, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 3049, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(49) ); }
public async Task TRexExecutor_Auto_Happy_EC520device_WithProject_UsingNE() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var northing = 67.8; var easting = 21.3; var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "ec520Serial", 0.0, 0.0, northing, easting); // expected convertNEtoLL result var points = new [] { new TwoDConversionCoordinate(insideLong.LonDegreesToRadians(), insideLat.LatDegreesToRadians()) }; var coordinateConversionResult = new CoordinateConversionResult(points); var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest } }; var expectedResult = new GetProjectUidsResult(projectUid, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteAuto (getProjectUidsRequest, platformSerialDevice, projectListForPlatformSerial, coordinateConversionResult, expectedResult, expectedCode : 0, expectedMessage : "success" ); }
/// <summary> /// There are 2 modes this may be called in: /// a) manual a projectUid is provided /// check the project exists and the location is inside the project /// check if device exists, but this is optional. Return deviceUID if we have it /// /// b) Auto/Direct Import only a deviceSerial provided. /// check if device exists, obtaining the deviceUID /// get list of projects for the device and check lat/long inside one-only /// /// TFA v5 no longer has radio/deviceType -> Asset/Project map to cover special cases /// Radio serial no longer supported as not available in cws /// </summary> protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item) { if (!(item is GetProjectUidsRequest request)) { throw new ServiceException(HttpStatusCode.BadRequest, GetProjectUidsResult.FormatResult(uniqueCode: TagFileAuth.Models.ContractExecutionStatesEnum.SerializationError)); } var device = await dataRepository.GetDevice(request.PlatformSerial); var deviceStatus = (device?.Code == 0) ? string.Empty : $"Not found: deviceErrorCode: {device?.Code} message: {contractExecutionStatesEnum.FirstNameWithOffset(device?.Code ?? 0)}"; log.LogDebug($"{nameof(ProjectUidsExecutor)}: Found by PlatformSerial?: {request.PlatformSerial} device: {JsonConvert.SerializeObject(device)} {deviceStatus}"); return(request.IsManualImport ? await HandleManualImport(request, device) : HandleAutoImport(request, device)); }
public async Task TRexExecutor_Auto_Sad_EC520device_WithProject_NoValidPosition_Calculated() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var northing = 67.8; var easting = 21.3; var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "ec520Serial", 0.0, 0.0, northing, easting); var coordinateConversionResult = new CoordinateConversionResult(new TwoDConversionCoordinate[0]); var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest } }; var expectedResult = new GetProjectUidsResult(string.Empty, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteAuto (getProjectUidsRequest, platformSerialDevice, projectListForPlatformSerial, coordinateConversionResult, expectedResult, expectedCode : 3044, expectedMessage : "No projects found at the location provided" ); }
public async Task TRexExecutor_Manual_Happy_ProjectAndDevice() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "ec520Serial", insideLat, insideLong); var projectForProjectUid = projectOfInterest; var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest } }; var expectedResult = new GetProjectUidsResult(projectUid, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteManual (getProjectUidsRequest, projectForProjectUid, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 0, expectedMessage : "success" ); }
private GetProjectUidsResult HandleAutoImport(GetProjectUidsRequest request, DeviceData device) { if (device == null || device.Code != 0 || device.DeviceUID == null) { return(GetProjectUidsResult.FormatResult(uniqueCode: device?.Code ?? 47)); } var potentialProjects = dataRepository.GetIntersectingProjectsForDevice(request, device, out var errorCode); log.LogDebug($"{nameof(HandleAutoImport)}: potentialProjects: {JsonConvert.SerializeObject(potentialProjects)}"); if (!potentialProjects.ProjectDescriptors.Any()) { return(GetProjectUidsResult.FormatResult(deviceUid: device.DeviceUID, customerUid: device.CustomerUID, uniqueCode: errorCode)); } if (potentialProjects.ProjectDescriptors.Count > 1) { return(GetProjectUidsResult.FormatResult(deviceUid: device.DeviceUID, customerUid: device.CustomerUID, uniqueCode: 49)); } return(GetProjectUidsResult.FormatResult(potentialProjects.ProjectDescriptors[0].ProjectUID, device.DeviceUID, device.CustomerUID)); }
public async Task TRexExecutor_Auto_Happy_CBdevice_WithNoProject() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "cb460serial", 91, 181); var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult(); var expectedResult = new GetProjectUidsResult(string.Empty, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteAuto (getProjectUidsRequest, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 3048, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(48) ); }
public async Task Test_PlatformSerialNoValidationOk() { // This test ensures platformSerialNumber (serial/deviceid) is extracted and used in validation. Note this Tagfile has no Radio Serial id. Only Serial id. var projectUid = Guid.NewGuid(); var moqRequest = new GetProjectUidsRequest(projectUid.ToString(), string.Empty, 40, 50); var moqResult = new GetProjectUidsResult(projectUid.ToString(), null, null, 0, "success"); SetupDITfa(true, moqRequest, moqResult); byte[] tagContent; using (var tagFileStream = new FileStream(Path.Combine("TestData", "TAGFiles", "2415J078SW-Serial-Test.tag"), FileMode.Open, FileAccess.Read)) { tagContent = new byte[tagFileStream.Length]; tagFileStream.Read(tagContent, 0, (int)tagFileStream.Length); } var td = new TagFileDetail() { assetId = null, projectId = null, // force validation on serial id tagFileName = "2415J078SW-Serial-Test.tag", tagFileContent = tagContent, tccOrgId = "", IsJohnDoe = false }; var tagFilePreScan = new TAGFilePreScan(); await using (var stream = new MemoryStream(td.tagFileContent)) tagFilePreScan.Execute(stream); var result = await TagfileValidator.ValidSubmission(td, tagFilePreScan).ConfigureAwait(false); Assert.True(result.Code == (int)TRexTagFileResultCode.Valid, "Failed to return a Valid request"); Assert.True(td.projectId != null, "Failed to return a Valid projectID"); Assert.Equal("success", result.Message); }
public async Task TRexExecutor_Manual_Happy_ProjectArchived() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = true }; var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "CB450", 91, 181); var projectForProjectUid = projectOfInterest; var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest } }; var expectedResult = new GetProjectUidsResult(string.Empty, platformSerialDeviceUid, platformSerialAccountUid); await ExecuteManual (getProjectUidsRequest, projectForProjectUid, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 3043, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(43) ); }
public async Task TRexExecutor_Auto_Sad_EC520device_DeviceNotActive() { var projectUid = Guid.NewGuid().ToString(); var projectAccountUid = Guid.NewGuid().ToString(); var projectOfInterest = new ProjectData { ProjectUID = projectUid, ProjectType = CwsProjectType.AcceptsTagFiles, CustomerUID = projectAccountUid, IsArchived = false, ProjectGeofenceWKT = projectBoundary }; var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "cb450serial", 91, 181); var platformSerialDeviceUid = Guid.NewGuid().ToString(); var platformSerialAccountUid = Guid.NewGuid().ToString(); var platformSerialDevice = new DeviceData { Code = 100, Message = "Unable to locate device by serialNumber in cws" }; var projectListForPlatformSerial = new ProjectDataResult() { ProjectDescriptors = new List <ProjectData>() { projectOfInterest } }; var expectedResult = new GetProjectUidsResult(string.Empty, string.Empty, string.Empty); await ExecuteAuto (getProjectUidsRequest, platformSerialDevice, projectListForPlatformSerial, null, expectedResult, expectedCode : 3100, expectedMessage : "Unable to locate device by serialNumber in cws" ); }
public async Task Test_ValidateFailed_InvalidManualProjectType() { var projectUid = Guid.NewGuid(); var moqRequest = new GetProjectUidsRequest(projectUid.ToString(), string.Empty, 0, 0); var moqResult = new GetProjectUidsResult(string.Empty, string.Empty, string.Empty, 3044, "Manual Import: cannot import to a Civil type project"); SetupDITfa(true, moqRequest, moqResult); byte[] tagContent; using (var tagFileStream = new FileStream(Path.Combine("TestData", "TAGFiles", "TestTAGFile.tag"), FileMode.Open, FileAccess.Read)) { tagContent = new byte[tagFileStream.Length]; tagFileStream.Read(tagContent, 0, (int)tagFileStream.Length); } var td = new TagFileDetail() { assetId = null, projectId = projectUid, tagFileName = "Test.tag", tagFileContent = tagContent, tccOrgId = "", IsJohnDoe = false }; var tagFilePreScan = new TAGFilePreScan(); await using (var stream = new MemoryStream(td.tagFileContent)) tagFilePreScan.Execute(stream); var result = await TagfileValidator.ValidSubmission(td, tagFilePreScan).ConfigureAwait(false); Assert.True(result.Code == 3044, "Failed to return correct error code"); Assert.Equal("Manual Import: cannot import to a Civil type project", result.Message); }
public async Task Test_UsingNEE_ValidateOk() { var projectUid = Guid.NewGuid(); var moqRequest = new GetProjectUidsRequest(projectUid.ToString(), "1639J101YU", 0, 0, 5876814.5384829007, 7562822.7801738745); var moqResult = new GetProjectUidsResult(projectUid.ToString(), string.Empty, string.Empty, 0, "success"); SetupDITfa(true, moqRequest, moqResult); byte[] tagContent; using (var tagFileStream = new FileStream(Path.Combine("TestData", "TAGFiles", "SeedPosition-usingNEE.tag"), FileMode.Open, FileAccess.Read)) { tagContent = new byte[tagFileStream.Length]; tagFileStream.Read(tagContent, 0, (int)tagFileStream.Length); } var td = new TagFileDetail() { assetId = null, projectId = projectUid, tagFileName = "Bug ccssscon-401 NEE SeedPosition.tag", tagFileContent = tagContent, tccOrgId = "", IsJohnDoe = false }; var tagFilePreScan = new TAGFilePreScan(); await using (var stream = new MemoryStream(td.tagFileContent)) tagFilePreScan.Execute(stream); var result = await TagfileValidator.ValidSubmission(td, tagFilePreScan).ConfigureAwait(false); Assert.True(result.Code == (int)TRexTagFileResultCode.Valid, "Failed to return a Valid request"); Assert.Equal("success", result.Message); }
private void SetupDITfa(bool enableTfaService = true, GetProjectUidsRequest getProjectUidsRequest = null, GetProjectUidsResult getProjectUidsResult = null) { // this setup includes the DITagFileFixture. Done here to try to avoid random test failures. var moqStorageProxy = new Mock <IStorageProxy>(); var moqStorageProxyFactory = new Mock <IStorageProxyFactory>(); moqStorageProxyFactory.Setup(mk => mk.Storage(StorageMutability.Immutable)).Returns(moqStorageProxy.Object); moqStorageProxyFactory.Setup(mk => mk.Storage(StorageMutability.Mutable)).Returns(moqStorageProxy.Object); moqStorageProxyFactory.Setup(mk => mk.MutableGridStorage()).Returns(moqStorageProxy.Object); moqStorageProxyFactory.Setup(mk => mk.ImmutableGridStorage()).Returns(moqStorageProxy.Object); var moqSurveyedSurfaces = new Mock <ISurveyedSurfaces>(); var moqSiteModels = new Mock <ISiteModels>(); moqSiteModels.Setup(mk => mk.PrimaryMutableStorageProxy).Returns(moqStorageProxy.Object); DIBuilder .Continue() .Add(x => x.AddSingleton <IStorageProxyFactory>(moqStorageProxyFactory.Object)) .Add(x => x.AddSingleton <ISiteModels>(moqSiteModels.Object)) .Add(x => x.AddSingleton <ISurveyedSurfaces>(moqSurveyedSurfaces.Object)) .Add(x => x.AddSingleton <IProductionEventsFactory>(new ProductionEventsFactory())) .Build(); var newSiteModelGuidTfa = Guid.NewGuid(); ISiteModel mockedSiteModel = new SiteModel(newSiteModelGuidTfa, StorageMutability.Immutable); mockedSiteModel.SetStorageRepresentationToSupply(StorageMutability.Mutable); var moqSiteModelFactory = new Mock <ISiteModelFactory>(); moqSiteModelFactory.Setup(mk => mk.NewSiteModel(StorageMutability.Mutable)).Returns(mockedSiteModel); moqSiteModels.Setup(mk => mk.GetSiteModel(newSiteModelGuidTfa)).Returns(mockedSiteModel); // Mock the new site model creation API to return just a new site model moqSiteModels.Setup(mk => mk.GetSiteModel(newSiteModelGuidTfa, true)).Returns(mockedSiteModel); //Moq doesn't support extension methods in IConfiguration/Root. var moqConfiguration = DIContext.Obtain <Mock <IConfigurationStore> >(); var moqMinTagFileLength = 100; moqConfiguration.Setup(x => x.GetValueBool("ENABLE_TFA_SERVICE", It.IsAny <bool>())).Returns(enableTfaService); moqConfiguration.Setup(x => x.GetValueBool("ENABLE_TFA_SERVICE")).Returns(enableTfaService); moqConfiguration.Setup(x => x.GetValueInt("MIN_TAGFILE_LENGTH", It.IsAny <int>())).Returns(moqMinTagFileLength); moqConfiguration.Setup(x => x.GetValueInt("MIN_TAGFILE_LENGTH")).Returns(moqMinTagFileLength); var moqTfaProxy = new Mock <ITagFileAuthProjectV5Proxy>(); if (enableTfaService && getProjectUidsRequest != null) { moqTfaProxy.Setup(x => x.GetProjectUids(It.IsAny <GetProjectUidsRequest>(), It.IsAny <IHeaderDictionary>())).ReturnsAsync(getProjectUidsResult); } DIBuilder .Continue() .Add(x => x.AddSingleton(moqConfiguration.Object)) .Add(x => x.AddSingleton <ISiteModelFactory>(new SiteModelFactory())) .Add(x => x.AddSingleton(moqTfaProxy.Object)) .Complete(); }