public async Task <IActionResult> NotifyMe(string id, [FromBody] NotifyMeRequest notifyMeRequest) { logger.LogInformation("In NotifyMe action with id: {Id} and notifyMeRequest: {@NotifyMeRequest}", id, notifyMeRequest.ToLogInfo()); var delivery = await deliveryRepository.GetAsync(id); if (delivery == null) { logger.LogDebug("Delivery id: {Id} not found", id); return(NotFound()); } //TODO: Authorize that user owns this delivery. var internalNotifyMeRequest = new InternalNotifyMeRequest { DeliveryId = id, EmailAddress = notifyMeRequest.EmailAddress, SMS = notifyMeRequest.SMS }; await notifyMeRequestRepository.AddAsync(internalNotifyMeRequest); return(NoContent()); }
public async Task NotifyMe_AddsNotifyMeRequest() { // Arrange InternalNotifyMeRequest savedNotifyMeRequest = null; var deliveryRepository = new Mock <IDeliveryRepository>(); deliveryRepository.Setup(r => r.GetAsync("deliveryid")).ReturnsAsync(delivery); var notifyMeRequestRepository = new Mock <INotifyMeRequestRepository>(); notifyMeRequestRepository.Setup(r => r.AddAsync(It.IsAny <InternalNotifyMeRequest>())) .Returns(Task.CompletedTask) .Callback <InternalNotifyMeRequest>(r => savedNotifyMeRequest = r); var loggerFactory = new Mock <ILoggerFactory>(); loggerFactory.Setup(f => f.CreateLogger(It.IsAny <string>())).Returns(new Mock <ILogger>().Object); var target = new DeliveriesController(deliveryRepository.Object, notifyMeRequestRepository.Object, new Mock <INotificationService>().Object, new Mock <IDeliveryHistoryService>().Object, new Mock <IDeliveryStatusEventRepository>().Object, loggerFactory.Object); var notifyMeRequest = new NotifyMeRequest("*****@*****.**", "1234567"); // Act var result = await target.NotifyMe("deliveryid", notifyMeRequest) as NoContentResult; // Assert Assert.IsNotNull(result); Assert.AreEqual("deliveryid", savedNotifyMeRequest.DeliveryId); Assert.AreEqual("*****@*****.**", savedNotifyMeRequest.EmailAddress); Assert.AreEqual("1234567", savedNotifyMeRequest.SMS); }
public async Task AddAsync(InternalNotifyMeRequest notifyMeRequest) { await DocumentDBRepository <InternalNotifyMeRequest> .CreateItemAsync(notifyMeRequest, notifyMeRequest.DeliveryId.Substring(0, Constants.PartitionKeyLength)); }
public Task SendNotificationsAsync(InternalNotifyMeRequest notifyMeRequest) { return(Task.Delay(0)); }