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); }
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); }
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); }
private async Task CreateUser(UserModel userModel) { StringContent httpContent = TestHelper.CreateHttpContentFromModel(userModel); await client.PostAsync(ApiUrl.UserApiUrl, httpContent); }