public async Task SignUp_DuplicateEmail_Error()
        {
            // Arrange
            var randomEmail = TestUserFactory.GenerateRandomEmail();

            RegisterRequest request = new RegisterRequest
            {
                Email     = randomEmail,
                FirstName = TestUserFactory.FirstName,
                LastName  = TestUserFactory.LastName,
                Password  = TestUserFactory.TestPassword
            };

            // Act
            await HttpClient.PostAsync("/api/Account/SignUp", request);

            var responseMessage = await HttpClient.PostAsync("/api/Account/SignUp", request);

            // Assert
            Assert.False(responseMessage.IsSuccessStatusCode);
            ErrorResponse errorResponse = await responseMessage.ReadContentAsync <ErrorResponse>();

            Assert.Single(errorResponse.Errors);

            Assert.Equal("DuplicateUserName", errorResponse.Errors.First().Code);
            Assert.Contains(randomEmail, errorResponse.Errors.First().Description);
        }
        public async Task SignUp_CorrectInput_RegistersUser()
        {
            // Arrange
            var randomEmail = TestUserFactory.GenerateRandomEmail();

            RegisterRequest request = new RegisterRequest
            {
                Email     = randomEmail,
                FirstName = TestUserFactory.FirstName,
                LastName  = TestUserFactory.LastName,
                Password  = TestUserFactory.TestPassword
            };

            // Act
            var responseMessage = await HttpClient.PostAsync("/api/Account/SignUp", request);

            // Assert
            Assert.True(responseMessage.IsSuccessStatusCode);
            Assert.Contains(responseMessage.Headers, header => header.Key == "Set-Cookie" && header.Value.First().StartsWith(".AspNetCore.Identity.Application"));

            var profileResponse = await responseMessage.ReadContentAsync <ProfileResponse>();

            Assert.Equal(randomEmail, profileResponse.UserName);
            Assert.Equal(TestUserFactory.FirstName, profileResponse.FirstName);
            Assert.Equal(TestUserFactory.LastName, profileResponse.LastName);

            var user = await TestServerFixture.UserManager.FindByEmailAsync(randomEmail);

            Assert.Equal(TestUserFactory.FirstName, user.FirstName);
            Assert.Equal(TestUserFactory.LastName, user.LastName);
            var signInResult = await TestServerFixture.SignInManager.CheckPasswordSignInAsync(user, TestUserFactory.TestPassword, false);

            Assert.True(signInResult.Succeeded);
        }
예제 #3
0
        public async Task <ApplicationUser> CreateTestUserAsync(float preferredHoursPerDay = 0, string role = RoleNames.User)
        {
            var user = TestUserFactory.CreateTestUser(preferredHoursPerDay);

            var identityResult = await TestServerFixture.UserManager.CreateAsync(user, TestUserFactory.TestPassword).ConfigureAwait(false);

            Assert.True(identityResult.Succeeded);

            identityResult = await TestServerFixture.UserManager.AddToRoleAsync(user, role);

            Assert.True(identityResult.Succeeded);

            return(user);
        }
        private static async Task <ApplicationUser> CreateTestUserAsync(ApplicationDbContext dbContext, string roleName = RoleNames.User)
        {
            var user = TestUserFactory.CreateTestUser();

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var role = await GetOrCreateRoleAsync(dbContext, roleName);

            dbContext.UserRoles.Add(new IdentityUserRole <string>()
            {
                UserId = user.Id, RoleId = role.Id
            });
            await dbContext.SaveChangesAsync();

            return(user);
        }
        public async Task SignUp_TooSimplePassword_Error()
        {
            // Arrange
            var randomEmail = TestUserFactory.GenerateRandomEmail();

            RegisterRequest request = new RegisterRequest
            {
                Email     = randomEmail,
                FirstName = TestUserFactory.FirstName,
                LastName  = TestUserFactory.LastName,
                Password  = "******"
            };

            // Act
            var responseMessage = await HttpClient.PostAsync("/api/Account/SignUp", request);

            // Assert
            Assert.False(responseMessage.IsSuccessStatusCode);
            ErrorResponse errorResponse = await responseMessage.ReadContentAsync <ErrorResponse>();

            Assert.Contains(errorResponse.Errors, err => err.Code == "PasswordTooShort");
        }