public void CreateFilterThenGetListOfFilters(FilterType filterType) { ts.DeleteAllFiltersForProject(ProjectUid.ToString()); const string filterName = "Filter Web test 2"; Msg.Title(filterName, $"Create {filterType } filter then get a list of filters"); var filterJson = CreateTestFilter(ElevationType.Last, null, null, 1, null, DateTime.Now.AddYears(-5).ToUniversalTime(), DateTime.Now.AddYears(-1).ToUniversalTime()); var filterRequest = FilterRequest.Create(string.Empty, filterName, filterJson, filterType); var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var response = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var filterUid = filterResponse.FilterDescriptor.FilterUid; var responseGet = ts.CallFilterWebApi($"api/v1/filters/{ProjectUid}", "GET"); var filterResponseGet = JsonConvert.DeserializeObject <FilterDescriptorListResult>(responseGet, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); if (filterType == FilterType.Persistent) { Assert.AreEqual(filterJson, filterResponseGet.FilterDescriptors[0].FilterJson, "JSON Filter doesn't match for GET request"); } else { Assert.AreEqual(0, filterResponseGet.FilterDescriptors.Count, "Should not return transient or report filters in list"); } }
public void CreateSimpleFilter(FilterType filterType) { ts.DeleteAllFiltersForProject(ProjectUid.ToString()); const string filterName = "Filter Web test 1"; Msg.Title(filterName, $"Create {filterType } filter with all the defaults in the filter json"); var filterJson = CreateTestFilter(); var filterRequest = FilterRequest.Create(string.Empty, filterName, filterJson, filterType); var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var responseCreate = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseCreate, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(filterResponse.FilterDescriptor.FilterJson, filterJson, "JSON Filter doesn't match for PUT request"); Assert.AreEqual(filterResponse.FilterDescriptor.Name, filterName, "Filter name doesn't match for PUT request"); Assert.AreEqual(filterResponse.FilterDescriptor.FilterType, filterType, "Filter type doesn't match for PUT request"); var filterUid = filterResponse.FilterDescriptor.FilterUid; var responseGet = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filterUid}", "GET"); var filterResponseGet = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseGet, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(filterResponseGet.FilterDescriptor.FilterJson, filterJson, "JSON Filter doesn't match for GET request"); Assert.AreEqual(filterResponseGet.FilterDescriptor.Name, filterName, "Filter name doesn't match for GET request"); Assert.AreEqual(filterResponseGet.FilterDescriptor.FilterType, filterType, "Filter type doesn't match for GET request"); }
public void CreateThenDeleteFilter(FilterType filterType) { const string filterName = "Filter Web test 7"; Msg.Title(filterName, "Create then delete {filterType } filter"); var filterJson = CreateTestFilter(ElevationType.Lowest, true, false); var filterRequest = FilterRequest.Create(string.Empty, filterName, filterJson, filterType); var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var response = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var filterUid = filterResponse.FilterDescriptor.FilterUid; var responseDelete = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filterUid}", "DELETE"); var responseDel = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseDelete, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(responseDel.Message, "success", " delete call to wep api expects success"); var responseGet = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filterUid}", "GET"); var respGet = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseGet, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(respGet.Message, "GetFilter By filterUid. The requested filter does not exist, or does not belong to the requesting customer; project or user.", "Expecting an error message to say the filter does not exist."); }
public void CreateFilterWithBoundaryThenDeleteBoundary(FilterType filterType) { ts.DeleteAllBoundariesAndAssociations(); const string filterName = "Filter Web test 5"; Msg.Title(filterName, $"Create {filterType} filter with boundary and delete boundary"); var boundaryWkt = GenerateWKTPolygon(); var boundaryName = filterName + " - boundary"; var boundaryRequest = BoundaryRequest.Create(string.Empty, boundaryName, boundaryWkt); var boundary = JsonConvert.SerializeObject(boundaryRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var responseCreate = ts.CallFilterWebApi($"api/v1/boundary/{ProjectUid}", "PUT", boundary); var boundaryResponse = JsonConvert.DeserializeObject <GeofenceDataSingleResult>(responseCreate, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var boundaryUid = boundaryResponse.GeofenceData.GeofenceUID; var filterJson = CreateTestFilter(polygonUid: boundaryUid.ToString()); var filterRequest = FilterRequest.Create(string.Empty, filterName, filterJson, filterType); var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); responseCreate = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseCreate, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var filterUid = filterResponse.FilterDescriptor.FilterUid; var hydratedFilterJson = CreateTestFilter(polygonUid: boundaryUid.ToString(), polygonName: boundaryName, polygonPoints: GetPointsFromWkt(boundaryWkt), polygonType: GeofenceType.Filter); var responseDelete = ts.CallFilterWebApi($"api/v1/boundary/{ProjectUid}?boundaryUid={boundaryUid}", "DELETE"); var filterResponse1 = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseDelete, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(0, filterResponse1.Code, " Expecting a sucessful result but got " + filterResponse1.Message); var responseGet = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filterUid}", "GET"); var filterResponseGet = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseGet, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(filterRequest.Name, filterResponseGet.FilterDescriptor.Name, "Filter name doesn't match for GET request"); Assert.AreEqual(hydratedFilterJson, filterResponseGet.FilterDescriptor.FilterJson, "JSON Filter doesn't match for GET request"); Assert.AreEqual(filterRequest.FilterType, filterResponseGet.FilterDescriptor.FilterType, "Filter type doesn't match for GET request"); }
public void CreateFilterWithInvalidDesignId(FilterType filterType) { const string filterName = "Filter Web test 6"; Msg.Title(filterName, $"Create {filterType } filter with invalid DesignId"); var filterRequest = FilterRequest.Create(string.Empty, filterName, string.Empty, filterType); filterRequest.FilterJson = "{\"startUTC\":null,\"designUid\":\"xxx\",\"contributingMachines\":[{\"assetID\":123456789,\"machineName\":\"TheMachineName\",\"isJohnDoe\":false}],\"onMachineDesignID\":null,\"elevationType\":3,\"vibeStateOn\":true,\"forwardDirection\":false,\"layerNumber\":null,\"layerType\":null}"; var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var responseCreate = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseCreate, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(filterResponse.Message, "Invalid designUid.", "Expecting an Invalid designUid."); }
public void CreateThenUpdateFilter(FilterType filterType) { //Note: cannot update a transient filter - must create a new one ts.DeleteAllFiltersForProject(ProjectUid.ToString()); const string filterName = "Filter Web test 3"; Msg.Title(filterName, $"Create and update {filterType } filter"); var filterJson = CreateTestFilter(ElevationType.Last, null, null, 1, null, DateTime.Now.AddYears(-5).ToUniversalTime(), DateTime.Now.AddYears(-1).ToUniversalTime()); var filterRequest = FilterRequest.Create(string.Empty, filterName, filterJson, filterType); var filter = JsonConvert.SerializeObject(filterRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var response = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var filterUid = filterResponse.FilterDescriptor.FilterUid; var filterJson2 = CreateTestFilter(); var filterName2 = "Updated filter"; var filterRequest2 = FilterRequest.Create(filterUid, filterName2, filterJson2, filterType); var filter2 = JsonConvert.SerializeObject(filterRequest2, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}", "PUT", filter2); var responseGet = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filterUid}", "GET"); var filterResponseGet = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(responseGet, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); //Can only update name, not JSON, therefore name should be second one but JSON the original Assert.AreEqual(filterJson, filterResponseGet.FilterDescriptor.FilterJson, "JSON Filter doesn't match for GET request"); Assert.AreEqual(filterName2, filterResponseGet.FilterDescriptor.Name, "Filter name doesn't match for GET request"); Assert.AreEqual(filterType, filterResponseGet.FilterDescriptor.FilterType, "Filter type doesn't match for GET request"); }
public void PostMultipleFiltersThenGetFilters() { const string filterName = "Filter Web test 8"; Msg.Title(filterName, "Post filters then get a list of filters"); var filterJson1 = CreateTestFilter(ElevationType.Last, null, null, 1, null, DateTime.Now.AddYears(-5).ToUniversalTime(), DateTime.Now.AddYears(-1).ToUniversalTime()); var filterRequest1 = FilterRequest.Create(string.Empty, filterName + "- one", filterJson1, FilterType.Transient); var filterJson2 = CreateTestFilter(ElevationType.First, true, true, 3, null, DateTime.Now.AddYears(-5).ToUniversalTime(), DateTime.Now.AddYears(-1).ToUniversalTime()); var filterRequest2 = FilterRequest.Create(string.Empty, filterName + "- two", filterJson2, FilterType.Transient); var filterListRequest = new TestUtility.Model.WebApi.FilterListRequest(); filterListRequest.FilterRequests.Add(filterRequest1); filterListRequest.FilterRequests.Add(filterRequest2); var filter = JsonConvert.SerializeObject(filterListRequest, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var response = ts.CallFilterWebApi($"api/v1/filters/{ProjectUid}", "POST", filter); var filterResponse = JsonConvert.DeserializeObject <FilterDescriptorListResult>(response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(0, filterResponse.Code, " Expecting a sucessful result but got " + filterResponse.Message); var filter1UID = filterResponse.FilterDescriptors[0].FilterUid; var filter2UID = filterResponse.FilterDescriptors[1].FilterUid; var filter1Response = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filter1UID}", "GET"); var filter2Response = ts.CallFilterWebApi($"api/v1/filter/{ProjectUid}?filterUid={filter2UID}", "GET"); var filter1 = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(filter1Response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); var filter2 = JsonConvert.DeserializeObject <FilterDescriptorSingleResult>(filter2Response, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Unspecified }); Assert.AreEqual(filterJson1, filter1.FilterDescriptor.FilterJson); Assert.AreEqual(filterJson2, filter2.FilterDescriptor.FilterJson); }
/// <summary> /// Convert a simple filter into a Real Filter via the Filter service /// </summary> /// <returns>Filter UID</returns> private async Task <Guid> ConvertSimpleFilter(SimpleFilter simpleFilter) { if (simpleFilter == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, "No Simple Filter found"); } var project = await _projectProxy.GetProjectForCustomer(CustomerUid, simpleFilter.ProjectUid, CustomHeaders); if (project == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, $"Cannot find project {simpleFilter.ProjectUid} for Customer {CustomerUid}"); } var file = await _fileImportProxy.GetFileForProject(simpleFilter.ProjectUid, UserId, simpleFilter.DesignFileUid, CustomHeaders); if (file == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, $"Cannot find file {simpleFilter.DesignFileUid} for project {simpleFilter.ProjectUid}"); } var filterModel = new Filter.Abstractions.Models.Filter(simpleFilter.StartDateUtc, simpleFilter.EndDateUtc, simpleFilter.DesignFileUid, file.Name, null, null, null, null, null, null, simpleFilter.LiftNumber); var filterRequest = FilterRequest.Create(filterModel); var result = await _filterServiceProxy.CreateFilter(simpleFilter.ProjectUid, filterRequest, CustomHeaders); if (result.Code != 0) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.DataError, result.Code.ToString(), result.Message); } var guid = Guid.Parse(result.FilterDescriptor.FilterUid); Log.LogInformation($"Converted Simple filter '{JsonConvert.SerializeObject(simpleFilter)}' to a " + $"{nameof(FilterRequest)}: '{JsonConvert.SerializeObject(filterRequest)}'. FilterUID: {guid}"); return(guid); }