コード例 #1
0
        public async Task Create_Should_Add_TodoItem_In_Database()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var user = await context.Users.Where(u => u.Email == "*****@*****.**").FirstOrDefaultAsync();

            var todoListFromDatabase = Builder <TodoList> .CreateNew().With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = user.Id).Build();

            context.TodoLists.Add(todoListFromDatabase);

            context.SaveChanges();

            var createTodoItemModel = Builder <CreateTodoItemModel> .CreateNew().With(cti => cti.TodoListId = todoListFromDatabase.Id).Build();

            // Act
            var apiResponse = await _client.PostAsync("/api/todoItems", new JsonContent(createTodoItemModel));

            // Assert
            var response             = JsonConvert.DeserializeObject <ApiResult <CreateTodoItemResponseModel> >(await apiResponse.Content.ReadAsStringAsync());
            var todoItemFromDatabase = await context.TodoItems.Where(ti => ti.Id == response.Result.Id).FirstOrDefaultAsync();

            CheckResponse.Succeded(response, 201);
            todoItemFromDatabase.Should().NotBeNull();
            todoItemFromDatabase.Title.Should().Be(createTodoItemModel.Title);
            todoItemFromDatabase.List.Id.Should().Be(todoListFromDatabase.Id);
        }
コード例 #2
0
        public async Task ChangePassword_Should_Update_User_Password_If_OldPassword_And_NewPassword_Are_Ok()
        {
            // Arrange
            var user = Builder <ApplicationUser> .CreateNew()
                       .With(u => u.UserName       = "******")
                       .With(u => u.Email          = "*****@*****.**")
                       .With(u => u.EmailConfirmed = true)
                       .Build();

            var userManager = _host.Services.GetRequiredService <UserManager <ApplicationUser> >();

            await userManager.CreateAsync(user, "Password.1!");

            var changePasswordModel = Builder <ChangePasswordModel> .CreateNew()
                                      .With(cu => cu.OldPassword = "******")
                                      .With(cu => cu.NewPassword = "******")
                                      .Build();

            // Act
            var apiResponse = await _client.PutAsync($"/api/users/{user.Id}/changePassword", new JsonContent(changePasswordModel));

            // Assert
            apiResponse.StatusCode.Should().Be(HttpStatusCode.OK);
            var response = JsonConvert.DeserializeObject <ApiResult <BaseResponseModel> >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response);
            response.Result.Id.Should().Be(user.Id);
        }
コード例 #3
0
        public async Task ConfirmEmail_Should_Update_User_Status()
        {
            // Arrange
            var user = Builder <ApplicationUser> .CreateNew()
                       .With(u => u.UserName = "******")
                       .With(u => u.Email    = "*****@*****.**")
                       .Build();

            var context = (await GetNewHostAsync()).Services.GetRequiredService <DatabaseContext>();

            var userManager = _host.Services.GetRequiredService <UserManager <ApplicationUser> >();

            await userManager.CreateAsync(user, "Password.1!");

            var token = await userManager.GenerateEmailConfirmationTokenAsync(user);

            var confirmEmailModel = Builder <ConfirmEmailModel> .CreateNew()
                                    .With(ce => ce.UserId = user.Id)
                                    .With(ce => ce.Token  = token)
                                    .Build();

            // Act
            var apiResponse = await _client.PostAsync("/api/users/confirmEmail", new JsonContent(confirmEmailModel));

            // Assert
            var response         = JsonConvert.DeserializeObject <ApiResult <ConfirmEmailResponseModel> >(await apiResponse.Content.ReadAsStringAsync());
            var userFromDatabase = await context.Users.FirstOrDefaultAsync(u => u.Id == user.Id);

            CheckResponse.Succeded(response);
            response.Result.Confirmed.Should().BeTrue();
            userFromDatabase.EmailConfirmed.Should().BeTrue();
        }
