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 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 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 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 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 void ApplicationUserNoArgumentConstructor_Getter_Matches() { // Arrange // Act var user = new ApplicationUser { Id = "18a86ba8-defd-4075-b822-020d4cc877e2", Name = "Hans Gruber", Email = "*****@*****.**", UserName = "******", PasswordHash = "AxvfcNXm$c3968c55f3cb65f662ec29fec1b4dc5ef605e31de2bc0690f18de659609476e3", Todos = new HashSet <Todo> { MockTodos.Get(0), MockTodos.Get(1) } }; var todoIds = user.Todos.Select(y => y.Id).ToHashSet(); // Assert Assert.Equal("18a86ba8-defd-4075-b822-020d4cc877e2", user.Id); Assert.Equal("*****@*****.**", user.Email); Assert.Equal("*****@*****.**", user.UserName); Assert.Equal("Hans Gruber", user.Name); Assert.Equal("AxvfcNXm$c3968c55f3cb65f662ec29fec1b4dc5ef605e31de2bc0690f18de659609476e3", user.PasswordHash); Assert.Equal(2, user.Todos.Count); Assert.Equal(2, todoIds.Count); Assert.Contains(MockTodos.Get(0).Id, todoIds); Assert.Contains(MockTodos.Get(1).Id, todoIds); }
public async Task RemoveTodoByIdAsync_NonExistingUser_TodoNotFoundException() { // Arrange const string userId = "c54a85fa-ca7c-49d7-b830-6b07ea49cfa8"; var todoId = MockTodos.Get(3).Id; // Act // Assert await Assert.ThrowsAsync <TodoNotFoundException>(() => _service.RemoveTodoByIdAsync(todoId, userId)); }
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 void TodoDtoEntityConstructor_Getter_Matches() { // Arrange var entity = MockTodos.Get(18); // Act var todo = new TodoDto(entity); // Assert Assert.Equal(entity.Id, todo.Id); Assert.Equal(entity.Description, todo.Description); Assert.Equal(entity.Due, todo.Due); }
public async Task Delete_NoToken_Unauthorized() { // Arrange var todo = MockTodos.Get(0); var path = $"{Routes.TodoRoute}/{todo.Id}"; // Act var response = await _endSystems.Delete(path); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
/// <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 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 void TodoViewModelEdit_Getter_Matches() { // Arrange var viewModel = MockEditTodoViewModel.Get(0); // Act var todo = MockTodos.Get(3); todo.Edit(viewModel); // Assert Assert.Equal(viewModel.Id, todo.Id); Assert.Equal(viewModel.Due, todo.Due); Assert.Equal(viewModel.Description, todo.Description); }
/// <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 EditTodoAsync_NonExistingUser_TodoNotFoundException() { // Arrange const string userId = "c54a85fa-ca7c-49d7-b830-6b07ea49cfa8"; var todo = MockTodos.Get(3); var model = new EditTodoViewModel { Id = todo.Id, Due = todo.Due, Description = todo.Description }; // Act // Assert await Assert.ThrowsAsync <TodoNotFoundException>(() => _service.EditTodoAsync(model, userId)); }
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 void ApplicationUser_Setter_Modifies() { // Arrange var user = MockApplicationUsers.Get(0); // Act user.Name = "Snake Plissken"; user.Todos = new HashSet <Todo> { MockTodos.Get(5) }; var todos = user.Todos.SingleOrDefault(); // Assert Assert.Equal("Snake Plissken", user.Name); Assert.Single(user.Todos); Assert.NotNull(todos); Assert.Equal(MockTodos.Get(5).Id, todos.Id); }
public void Todo_Setter_Modifies() { // Arrange var todo = MockTodos.Get(7); // Act todo.Id = 44; todo.Due = new DateTime(2000, 3, 15, 18, 19, 20); todo.Description = "Bring up the wolf's head"; todo.Owner = MockApplicationUsers.Get(0); // Assert Assert.Equal(44, todo.Id); Assert.Equal(new DateTime(2000, 3, 15, 18, 19, 20), todo.Due); Assert.Equal("Bring up the wolf's head", todo.Description); Assert.Equal(MockApplicationUsers.Get(0).Id, todo.Owner.Id); Assert.Equal(MockApplicationUsers.Get(0).Name, todo.Owner.Name); Assert.Equal(MockApplicationUsers.Get(0).Email, todo.Owner.Email); Assert.Equal(MockApplicationUsers.Get(0).UserName, todo.Owner.UserName); Assert.Equal(MockApplicationUsers.Get(0).PasswordHash, todo.Owner.PasswordHash); }
public async Task GetAllTodos_UserHasTokenValidQuery_OkAndFilteredDtoArray() { // Arrange var user = MockApplicationUsers.Get(4); var todos = MockTodos .GetAll() .Where(w => w.Owner.Id == user.Id) .OrderBy(w => w.Due) .ToArray(); Assert.True(todos.Length > 1); var filterDate = todos[0].Due.Date; Assert.NotEqual(todos[0].Due.Date, todos[1].Due.Date); var filteredTodos = MockTodos .GetAll() .Where(w => w.Owner.Id == user.Id && w.Due.Date == filterDate) .OrderBy(w => w.Due) .ToArray(); Assert.NotEqual(todos.Length, filteredTodos.Length); var path = $"{Routes.TodoRoute}?year={filterDate.Year}&month={filterDate.Month}&day={filterDate.Day}"; 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); Assert.NotEqual(todos.Length, dtos.Length); CheckOrderAndEqual(filteredTodos, dtos); // Tear down _endSystems.Dispose(); }
public async Task Delete_NonExistingToken_NotFound() { // Arrange var user = MockApplicationUsers.Get(7); var token = await GetToken(user); const int nonExistingTokenId = 0; Assert.DoesNotContain(nonExistingTokenId, MockTodos.GetAll().Select(w => w.Id).ToHashSet()); var path = $"{Routes.TodoRoute}/{nonExistingTokenId}"; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Delete(path); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public async Task CreateTodoAsync_ExistingUser_IdOfNewlyCreatedTodo() { // Arrange var userId = MockApplicationUsers.Get(4).Id; var model = new CreateTodoViewModel { Description = "Get a cone from Milkcraft", Due = new DateTime(2019, 5, 1, 12, 0, 0) }; var expectedId = MockTodos.FirstId + MockTodos.GetAll().Count(); // Act var id = await _service.CreateTodoAsync(model, userId); var todo = _ctx.Todo.SingleOrDefault(z => z.Id == expectedId && z.Owner.Id == userId); // Assert Assert.Equal(expectedId, id); Assert.NotNull(todo); Assert.Equal("Get a cone from Milkcraft", todo.Description); Assert.Equal(new DateTime(2019, 5, 1, 12, 0, 0), todo.Due); }
public async Task Delete_TokenNotOwnedByUser_NotFound() { // Arrange var user = MockApplicationUsers.Get(7); var token = await GetToken(user); var todoNotOwnedByUser = MockTodos .GetAll() .FirstOrDefault(w => w.Owner.Id != user.Id); Assert.NotNull(todoNotOwnedByUser); var path = $"{Routes.TodoRoute}/{todoNotOwnedByUser.Id}"; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Delete(path); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }