public async Task ShouldSaveAndAbleToGetBackGivenNoValidationErrors()
        {
            var userModel = new UserModel()
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                Email           = $"{Guid.NewGuid()}@test.com.au",
                MonthlySalary   = 10000,
                MonthlyExpenses = 5000
            };

            StringContent httpContent = TestHelper.CreateHttpContentFromModel(userModel);

            //Create User
            var createResult = await client.PostAsync(ApiUrl.UserApiUrl, httpContent);

            Assert.AreEqual(HttpStatusCode.Created, createResult.StatusCode, "Invalid Http Status Code");

            //Get User
            var getByIdResult = await client.GetAsync($"{ApiUrl.UserApiUrl}/{userModel.Id}");

            Assert.AreEqual(200, (int)getByIdResult.StatusCode, "Failed at retrieve");

            var bodyContent = await getByIdResult.Content.ReadAsStringAsync();

            var retrivedUser = JsonConvert.DeserializeObject <UserModel>(bodyContent);

            Assert.AreEqual(userModel.Id, retrivedUser.Id);
            Assert.AreEqual(userModel.Name, retrivedUser.Name);
            Assert.AreEqual(userModel.Email, retrivedUser.Email);
        }
Beispiel #2
0
        public async Task ShouldReturnBadRequestWithValidErrorMessageGivenUserMonthlySavingLessThanThousand()
        {
            var userModel = new UserModel()
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                Email           = $"{Guid.NewGuid()}@test.com.au",
                MonthlySalary   = 5500,
                MonthlyExpenses = 5000
            };

            await CreateUser(userModel);

            //Try creating Account
            StringContent httpContent = TestHelper.CreateHttpContentFromModel
                                            (new AccountCreateRequestModel()
            {
                UserId = userModel.Id
            });

            var accountCreateResponse = await client.PostAsync(ApiUrl.AccountApiUrl, httpContent);

            Assert.AreEqual(HttpStatusCode.BadRequest, accountCreateResponse.StatusCode, "Invalid Http Status Code");

            var errorMessage = await TestHelper
                               .GetErrorMessageFromBadRequestContent(accountCreateResponse.Content);

            Assert.AreEqual("Monthly Salary - Monthly Expenses less than 1000", errorMessage);
        }
Beispiel #3
0
        public async Task ShouldSaveGivenNoValidationErrors()
        {
            var userModel = new UserModel()
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                Email           = $"{Guid.NewGuid()}@test.com.au",
                MonthlySalary   = 10000,
                MonthlyExpenses = 5000
            };

            await CreateUser(userModel);

            //Create Account
            StringContent httpContent = TestHelper.CreateHttpContentFromModel
                                            (new AccountCreateRequestModel()
            {
                UserId = userModel.Id
            });

            var accountCreateResponse = await client.PostAsync(ApiUrl.AccountApiUrl, httpContent);

            Assert.AreEqual(HttpStatusCode.Created, accountCreateResponse.StatusCode, "Account creation Failed");
            var accountListGetResponse = await client.GetAsync(ApiUrl.AccountApiUrl);

            Assert.AreEqual(HttpStatusCode.OK, accountListGetResponse.StatusCode);


            //Get Account List and search the created
            var getAccountReponseContent = await accountListGetResponse
                                           .Content
                                           .ReadAsStringAsync();

            var accountList = JsonConvert
                              .DeserializeObject <List <AccountModel> >(getAccountReponseContent);

            var isCreatedAccountFound = accountList
                                        .Count(acc => acc.Id == userModel.Id &&
                                               acc.User.Email == userModel.Email) > 0;


            Assert.IsTrue(isCreatedAccountFound, "Created account not found in the list");
        }
        public async Task ShouldReturnBadRequestWithValidErrorMessageGivenEmailAlreadyExists()
        {
            var userModel = new UserModel()
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                Email           = $"{Guid.NewGuid()}@test.com.au",
                MonthlySalary   = 10000,
                MonthlyExpenses = 5000
            };

            StringContent httpContentForFirstTry = TestHelper.CreateHttpContentFromModel(userModel);

            var createResponseForFirstTry = await client.PostAsync(ApiUrl.UserApiUrl, httpContentForFirstTry);

            Assert.AreEqual(HttpStatusCode.Created, createResponseForFirstTry.StatusCode, "Failed at create");

            var secondUser = new UserModel()
            {
                Id              = Guid.NewGuid(),
                Name            = "TestName 2",
                Email           = userModel.Email,
                MonthlySalary   = 10000,
                MonthlyExpenses = 5000
            };

            StringContent httpContentForSecondTry    = TestHelper.CreateHttpContentFromModel(secondUser);
            var           createResponseForSecondTry = await client.PostAsync(ApiUrl.UserApiUrl, httpContentForSecondTry);

            Assert.AreEqual(HttpStatusCode.BadRequest, createResponseForSecondTry.StatusCode, "Invalid Http Status Code");

            var errorMessage = await TestHelper
                               .GetErrorMessageFromBadRequestContent(createResponseForSecondTry.Content);

            Assert.AreEqual("Email already exists", errorMessage);
        }
Beispiel #5
0
 private async Task CreateUser(UserModel userModel)
 {
     StringContent httpContent = TestHelper.CreateHttpContentFromModel(userModel);
     await client.PostAsync(ApiUrl.UserApiUrl, httpContent);
 }