public void TokenizeCard_GivenValidResult_ShouldReturnOk() { //Arrange var cardRequest = new TokenizeCardRequest { Name = "Biplov KC", Number = "111222333444", ExpiryYear = 2021, ExpiryMonth = 12, Cvv = "222", }; _merchantQueryMock .Setup(x => x.GetMerchantIdAsync(It.IsNotNull <string>())) .ReturnsAsync(It.IsAny <Guid>()); var innerCommand = new AddNewCardCommand(cardRequest.Name, cardRequest.Number, cardRequest.ExpiryMonth, cardRequest.ExpiryYear, cardRequest.Cvv, null, It.IsAny <string>()); var command = new IdentifiedCommand <AddNewCardCommand, Result>(innerCommand); _mediatorMock.Setup(x => x.Send(command, It.IsAny <CancellationToken>())).ReturnsAsync(Result.Ok); //Act var result = _sut.TokenizeCard(cardRequest).GetAwaiter().GetResult(); var okResult = result as OkObjectResult; //Assert okResult.ShouldNotBeNull(); okResult.StatusCode.ShouldBe(200); }
public async Task<IActionResult> TokenizeCard([FromBody] TokenizeCardRequest request) { var merchantIdentity = await _merchantQuery.GetMerchantIdAsync(GetAuthorizationKey()); if (merchantIdentity.Equals(Guid.Empty)) return new UnauthorizedObjectResult(ExternalErrorReason.InvalidSecretKey); var innerCommand = new AddNewCardCommand(request.Name, request.Number, request.ExpiryMonth, request.ExpiryYear, request.Cvv, null, HttpContext.TraceIdentifier); var command = new IdentifiedCommand<AddNewCardCommand, Result>(innerCommand); var result = await _mediator.Send(command); if (result.IsSuccess) { var card = await _cardQuery.GetCardByCardNumberAsync(request.Number); return Ok(card); } return UnprocessableEntity(result.Error); }