Esempio n. 1
0
        public async Task TransferMoney_TransferConcurrentData_ReturnsBadRequest()
        {
            var isWithBadRequest = false;
            List <HttpResponseMessage> responses = new List <HttpResponseMessage>();
            var sourceUser = new userForRegisterDTO()
            {
                Username       = "******",
                FirstName      = "sourceuser",
                LastName       = "sourceuser",
                Password       = "******",
                InitialBalance = 10
            };
            var destinationUser = new userForRegisterDTO()
            {
                Username       = "******",
                FirstName      = "destinationuser",
                LastName       = "destinationuser",
                Password       = "******",
                InitialBalance = 0
            };
            var sourceUserCreated = await CreateUser(sourceUser);

            var sourceUserID = await sourceUserCreated.Content.ReadAsAsync <Guid>();

            var destinationUserCreated = await CreateUser(destinationUser);

            var destinationUserID = await destinationUserCreated.Content.ReadAsAsync <Guid>();

            var transferMoney = new transferMoneyDTO()
            {
                SourceAccountID      = sourceUserID,
                DestinationAccountID = destinationUserID,
                Amount = 1
            };
            List <Task> tasks = new List <Task>();

            for (int i = 1; i <= 11; i++)
            {
                tasks.Add(Task.Run(() =>
                {
                    var response = TransferMoney(transferMoney);
                    responses.Add(response.Result);
                }));
            }
            Task.WaitAll(tasks.ToArray());
            foreach (HttpResponseMessage httpResponse in responses)
            {
                if (httpResponse.StatusCode == HttpStatusCode.BadRequest)
                {
                    isWithBadRequest = true;
                }
            }

            Assert.That(isWithBadRequest, Is.EqualTo(true));
        }
Esempio n. 2
0
        public async Task TransferMoney_TransferGreaterAmountThanYourBalance_ReturnsCannotTransferGreaterThanYourAmount()
        {
            //Arrange
            var expectedResult = "You cannot transfer money greater than your balance";
            var sourceUser     = new userForRegisterDTO()
            {
                Username       = "******",
                FirstName      = "sourceuser1",
                LastName       = "sourceuser1",
                Password       = "******",
                InitialBalance = 10
            };
            var destinationUser = new userForRegisterDTO()
            {
                Username       = "******",
                FirstName      = "destinationuser1",
                LastName       = "destinationuser1",
                Password       = "******",
                InitialBalance = 0
            };
            var sourceUserCreated = await CreateUser(sourceUser);

            var sourceUserID = await sourceUserCreated.Content.ReadAsAsync <Guid>();

            var destinationUserCreated = await CreateUser(destinationUser);

            var destinationUserID = await destinationUserCreated.Content.ReadAsAsync <Guid>();

            //await AuthenticateAsync();


            //Act
            var transferMoney = new transferMoneyDTO()
            {
                SourceAccountID      = sourceUserID,
                DestinationAccountID = destinationUserID,
                Amount = 11
            };
            var response = await TransferMoney(transferMoney);

            string responseMessage = response.Content.ReadAsStringAsync().Result;

            // Assert
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
            Assert.That(expectedResult, Is.EqualTo(responseMessage));
        }
Esempio n. 3
0
        public async Task <IActionResult> TransferMoney(transferMoneyDTO transfer)
        {
            if (transfer.SourceAccountID == transfer.DestinationAccountID)
            {
                return(BadRequest("You cannot transfer money to same account"));
            }
            if (!await _services.isAvailableToTransfer(transfer.SourceAccountID, transfer.Amount))
            {
                return(BadRequest("You cannot transfer money greater than your balance"));
            }

            var newTransaction = await _services.TransferMoney(transfer.SourceAccountID, transfer.DestinationAccountID, transfer.Amount);

            if (newTransaction == null || newTransaction.Id == Guid.Empty)
            {
                return(BadRequest("Unavailable to process your transaction"));
            }



            return(Ok(newTransaction.Id));
        }
Esempio n. 4
0
        public async Task TransferMoney_TransferToSameSourceAccountID_ReturnsCannotTransferToSameAccount()
        {
            //Arrange
            var expectedResult = "You cannot transfer money to same account";
            var sourceUser     = new userForRegisterDTO()
            {
                Username       = "******",
                FirstName      = "sourceuser2",
                LastName       = "sourceuser2",
                Password       = "******",
                InitialBalance = 10
            };

            var sourceUserCreated = await CreateUser(sourceUser);

            var sourceUserID = await sourceUserCreated.Content.ReadAsAsync <Guid>();

            //await AuthenticateAsync();


            //Act
            var transferMoney = new transferMoneyDTO()
            {
                SourceAccountID      = sourceUserID,
                DestinationAccountID = sourceUserID,
                Amount = 10
            };
            var result = await TransferMoney(transferMoney);

            string responseMessage = result.Content.ReadAsStringAsync().Result;

            // Assert
            //result.Should().BeOfType<BadRequestResult>();
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
            Assert.That(expectedResult, Is.EqualTo(responseMessage));
        }
 protected async Task <HttpResponseMessage> TransferMoney(transferMoneyDTO transferMoney)
 {
     return(await TestClient.PostAsJsonAsync(ApiRoutes.User.TransferMoney, transferMoney));
 }