コード例 #4
0
        public async Task Update_Should_Update_Todo_Item_From_Database()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var user = await context.Users.Where(u => u.Email == "*****@*****.**").FirstOrDefaultAsync();

            var todoListFromDatabase = Builder <TodoList> .CreateNew().With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = user.Id).Build();

            var todoItemFromDatabase = Builder <TodoItem> .CreateNew().With(ti => ti.Id = Guid.NewGuid()).With(ti => ti.CreatedBy = user.Id).Build();

            todoListFromDatabase.Items.Add(todoItemFromDatabase);

            context.TodoLists.Add(todoListFromDatabase);

            context.SaveChanges();

            var updateTodoItemModel = Builder <UpdateTodoItemModel> .CreateNew()
                                      .With(cti => cti.TodoListId = todoListFromDatabase.Id)
                                      .With(cti => cti.Title      = "UpdateTodoItemTitle")
                                      .With(cti => cti.Body       = "UpdateTodoItemBody").Build();

            // Act
            var apiResponse = await _client.PutAsync($"/api/todoItems/{todoItemFromDatabase.Id}", new JsonContent(updateTodoItemModel));

            // Assert
            context = (await GetNewHostAsync()).Services.GetRequiredService <DatabaseContext>();
            var response = JsonConvert.DeserializeObject <ApiResult <CreateTodoItemResponseModel> >(await apiResponse.Content.ReadAsStringAsync());
            var modifiedTodoItemFromDatabase = await context.TodoItems.Where(ti => ti.Id == response.Result.Id).FirstOrDefaultAsync();

            CheckResponse.Succeded(response);
            modifiedTodoItemFromDatabase.Should().NotBeNull();
            modifiedTodoItemFromDatabase.Title.Should().Be(updateTodoItemModel.Title);
            modifiedTodoItemFromDatabase.Body.Should().Be(updateTodoItemModel.Body);
        }
コード例 #5
0
        public async Task Delete_Should_Delete_Todo_Item_From_Database()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var user = await context.Users.Where(u => u.Email == "*****@*****.**").FirstOrDefaultAsync();

            var todoItemFromDatabase = Builder <TodoItem> .CreateNew().With(ti => ti.Id = Guid.NewGuid()).With(ti => ti.CreatedBy = user.Id).Build();

            var todoListFromDatabase = Builder <TodoList> .CreateNew().With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = user.Id).Build();

            todoListFromDatabase.Items.Add(todoItemFromDatabase);

            context.TodoLists.Add(todoListFromDatabase);

            context.SaveChanges();

            // Act
            var apiResponse = await _client.DeleteAsync($"/api/todoItems/{todoItemFromDatabase.Id}");

            // Assert
            var response = JsonConvert.DeserializeObject <ApiResult <BaseResponseModel> >(await apiResponse.Content.ReadAsStringAsync());
            var deletedTodoListFromDatabase = await context.TodoItems.Where(ti => ti.Id == response.Result.Id).FirstOrDefaultAsync();

            CheckResponse.Succeded(response);
            deletedTodoListFromDatabase.Should().BeNull();
        }
コード例 #6
0
        public async Task Get_Todo_Lists_Should_Return_All_Todo_Lists_For_Specified_User_From_Database()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var user = await context.Users.Where(u => u.Email == "*****@*****.**").FirstOrDefaultAsync();

            context.TodoLists.RemoveRange(context.TodoLists.ToList());

            var todoLists = Builder <TodoList> .CreateListOfSize(10).All().With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = user.Id).Build();

            var todoListsNotBelongToTheUser = Builder <TodoList> .CreateListOfSize(10).All()
                                              .With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = Guid.NewGuid().ToString()).Build();

            context.TodoLists.AddRange(todoLists);
            context.TodoLists.AddRange(todoListsNotBelongToTheUser);

            context.SaveChanges();

            // Act
            var apiResponse = await _client.GetAsync($"/api/todoLists");

            // Assert
            var response = JsonConvert.DeserializeObject <ApiResult <IEnumerable <TodoListResponseModel> > >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response);
            response.Result.Should().HaveCount(10);
        }
コード例 #7
0
        public async Task Login_Should_Return_User_Informations_And_Token()
        {
            // Arrange

            // Act
            var apiResponse = await _client.GetAsync("/api/WeatherForecast");

            // Assert
            var response = JsonConvert.DeserializeObject <ApiResult <IEnumerable <WeatherForecastResponseModel> > >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response);
            response.Result.Should().HaveCount(5);
        }
