Exemplo n.º 1
0
        public async Task <IActionResult> CreateSecureMessageUrl([FromBody] SecureMessageRequestDto secureMessageRequest)
        {
            if (String.IsNullOrEmpty(secureMessageRequest.Message))
            {
                return(BadRequest("The message parameter cannot be empty."));
            }

            if (!Enum.IsDefined(typeof(Ttl), secureMessageRequest.Ttl))
            {
                return(BadRequest($"Ttl must be one of [{String.Join(",", Enum.GetNames(typeof(Ttl)))}]"));
            }

            var ttl = (int)Enum.Parse(typeof(Ttl), secureMessageRequest.Ttl.ToString());
            var key = await _messageService.Create(secureMessageRequest.Message, ttl);

            _logger.LogInformation(1, $"Saving message: {key}");

            var baseUrl = $"{Request.Scheme}://{Request.Host}";

            return(Ok(new CreateSecureMessageResponse
            {
                Key = key,
                Links = new Links
                {
                    Api = $"{baseUrl}{Request.PathBase}/{key}",
                    Web = $"{baseUrl}/messages/view/{key}"
                }
            }));
        }
        public async Task SuccessfullyGeneratesSecretUrl()
        {
            //Arrange
            var secureMessageRequestDto = new SecureMessageRequestDto
            {
                Message = _testMessage,
                Ttl     = _testTtl
            };

            var createSecureMessageResponse = new CreateSecureMessageResponse
            {
                Key   = _testKey,
                Links = new Links
                {
                    Api = $"{_baseUrl}{_testPathBase}/{_testKey}",
                    Web = $"{_baseUrl}/messages/view/{_testKey}"
                }
            };

            _messageService.Setup(e => e.Create(_testMessage, 1)).ReturnsAsync(_testKey);

            //Act
            var result = await _controller.CreateSecureMessageUrl(secureMessageRequestDto);

            var actualResult = result as OkObjectResult;

            //Assert
            _messageService.VerifyAll();
            Assert.IsNotNull(result);
            Assert.IsNotNull(actualResult.Value);
            Assert.AreEqual(HttpStatusCode.OK, (HttpStatusCode)actualResult.StatusCode);
            Assert.IsInstanceOf <CreateSecureMessageResponse>(actualResult.Value);
            var secureMessageResponse = actualResult.Value as CreateSecureMessageResponse;

            Assert.AreEqual(createSecureMessageResponse.Key, secureMessageResponse.Key);
            Assert.AreEqual(createSecureMessageResponse.Links.Api, secureMessageResponse.Links.Api);
            Assert.AreEqual(createSecureMessageResponse.Links.Web, secureMessageResponse.Links.Web);
        }