public async Task Create_Unhandled_Exception_From_Command_Is_Catched_And_Logged() { // Arrange var loggerMock = new Mock <ILogger>(); ShortTokenController shortTokenController = new ShortTokenController(loggerMock.Object); var generateShortTokenCommandMock = new Mock <IGenerateShortTokenCommand>(); var exFromCommand = new Exception(); generateShortTokenCommandMock.Setup(x => x.Execute(It.IsAny <string>())).ThrowsAsync(exFromCommand); CreateSTokenModel model = new CreateSTokenModel() { RToken = "some refresh token" }; // Act var result = await shortTokenController.Create(model, generateShortTokenCommandMock.Object); // Assert loggerMock.Verify(x => x.LogAsync(It.Is <Log>(l => l.Type == LogType.Error && l.Context == "ShortTokenController.Create"), default), Times.Once); Assert.IsInstanceOf <BadRequestObjectResult>(result); var badRequestResult = (BadRequestObjectResult)result; Assert.AreEqual(400, badRequestResult.StatusCode); Assert.IsInstanceOf <Message>(badRequestResult.Value); }
public async Task <IActionResult> Create([FromBody] CreateSTokenModel model, [FromServices] IGenerateShortTokenCommand generateShortTokenCommand) { try { if (model == null || model.RToken == null) { return(BadRequest(new Message("Invalid refresh token provided."))); } TokenResult sTokenRes = await generateShortTokenCommand.Execute(model.RToken); return(Created("", sTokenRes)); } catch (Exception ex) { //Log error await _logger.LogErrorAsync("ShortTokenController.Create", "Exception was thrown", new { CreateSTokenModel = model, Exception = ex }); return(BadRequest(new Message("Something went wrong."))); } }
public async Task Create_When_Called_Returns_Short_Token() { // Arrange ILogger logger = new Mock <ILogger>().Object; ShortTokenController shortTokenController = new ShortTokenController(logger); CreateSTokenModel model = new CreateSTokenModel() { RToken = "some refresh token" }; var generateShortTokenCommandMock = new Mock <IGenerateShortTokenCommand>(); TokenResult tokenResult = new TokenResult("", "", DateTime.Now); generateShortTokenCommandMock.Setup(x => x.Execute(It.IsAny <string>())).ReturnsAsync(tokenResult); // Act var result = await shortTokenController.Create(model, generateShortTokenCommandMock.Object); // Assert Assert.IsInstanceOf <CreatedResult>(result); var createdResult = (CreatedResult)result; Assert.AreEqual(201, createdResult.StatusCode); Assert.AreEqual(tokenResult, createdResult.Value); }