public async Task Edit_NonExistingTodo_NotFound() { // Arrange var user = MockApplicationUsers.Get(5); var token = await GetToken(user); var model = new EditTodoViewModel { Id = 0, Due = DateTime.Now, Description = "Intergalactic, planetary, planetary, intergalactic" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); const string path = Routes.TodoRoute; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Put(path, content); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public async Task GetTodo_UserDoesNotOwnTodo_NotFound() { // Arrange var user = MockApplicationUsers.Get(3); Todo todo = null; for (var i = 0; i < 20; i++) { todo = MockTodos.Get(i); if (todo.Owner.Id != user.Id) { break; } } Assert.NotNull(todo); var path = $"{Routes.TodoRoute}/{todo.Id}"; var token = await GetToken(user); _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Get(path); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public async Task Edit_ExistingTodoButNotOwnedByTokenOwner_NotFound() { // Arrange var user = MockApplicationUsers.Get(5); var todoToEdit = MockTodos.GetAll().FirstOrDefault(z => z.Owner.Id != user.Id); Assert.NotNull(todoToEdit); var token = await GetToken(user); var model = new EditTodoViewModel { Id = todoToEdit.Id, Due = DateTime.Now, Description = "Listen all of y'all it's a sabotage" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); var path = Routes.TodoRoute; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Put(path, content); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public async Task Create_UserDoesExist_CreatedAtRoute() { // Arrange var user = MockApplicationUsers.Get(8); var token = await GetToken(user); const string createPath = Routes.TodoRoute; _endSystems.SetBearerToken(token); var model = new CreateTodoViewModel { Description = "I am your doctor, when you need, want some coke? Have some weed", Due = new DateTime(2000, 1, 1) }; var body = JsonStringBuilder.CreateTodoJsonBody(model.Description, model.Due.ToString()); var content = new StringContent(body); // Act var createResponse = await _endSystems.Post(createPath, content); var location = createResponse.Headers.Location.ToString(); var getResponse = await _endSystems.Get(location); var dto = JsonStringSerializer.GetTodoDto(getResponse.Body); // Assert Assert.Equal(HttpStatusCode.Created, createResponse.Code); Assert.Equal(HttpStatusCode.OK, getResponse.Code); Assert.Equal(model.Description, dto.Description); Assert.Equal(model.Due, dto.Due); // Tear down _endSystems.Dispose(); }
public async Task Delete_TokenOwnedByUser_NoContent() { // Arrange var user = MockApplicationUsers.Get(5); var token = await GetToken(user); var todoOwnedByUser = MockTodos .GetAll() .FirstOrDefault(z => z.Owner.Id == user.Id); Assert.NotNull(todoOwnedByUser); _endSystems.SetBearerToken(token); var path = $"{Routes.TodoRoute}/{todoOwnedByUser.Id}"; // Act var getResponse1 = await _endSystems.Get(path); var deleteResponse = await _endSystems.Delete(path); var getResponse2 = await _endSystems.Get(path); // Assert Assert.Equal(HttpStatusCode.OK, getResponse1.Code); Assert.Equal(HttpStatusCode.NoContent, deleteResponse.Code); Assert.Equal(HttpStatusCode.NotFound, getResponse2.Code); // Tear down _endSystems.Dispose(); }
public async Task GetTodo_UserOwnsTodoAndBothExist_OkWithDto() { // Arrange var todo = MockTodos.Get(14); var user = MockApplicationUsers .GetAll() .SingleOrDefault(w => w.Id == todo.Owner.Id); var path = $"{Routes.TodoRoute}/{todo.Id}"; var token = await GetToken(user); _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Get(path); var dto = JsonStringSerializer.GetTodoDto(response.Body); // Assert Assert.Equal(HttpStatusCode.OK, response.Code); Assert.Equal(todo.Id, dto.Id); Assert.Equal(todo.Description, dto.Description); Assert.Equal(todo.Due, dto.Due); // Tear down _endSystems.Dispose(); }
public async Task GetAllTodos_UserHasTokenNoQuery_OkAndDtoArray() { // Arrange var user = MockApplicationUsers.Get(4); var todos = MockTodos .GetAll() .Where(w => w.Owner.Id == user.Id) .OrderBy(w => w.Due) .ToArray(); var path = Routes.TodoRoute; var token = await GetToken(user); _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Get(path); var dtos = JsonStringSerializer.GetListOfTodoto(response.Body); // Assert Assert.Equal(HttpStatusCode.OK, response.Code); CheckOrderAndEqual(todos, dtos); // Tear down _endSystems.Dispose(); }
public async Task GetAllTodos_ListOfTodos_Ok() { // Arrange var service = new MockTodoService { MGetAllTodosOrderedByDueAsync = (year, month, day, userId) => new[] { MockTodoDto.Get(0), MockTodoDto.Get(1) } }; var controller = new TodoController(service); MockClaims.AddUserIdClaim(controller, MockApplicationUsers.Get(5).Id); // Act var result = await controller.GetAllTodos() as OkObjectResult; var list = result?.Value as TodoDto[]; // Assert Assert.NotNull(result); Assert.Equal(200, result.StatusCode); Assert.NotNull(list); Assert.Equal(2, list.Count()); Assert.Equal(MockTodoDto.Get(0).Id, list[0].Id); Assert.Equal(MockTodoDto.Get(0).Due, list[0].Due); Assert.Equal(MockTodoDto.Get(0).Description, list[0].Description); Assert.Equal(MockTodoDto.Get(1).Id, list[1].Id); Assert.Equal(MockTodoDto.Get(1).Due, list[1].Due); Assert.Equal(MockTodoDto.Get(1).Description, list[1].Description); }
public async Task GetTodo_Existing_OkWithDto() { // Arrange var service = new MockTodoService { MGetTodoByIdAsync = (todoId, userId) => MockTodoDto.Get(0) }; var controller = new TodoController(service); MockClaims.AddUserIdClaim(controller, MockApplicationUsers.Get(5).Id); const int tId = 10101; // Act var result = await controller.GetTodo(tId) as OkObjectResult; var dto = result?.Value as TodoDto; // Assert Assert.NotNull(result); Assert.Equal(200, result.StatusCode); Assert.NotNull(dto); Assert.Equal(MockTodoDto.Get(0).Id, dto.Id); Assert.Equal(MockTodoDto.Get(0).Due, dto.Due); Assert.Equal(MockTodoDto.Get(0).Description, dto.Description); }
public async Task GetAllUsersOrderedByNameAsync_AllInMockAndInOrder() { // Arrange var allIds = MockApplicationUsers.GetAll().Select(w => w.Id).ToHashSet(); // Act var allUsers = (await _service.GetAllUsersOrderedByNameAsync()).ToArray(); var dtoIds = allUsers.Select(w => w.Id).ToHashSet(); // Assert Assert.Equal(allIds.Count, dtoIds.Count); foreach (var id in dtoIds) { Assert.Contains(id, allIds); } var first = true; ApplicationUserDto last = null; foreach (var dto in allUsers) { if (first) { first = false; } else { Assert.True(string.Compare(dto.Name, last.Name, StringComparison.Ordinal) >= 0); } last = dto; } }
public async Task GetUserById_ExistingUser_Ok() { // Arrange var adminToRequest = MockApplicationUsers.Get(0); var userToFind = MockApplicationUsers.Get(1); var expectedDto = new ApplicationUserDto(userToFind); var path = $"{Routes.UserRoute}/{userToFind.Id}"; var token = await GetToken(adminToRequest); _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Get(path); var dto = JsonStringSerializer.GetApplicationUserDto(response.Body); // Assert Assert.Equal(HttpStatusCode.OK, response.Code); Assert.Equal(expectedDto.Id, dto.Id); Assert.Equal(expectedDto.Email, dto.Email); Assert.Equal(expectedDto.Name, dto.Name); // Tear down _endSystems.Dispose(); }
public async Task RemoveTodoByIdAsync_NonExistingTodo_TodoNotFoundException() { // Arrange var userId = MockApplicationUsers.Get(0).Id; const int todoId = 0; // Act // Assert await Assert.ThrowsAsync <TodoNotFoundException>(() => _service.RemoveTodoByIdAsync(todoId, userId)); }
public async Task GetTodoByIdAsync_NonExistingTodo_TodoNotFoundException() { // Arrange const int nonExistingId = 0; var userId = MockApplicationUsers.Get(4).Id; // Act // Assert await Assert.ThrowsAsync <TodoNotFoundException>( () => _service.GetTodoByIdAsync(nonExistingId, userId)); }
public async Task GetAllTodosOrderedByDueAsync_InvalidFilterDay_EmptyList() { // Arrange var owner = MockApplicationUsers.Get(9); // Act var all = await _service.GetAllTodosOrderedByDueAsync("2000", "4", "A", owner.Id); // Assert Assert.Empty(all); }
public async Task GetTodoByIdAsync_UserDoesNotOwnTodo_TodoNotFoundException() { // Arrange var todo = MockTodos.Get(2); var user = MockApplicationUsers.GetAll().FirstOrDefault(w => w.Id != todo.Owner.Id); // Act // Assert Assert.NotNull(user); await Assert.ThrowsAsync <TodoNotFoundException>( () => _service.GetTodoByIdAsync(todo.Id, user.Id)); }
public async Task Login_ExistingUserWrongPassword_LoginFailException() { // Arrange var credentials = new LoginViewModel { Email = MockApplicationUsers.Get(6).Email, Password = "******" }; // Act // Assert await Assert.ThrowsAsync <LoginFailException>(() => _service.Login(credentials)); }
public void ApplicationUserDtoEntityConstructor_Getter_Matches() { // Arrange var entity = MockApplicationUsers.Get(8); // Act var dto = new ApplicationUserDto(entity); // Assert Assert.Equal(entity.Id, dto.Id); Assert.Equal(entity.Email, dto.Email); Assert.Equal(entity.Name, dto.Name); }
public async Task GetUserByIdAsync_ExistingUser_MatchingUserDto() { // Arrange var userToFind = MockApplicationUsers.Get(9); var id = userToFind.Id; // Act var dto = await _service.GetUserByIdAsync(id); // Assert Assert.Equal(userToFind.Id, dto.Id); Assert.Equal(userToFind.Email, dto.Email); Assert.Equal(userToFind.Name, dto.Name); }
public async Task Register_ExistingUser_RegisterFailException() { // Arrange var oldUser = MockApplicationUsers.Get(3); var credentials = new RegisterViewModel { Name = oldUser.Name, Email = oldUser.Email, Password = MockApplicationUsers.UniversalPassword }; // Act // Assert await Assert.ThrowsAsync <RegisterFailException>(() => _service.Register(credentials)); }
/// <summary> /// Fill the in memory database with our mock data. /// </summary> private void PopulateDatabaseWithMockData() { Roles.Add(MockRoles.Admin); Roles.Add(MockRoles.User); var allUsers = MockApplicationUsers.GetAll().ToArray(); Users.AddRange(allUsers); SaveChanges(); foreach (var user in allUsers) { UserRoles.Add(MockUserRoles.GetUserRoleForUser(user.Id)); } Todo.AddRange(MockTodos.GetAll()); SaveChanges(); }
public async Task EditTodoAsync_NonExistingTodo_TodoNotFoundException() { // Arrange var userId = MockApplicationUsers.Get(0).Id; var model = new EditTodoViewModel { Id = 0, Due = DateTime.Now, Description = "Take to the sewers, in a clown costume" }; // Act // Assert await Assert.ThrowsAsync <TodoNotFoundException>(() => _service.EditTodoAsync(model, userId)); }
public async Task GetTodoByIdAsync_UserOwnsTodo_TodoDto() { // Arrange var todo = MockTodos.Get(5); var user = MockApplicationUsers.GetAll().SingleOrDefault(w => w.Id == todo.Owner.Id); // Act Assert.NotNull(user); var dto = await _service.GetTodoByIdAsync(todo.Id, user.Id); // Assert Assert.Equal(todo.Id, dto.Id); Assert.Equal(todo.Description, dto.Description); Assert.Equal(todo.Due, dto.Due); }
public async Task GetUserById_NoToken_Unauthorized() { // Arrange var userToFind = MockApplicationUsers.Get(4); var path = $"{Routes.UserRoute}/{userToFind.Id}"; // Act var response = await _endSystems.Get(path); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public async Task Login_ExistingUserCorrectPassword_JwtToken() { // Arrange var user = MockApplicationUsers.Get(4); var credentials = new LoginViewModel() { Email = user.Email, Password = MockApplicationUsers.UniversalPassword }; // Act var token = await _service.Login(credentials); // Assert CheckToken(token, user); }
/// <summary> /// Fills the database with mock data. /// </summary> /// <param name="db">The database to add to</param> private static void FillDatabase(AppDataContext db) { db.Roles.Add(MockRoles.Admin); db.Roles.Add(MockRoles.User); var allUsers = MockApplicationUsers.GetAll().ToArray(); db.Users.AddRange(allUsers); db.SaveChanges(); foreach (var user in allUsers) { db.UserRoles.Add(MockUserRoles.GetUserRoleForUser(user.Id)); } db.Todo.AddRange(MockTodos.GetAll()); db.SaveChanges(); }
public async Task GetUserById_NonExistingUser_UserNotFoundException() { // Arrange var service = new MockUserService { MGetUserByIdAsync = (userId) => throw new UserNotFoundException() }; var controller = new UserController(service); // Act var result = await controller.GetUserById(MockApplicationUsers.Get(1).Id) as NotFoundResult; // Assert Assert.NotNull(result); Assert.Equal(404, result.StatusCode); }
public async Task GetAllTodosOrderedByDueAsync_ValidFilter_OnlyWithGivenDates() { // Arrange var owner = MockApplicationUsers.Get(9); // Act var all = await _service.GetAllTodosOrderedByDueAsync("2019", "11", "5", owner.Id); // Assert foreach (var dto in all) { Assert.Equal(2019, dto.Due.Year); Assert.Equal(11, dto.Due.Month); Assert.Equal(5, dto.Due.Day); } }
public async Task GetAllTodosOrderedByDueAsync_MissingDayInFilter_AllDtosForOwner() { // Arrange var owner = MockApplicationUsers.Get(9); var todosOwnedByOwner = _ctx.Todo.Where(w => w.Owner.Id == owner.Id).Select(z => z.Id).ToHashSet(); // Act var all = (await _service.GetAllTodosOrderedByDueAsync("1999", "11", null, owner.Id)).ToArray(); // Assert Assert.Equal(todosOwnedByOwner.Count, all.Length); foreach (var dto in all) { Assert.Contains(dto.Id, todosOwnedByOwner); } }
public async Task Edit_ExistingTodoOwnedByTokenOwner_Ok() { // Arrange var user = MockApplicationUsers.Get(2); var todoToEdit = MockTodos.GetAll().LastOrDefault(z => z.Owner.Id == user.Id); Assert.NotNull(todoToEdit); var token = await GetToken(user); var model = new EditTodoViewModel { Id = todoToEdit.Id, Due = new DateTime(2014, 12, 12, 10, 11, 12), Description = "It's like a jungle sometimes - It makes me wonder how I keep from goin' under" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); _endSystems.SetBearerToken(token); var getPath = $"{Routes.TodoRoute}/{model.Id}"; var putPath = Routes.TodoRoute; // Act var getResponse1 = await _endSystems.Get(getPath); var editResponse = await _endSystems.Put(putPath, content); var getResponse2 = await _endSystems.Get(getPath); var dtoBefore = JsonStringSerializer.GetTodoDto(getResponse1.Body); var dtoAfter = JsonStringSerializer.GetTodoDto(getResponse2.Body); // Assert Assert.Equal(HttpStatusCode.OK, getResponse1.Code); Assert.Equal(HttpStatusCode.OK, editResponse.Code); Assert.Equal(HttpStatusCode.OK, getResponse2.Code); Assert.Equal(todoToEdit.Id, dtoBefore.Id); Assert.Equal(todoToEdit.Due, dtoBefore.Due); Assert.Equal(todoToEdit.Description, dtoBefore.Description); Assert.Equal(model.Id, dtoAfter.Id); Assert.Equal(model.Due, dtoAfter.Due); Assert.Equal(model.Description, dtoAfter.Description); // Tear down _endSystems.Dispose(); }
public async Task RemoveTodoByIdAsync_ValidUserAndTodo_Removed() { // Arrange var user = MockApplicationUsers.Get(4); var todo = _ctx.Todo.FirstOrDefault(z => z.Owner.Id == user.Id); var ownedBefore = _ctx.Todo.Count(z => z.Owner.Id == user.Id); var foundBefore = _ctx.Todo.SingleOrDefault(z => z.Id == todo.Id) != null; // Act Assert.NotNull(todo); await _service.RemoveTodoByIdAsync(todo.Id, user.Id); // Assert Assert.True(foundBefore); Assert.Null(_ctx.Todo.SingleOrDefault(z => z.Id == todo.Id)); Assert.Equal(ownedBefore - 1, _ctx.Todo.Count(z => z.Owner.Id == user.Id)); }