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); }