コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #5
0
 public async Task <JsonResult> PostWithTemporaryPassword([FromBody] AddUserWithTemporaryPasswordCommand command)
 {
     return(await _apiResponseHelper.RunCommandAsync(command));
 }