public async Task HydrateJsonWithBoundary_HappyPath_Custom(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); var geofence = new Geofence { GeofenceUID = boundaryUid, Name = Name, GeometryWKT = GeometryWKT, GeofenceType = GeofenceType.Filter }; geofenceRepo.Setup(g => g.GetGeofence(It.IsAny <string>())).ReturnsAsync(geofence); //var geofenceProxy = new Mock<IGeofenceProxy>(); var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, Name = "a filter", FilterType = filterType, FilterJson = "{\"designUid\": \"id\", \"vibeStateOn\": true, \"polygonUid\": \"" + geofence.GeofenceUID + "\"}" }); var result = await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object,*/ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false); var expectedResult = "{\"designUid\":\"id\",\"vibeStateOn\":true,\"polygonUid\":\"" + geofence.GeofenceUID + "\",\"polygonName\":\"" + geofence.Name + "\",\"polygonLL\":[{\"Lat\":12.677856,\"Lon\":80.257874},{\"Lat\":13.039345,\"Lon\":79.856873},{\"Lat\":13.443052,\"Lon\":80.375977}]," + "\"polygonType\":" + (int)geofence.GeofenceType + "}"; Assert.Equal(expectedResult, result); }
/// <summary> /// Processes the PutFilter Request /// </summary> protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item) { var request = CastRequestObjectTo <FilterRequestFull>(item, 38); FilterDescriptorSingleResult result; // Hydrate the polygon filter if present. request.FilterJson = await ValidationUtil.HydrateJsonWithBoundary(/* GeofenceProxy,*/ auxRepository as GeofenceRepository, log, serviceExceptionHandler, request); // Perform any required combination of filters of the request to create a new filter lists a set of filter UIDs and combination roles request.FilterJson = await CombineFilters(request); if (request.FilterType == FilterType.Transient) { result = await ProcessTransient(request); } else { // Hydrate the alignment and design filenames if present (persistent filters only). FilterFilenameUtil.GetFilterFileNames(log, serviceExceptionHandler, fileImportProxy, request); result = await ProcessPersistent(request); } await FilterJsonHelper.ParseFilterJson(request.ProjectData, result.FilterDescriptor, Productivity3dV2ProxyCompaction, request.CustomHeaders); return(result); }
public async Task HydrateJsonWithBoundary_InvalidBoundary2(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); var geofence = new Geofence { GeofenceType = GeofenceType.Filter, GeometryWKT = "POLYGON((-115.0200886019198 36.20745605916501,-115.02005976817289 36.20734622441246,-115.01992699882665 36.2073559634608,-115.0198176988093 36.207342978062755,-115.01973320922532 36.20734027277125,-115.01974729082266 36.20738950906242,-115.01975466689743 36.2074300884,-115.01996052643932 36.20746201079744))" }; // var geofence = new Geofence { GeometryWKT = "POLYGON((-115.02022874734084 36.20751287018342,-115.02025556943099 36.207300775504265,-115.02001953503766 36.20729428280093,-115.01966816565673 36.20726506562927,-115.01945493004004 36.20714170411769,-115.0192846097676 36.20734189594616,-115.01962927362601 36.20748581732266,-115.02022874734084 36.20751287018342))" }; geofenceRepo.Setup(g => g.GetGeofence(It.IsAny <string>())).ReturnsAsync(geofence); //var geofenceProxy = new Mock<IGeofenceProxy>(); //var geofenceData = new GeofenceData { GeofenceType = GeofenceType.Generic.ToString(), GeometryWKT = geofence.GeometryWKT }; //geofenceProxy.Setup(g => g.GetGeofenceForCustomer(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<HeaderDictionary>())).ReturnsAsync(geofenceData); var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, Name = "a filter", FilterType = filterType, FilterJson = "{\"designUID\": \"id\", \"vibeStateOn\": true, \"polygonUID\": \"" + boundaryUid + "\"}" }); var ex = await Assert.ThrowsAsync <ServiceException>(async() => await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object,*/ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false)); Assert.Contains("2045", ex.GetContent); Assert.Contains("Invalid spatial filter boundary. One or more polygon components are missing.", ex.GetContent); }
public async Task HydrateJsonWithBoundary_InvalidBoundary(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); var geofence = new Geofence { GeometryWKT = "This is not a valid polygon WKT", GeofenceType = GeofenceType.Filter }; geofenceRepo.Setup(g => g.GetGeofence(It.IsAny <string>())).ReturnsAsync(geofence); //var geofenceProxy = new Mock<IGeofenceProxy>(); var geofenceData = new GeofenceData { GeometryWKT = geofence.GeometryWKT, GeofenceType = GeofenceType.Generic.ToString() }; //geofenceProxy.Setup(g => g.GetGeofenceForCustomer(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<HeaderDictionary>())).ReturnsAsync(geofenceData); var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, Name = "a filter", FilterType = filterType, FilterJson = "{\"designUID\": \"id\", \"vibeStateOn\": true, \"polygonUID\": \"" + boundaryUid + "\"}" }); var ex = await Assert.ThrowsAsync <ServiceException>(async() => await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object,*/ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false)); Assert.Contains("2045", ex.GetContent); Assert.Contains("Invalid spatial filter boundary. One or more polygon components are missing.", ex.GetContent); }
public async Task HydrateJsonWithBoundary_NoGeofence(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); geofenceRepo.Setup(g => g.GetGeofence(It.IsAny <string>())).ReturnsAsync((Geofence)null); //var geofenceProxy = new Mock<IGeofenceProxy>(); //geofenceProxy.Setup(g => g.GetGeofenceForCustomer(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<HeaderDictionary>())).ReturnsAsync( // (GeofenceData)null); var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, Name = "a filter", FilterType = filterType, FilterJson = "{\"designUID\": \"id\", \"vibeStateOn\": true, \"polygonUID\": \"" + boundaryUid + "\"}" }); var ex = await Assert.ThrowsAsync <ServiceException>(async() => await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object,*/ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false)); Assert.Contains("2040", ex.GetContent); Assert.Contains("Validation of Project/Boundary failed. Not allowed.", ex.GetContent); }
public async Task HydrateJsonWithBoundary_IncludeAlignment(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); //var geofenceProxy = new Mock<IGeofenceProxy>(); var alignmentUid = Guid.NewGuid().ToString(); var startStation = 100.456; var endStation = 200.5; var leftOffset = 4.5; var rightOffset = 2.5; var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, Name = "a filter", FilterType = filterType, FilterJson = "{\"designUID\": \"id\", \"vibeStateOn\": true, \"alignmentUid\": \"" + alignmentUid + "\", \"startStation\":" + startStation + ", \"endStation\":" + endStation + ", \"leftOffset\":" + leftOffset + ", \"rightOffset\":" + rightOffset + "}" }); var result = await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object,*/ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false); Assert.Equal(request.FilterJson, result); }
public async Task HydrateJsonWithBoundary_NoPolygonUid(FilterType filterType) { var log = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger <ValidationTests>(); var geofenceRepo = new Mock <IGeofenceRepository>(); //var geofenceProxy = new Mock<IGeofenceProxy>(); var request = FilterRequestFull.Create(null, custUid, false, userUid, new ProjectData { ProjectUID = projectUid }, new FilterRequest { FilterUid = filterUid, FilterType = filterType, FilterJson = "{\"designUID\": \"id\", \"vibeStateOn\": true}", Name = "a filter" }); var result = await ValidationUtil .HydrateJsonWithBoundary(/*geofenceProxy.Object, */ geofenceRepo.Object, log, serviceExceptionHandler, request).ConfigureAwait(false); Assert.Equal(request.FilterJson, result); }