public async Task PutAsync_BadRequestWithNoUserMessage() { // Arrange AreaMatch requestObj = new AreaMatch(); requestObj.Areas.Add(new Area { BeginTime = 0, EndTime = 1, Location = new Location { Latitude = 10.1234, Longitude = 10.1234 }, RadiusMeters = 100 }); // Act ActionResult controllerResponse = await this._controller .PutAsync(requestObj, CancellationToken.None); // Assert Assert.IsNotNull(controllerResponse); Assert.IsInstanceOfType(controllerResponse, typeof(BadRequestObjectResult)); }
public async Task PutAsync_OkWithValidInputs() { // Arrange AreaMatch requestObj = new AreaMatch { UserMessage = "User message content" }; requestObj.Areas.Add(new Area { BeginTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), EndTime = DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeMilliseconds(), Location = new Location { Latitude = 10.1234, Longitude = 10.1234 }, RadiusMeters = 100 }); // Act ActionResult controllerResponse = await this._controller .PutAsync(requestObj, CancellationToken.None); // Assert Assert.IsNotNull(controllerResponse); Assert.IsInstanceOfType(controllerResponse, typeof(OkResult)); }
public async Task PublishAreaAsync_SucceedsOnValidInputs() { // Arrange AreaMatch request = new AreaMatch(); request.Areas.Add(new Area { BeginTime = 0, EndTime = 1, Location = new Location { Latitude = 10.1234, Longitude = -10.1234 }, RadiusMeters = 100 }); request.UserMessage = "Test user message!"; string repoResponse = "00000000-0000-0000-0000-0000000000000"; this._repo .Setup(r => r.InsertAsync(It.IsAny <MatchMessage>(), It.IsAny <Region>(), CancellationToken.None)) .Returns(Task.FromResult(repoResponse)); // Act await this._service.PublishAreaAsync(request, CancellationToken.None); // Assert // No exceptions thrown }
/// <inheritdoc/> public async Task PublishAreaAsync(AreaMatch areaMatch, CancellationToken cancellationToken = default) { // Validate inputs if (areaMatch == null) { throw new ArgumentNullException(nameof(areaMatch)); } RequestValidationResult validationResult = areaMatch.Validate(); if (validationResult.Passed) { // Build a MatchMessage containing the submitted areas MatchMessage message = new MatchMessage(); message.AreaMatches.Add(areaMatch); // Define a regions for the published message IEnumerable <Region> messageRegions = RegionHelper.GetRegionsCoverage(areaMatch.Areas, this.RegionPrecision); // Publish await this._messageRepo.InsertAsync(message, messageRegions, cancellationToken); } else { throw new RequestValidationFailedException(validationResult); } }
public async Task PublishAsync_SucceedsOnValidMessage() { // Arrange string repoResponse = "00000000-0000-0000-0000-000000000001"; Region region = new Region { LatitudePrefix = 10.1234, LongitudePrefix = -10.1234, Precision = 4 }; MatchMessage request = new MatchMessage(); AreaMatch areaMatch = new AreaMatch { UserMessage = "Test user message" }; areaMatch.Areas.Add(new Area { BeginTime = 0, EndTime = 1, Location = new Location { Latitude = 10.1234, Longitude = -10.1234 }, RadiusMeters = 100 }); request.AreaMatches.Add(areaMatch); BluetoothMatch btMatch = new BluetoothMatch { UserMessage = "Test BL message" }; btMatch.Seeds.Add(new BlueToothSeed { Seed = "00000000-0000-0000-0000-000000000000", SequenceEndTime = 1, SequenceStartTime = 0 }); request.BluetoothMatches.Add(btMatch); this._repo .Setup(r => r.InsertAsync(It.IsAny <MatchMessage>(), It.IsAny <Region>(), CancellationToken.None)) .Returns(Task.FromResult(repoResponse)); // Act string result = await this._service .PublishAsync(request, region, CancellationToken.None); // Assert Assert.IsNotNull(result); Assert.AreEqual(repoResponse, result); }
public async Task PutAsync_BadRequestObjectWithNoAreas() { // Arrange AreaMatch requestObj = new AreaMatch { UserMessage = "This is a message" }; // Act ActionResult controllerResponse = await this._controller .PutAsync(requestObj, CancellationToken.None); // Assert Assert.IsNotNull(controllerResponse); Assert.IsInstanceOfType(controllerResponse, typeof(BadRequestObjectResult)); }
public async Task <ActionResult> PutAsync([Required] AreaMatch request, CancellationToken cancellationToken = default) { try { // Publish area await this._messageService.PublishAreaAsync(request, cancellationToken); return(Ok()); } catch (RequestValidationFailedException ex) { // Only return validation issues return(BadRequest(ex.ValidationResult)); } catch (ArgumentNullException) { return(BadRequest()); } }
public async Task PublishAsync_ArgumentNullOnNullRegion() { // Arrange MatchMessage request = new MatchMessage(); AreaMatch areaMatch = new AreaMatch { UserMessage = "Test user message" }; areaMatch.Areas.Add(new Area { BeginTime = 0, EndTime = 1, Location = new Location { Latitude = 10.1234, Longitude = -10.1234 }, RadiusMeters = 100 }); request.AreaMatches.Add(areaMatch); BluetoothMatch btMatch = new BluetoothMatch { UserMessage = "Test BL message" }; btMatch.Seeds.Add(new BlueToothSeed { Seed = "00000000-0000-0000-0000-000000000000", SequenceEndTime = 1, SequenceStartTime = 0 }); request.BluetoothMatches.Add(btMatch); // Act string result = await this._service .PublishAsync(request, null, CancellationToken.None); // Assert // Exception caught by decorator }
public async Task <ActionResult> PutAsync([Required] AreaMatch request, CancellationToken cancellationToken = default) { try { // Parse AreaMatch to AreaReport type NarrowcastMessage report = this._map.Map <NarrowcastMessage>(request); // Publish area await this._reportService.PublishAreaAsync(report, cancellationToken); return(Ok()); } catch (RequestValidationFailedException ex) { // Only return validation issues return(BadRequest(ex.ValidationResult)); } catch (ArgumentNullException) { return(BadRequest()); } }