示例#1
0
        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);
        }
示例#3
0
 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));
 }