コード例 #8
0
        public async Task Login_Should_Return_User_Informations_And_Token()
        {
            // Arrange
            var loginUserModel = Builder <LoginUserModel> .CreateNew()
                                 .With(cu => cu.Username = "******")
                                 .With(cu => cu.Password = "******")
                                 .Build();

            // Act
            var apiResponse = await _client.PostAsync("/api/users/authenticate", new JsonContent(loginUserModel));

            // Assert
            var response = JsonConvert.DeserializeObject <ApiResult <LoginResponseModel> >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response);
            response.Result.Username.Should().Be("nuyonu");
            response.Result.Email.Should().Be("*****@*****.**");
            response.Result.Token.Should().NotBeNullOrEmpty();
        }
コード例 #9
0
        public async Task Create_Should_Add_TodoList_In_Database()
        {
            // Arrange
            var host = _host;

            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var createTodoListModel = Builder <CreateTodoListModel> .CreateNew().Build();

            // Act
            var apiResponse = await _client.PostAsync("/api/todoLists", new JsonContent(createTodoListModel));

            // Assert
            var response             = JsonConvert.DeserializeObject <ApiResult <CreateTodoListResponseModel> >(await apiResponse.Content.ReadAsStringAsync());
            var todoListFromDatabase = await context.TodoLists.Where(u => u.Id == response.Result.Id).FirstOrDefaultAsync();

            CheckResponse.Succeded(response, 201);
            todoListFromDatabase.Should().NotBeNull();
            todoListFromDatabase.Title.Should().Be(createTodoListModel.Title);
        }
コード例 #10
0
        public async Task Create_User_Should_Add_User_To_Database()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var createModel = Builder <CreateUserModel> .CreateNew()
                              .With(cu => cu.Email    = "*****@*****.**")
                              .With(cu => cu.Username = "******")
                              .With(cu => cu.Password = "******")
                              .Build();

            // Act
            var apiResponse = await _client.PostAsync("/api/users", new JsonContent(createModel));

            // Assert
            apiResponse.StatusCode.Should().Be(HttpStatusCode.OK);
            var response = JsonConvert.DeserializeObject <ApiResult <CreateUserResponseModel> >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response, 201);
            context.Users.Should().Contain(u => u.Id == response.Result.Id.ToString());
        }
コード例 #11
0
        public async Task GetAllByListId_Should_Return_All_Todo_Items_From_Specific_List()
        {
            // Arrange
            var context = _host.Services.GetRequiredService <DatabaseContext>();

            var user = await context.Users.Where(u => u.Email == "*****@*****.**").FirstOrDefaultAsync();

            var todoListFromDatabase = Builder <TodoList> .CreateNew().With(tl => tl.Id = Guid.NewGuid()).With(tl => tl.CreatedBy = user.Id).Build();

            todoListFromDatabase.Items.AddRange(Builder <TodoItem> .CreateListOfSize(25).All().With(ti => ti.Id = Guid.NewGuid()).Build());

            var todoListFromAnotherUsers = Builder <TodoList> .CreateListOfSize(10).All()
                                           .With(tl => tl.Id        = Guid.NewGuid())
                                           .With(tl => tl.CreatedBy = Guid.NewGuid().ToString())
                                           .Build();

            foreach (var todoList in todoListFromAnotherUsers)
            {
                todoList.Items.AddRange(Builder <TodoItem> .CreateListOfSize(10).All().With(ti => ti.Id = Guid.NewGuid()).Build());
            }

            context.TodoLists.Add(todoListFromDatabase);
            context.TodoLists.AddRange(todoListFromAnotherUsers);

            context.SaveChanges();

            // Act
            var apiResponse = await _client.GetAsync($"/api/todoLists/{todoListFromDatabase.Id}/todoItems");

            // Assert
            var response = JsonConvert.DeserializeObject <ApiResult <IEnumerable <TodoItemResponseModel> > >(await apiResponse.Content.ReadAsStringAsync());

            CheckResponse.Succeded(response);
            response.Result.Should().NotBeNullOrEmpty();
            response.Result.Should().HaveCount(25);
            response.Result.Should().BeEquivalentTo(todoListFromDatabase.Items, options => options.Including(tl => tl.Id));
        }