Exemple #1
0
        public async Task WhenCredentialsInvalid_Throws()
        {
            var uniqueData  = UNIQUE_PREFIX + "CredInv_Throws";
            var newPassword = uniqueData + "New";

            using var app = _appFactory.Create();
            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var dbContext         = app.Services.GetRequiredService <CofoundryDbContext>();

            var addUserCommand = app.TestData.Users().CreateAddCommand(uniqueData);
            await contentRepository.Users().AddAsync(addUserCommand);

            var command = new UpdateUserPasswordByCredentialsCommand()
            {
                Username     = addUserCommand.Email,
                NewPassword  = newPassword,
                OldPassword  = "******",
                UserAreaCode = addUserCommand.UserAreaCode
            };
            await contentRepository
            .Awaiting(r => r.Users().UpdatePasswordByCredentialsAsync(command))
            .Should()
            .ThrowAsync <ValidationErrorException>()
            .WithErrorCode(UserValidationErrors.Authentication.InvalidCredentials.ErrorCode);
        }
Exemple #2
0
        public async Task WhenValid_ChangesPassword()
        {
            var uniqueData  = UNIQUE_PREFIX + "Valid_ChangesPW";
            var newPassword = uniqueData + "New";

            using var app = _appFactory.Create();
            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var dbContext         = app.Services.GetRequiredService <CofoundryDbContext>();

            var addUserCommand = app.TestData.Users().CreateAddCommand(uniqueData);
            await contentRepository.Users().AddAsync(addUserCommand);

            var command = new UpdateUserPasswordByCredentialsCommand()
            {
                Username     = addUserCommand.Email,
                NewPassword  = newPassword,
                OldPassword  = addUserCommand.Password,
                UserAreaCode = addUserCommand.UserAreaCode
            };
            await contentRepository.Users().UpdatePasswordByCredentialsAsync(command);

            // Use the auth query to verify the password has been changed
            var authResult = await contentRepository.ExecuteQueryAsync(new AuthenticateUserCredentialsQuery()
            {
                UserAreaCode = command.UserAreaCode,
                Username     = command.Username,
                Password     = newPassword
            });

            using (new AssertionScope())
            {
                authResult.Should().NotBeNull();
                authResult.IsSuccess.Should().BeTrue();
            }
        }
Exemple #3
0
        public async Task SendsMail()
        {
            var uniqueData  = UNIQUE_PREFIX + nameof(SendsMail);
            var newPassword = uniqueData + "New";

            using var app = _appFactory.Create();
            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var dbContext         = app.Services.GetRequiredService <CofoundryDbContext>();

            var addUserCommand = app.TestData.Users().CreateAddCommand(uniqueData);
            await contentRepository.Users().AddAsync(addUserCommand);

            var command = new UpdateUserPasswordByCredentialsCommand()
            {
                Username     = addUserCommand.Email,
                NewPassword  = newPassword,
                OldPassword  = addUserCommand.Password,
                UserAreaCode = addUserCommand.UserAreaCode
            };
            await contentRepository.Users().UpdatePasswordByCredentialsAsync(command);

            var siteUrlResolver = app.Services.GetRequiredService <ISiteUrlResolver>();
            var signInUrl       = siteUrlResolver.MakeAbsolute(app.SeededEntities.TestUserArea1.Definition.SignInPath);

            var user = await dbContext
                       .Users
                       .AsNoTracking()
                       .FilterById(addUserCommand.OutputUserId)
                       .SingleOrDefaultAsync();

            app.Mocks
            .CountDispatchedMail(
                user.Email,
                "password",
                "Test Site",
                "has been changed",
                "username for this account is " + user.Username,
                signInUrl
                )
            .Should().Be(1);
        }
 public Task UpdatePasswordByCredentialsAsync(UpdateUserPasswordByCredentialsCommand command)
 {
     return(ExtendableContentRepository.ExecuteCommandAsync(command));
 }