public async Task MapsData() { // Ensure mapping to underlying AddUserCommand var uniqueData = UNIQUE_PREFIX + nameof(MapsData); using var app = _appFactory.Create(); var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions(); var dbContext = app.Services.GetRequiredService <CofoundryDbContext>(); var command = new AddUserWithTemporaryPasswordCommand() { Email = uniqueData + EMAIL_DOMAIN, FirstName = "Leeroy", LastName = "Jenkins", RoleCode = app.SeededEntities.TestUserArea1.RoleA.RoleCode, UserAreaCode = app.SeededEntities.TestUserArea1.UserAreaCode }; await contentRepository .Users() .AddWithTemporaryPasswordAsync(command); var user = await dbContext .Users .AsNoTracking() .Include(r => r.Role) .FilterById(command.OutputUserId) .SingleOrDefaultAsync(); using (new AssertionScope()) { command.OutputUserId.Should().BePositive(); user.Should().NotBeNull(); user.FirstName.Should().Be(command.FirstName); user.LastName.Should().Be(command.LastName); user.Email.Should().Be(command.Email); user.Password.Should().NotBeNullOrWhiteSpace(); user.RequirePasswordChange.Should().BeTrue(); user.Role.RoleCode.Should().Be(command.RoleCode); user.UserAreaCode.Should().Be(command.UserAreaCode); user.Username.Should().Be(user.Email); } }
public async Task SendsMail() { var uniqueData = UNIQUE_PREFIX + nameof(SendsMail); var password = "******"; using var app = _appFactory.Create(s => { var mockPasswordGenerator = new Mock <IPasswordGenerationService>(); mockPasswordGenerator.Setup(m => m.Generate(It.IsAny <int>())).Returns(password); s.AddSingleton(mockPasswordGenerator.Object); }); var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions(); var dbContext = app.Services.GetRequiredService <CofoundryDbContext>(); var siteUrlResolver = app.Services.GetRequiredService <ISiteUrlResolver>(); var signInUrl = siteUrlResolver.MakeAbsolute(app.SeededEntities.TestUserArea1.Definition.SignInPath); var command = new AddUserWithTemporaryPasswordCommand() { Email = uniqueData + EMAIL_DOMAIN, RoleCode = app.SeededEntities.TestUserArea1.RoleA.RoleCode, UserAreaCode = app.SeededEntities.TestUserArea1.UserAreaCode }; await contentRepository .Users() .AddWithTemporaryPasswordAsync(command); app.Mocks .CountDispatchedMail( command.Email, "account has been created", "Test Site", "username is: " + command.Email, "password is: " + password, signInUrl ) .Should().Be(1); }
public async Task WhenNotPasswordSignIn_Throws() { var uniqueData = UNIQUE_PREFIX + nameof(WhenNotPasswordSignIn_Throws); using var app = _appFactory.Create(); var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions(); var dbContext = app.Services.GetRequiredService <CofoundryDbContext>(); var userAreaCode = UserAreaWithoutPasswordSignIn.Code; var roleId = await app.TestData.Roles().AddAsync(uniqueData, userAreaCode); var command = new AddUserWithTemporaryPasswordCommand() { Email = uniqueData + EMAIL_DOMAIN, RoleId = roleId, UserAreaCode = userAreaCode }; await contentRepository .Awaiting(r => r.ExecuteCommandAsync(command)) .Should() .ThrowAsync <InvalidOperationException>() .WithMessage("*must*support*password*sign in*"); }
public async Task <int> AddWithTemporaryPasswordAsync(AddUserWithTemporaryPasswordCommand command) { await ExtendableContentRepository.ExecuteCommandAsync(command); return(command.OutputUserId); }
public async Task <JsonResult> PostWithTemporaryPassword([FromBody] AddUserWithTemporaryPasswordCommand command) { return(await _apiResponseHelper.RunCommandAsync(command)); }