Exemplo n.º 1
0
        public async Task MaxAttemptsExceeded_Throws()
        {
            var uniqueData = UNIQUE_PREFIX + "MaxAttExceeded";
            var seedDate   = new DateTime(1953, 01, 19);

            using var app = _appFactory.Create(s => s.Configure <UsersSettings>(s =>
            {
                s.AccountVerification.InitiationRateLimit.Quantity = 2;
                s.AccountVerification.InitiationRateLimit.Window   = TimeSpan.FromHours(2);
            }));
            var contentRepository = app.Services.GetContentRepository();

            app.Mocks.MockDateTime(seedDate);
            var authenticatedTask = await AddUserAndInitiate(uniqueData + 1, app);

            var command = new InitiateUserAccountVerificationViaEmailCommand()
            {
                UserId = authenticatedTask.UserId
            };

            app.Mocks.MockDateTime(seedDate.AddHours(1));
            await contentRepository.Users().AccountVerification().EmailFlow().InitiateAsync(command);

            using (new AssertionScope())
            {
                app.Mocks.MockDateTime(seedDate.AddHours(1).AddMinutes(59));
                await contentRepository
                .Awaiting(r => r.Users().AccountVerification().EmailFlow().InitiateAsync(command))
                .Should()
                .ThrowAsync <ValidationErrorException>()
                .WithErrorCode(UserValidationErrors.AccountVerification.Initiation.RateLimitExceeded.ErrorCode);

                app.Mocks.MockDateTime(seedDate.AddHours(2));
                await contentRepository
                .Awaiting(r => r.Users().AccountVerification().EmailFlow().InitiateAsync(command))
                .Should()
                .NotThrowAsync();
            }
        }
Exemplo n.º 2
0
        public async Task AlreadyVerified_Throws()
        {
            var uniqueData = UNIQUE_PREFIX + "AlrVerT";
            var seedDate   = new DateTime(1953, 01, 23);

            using var app = _appFactory.Create();
            var contentRepository = app.Services.GetContentRepository();

            app.Mocks.MockDateTime(seedDate);

            var userId = await app.TestData.Users().AddAsync(uniqueData, c => c.IsAccountVerified = true);

            var command = new InitiateUserAccountVerificationViaEmailCommand()
            {
                UserId = userId
            };

            await contentRepository
            .Awaiting(r => r.Users().AccountVerification().EmailFlow().InitiateAsync(command))
            .Should()
            .ThrowAsync <ValidationErrorException>()
            .WithErrorCode(UserValidationErrors.AccountVerification.Initiation.AlreadyVerified.ErrorCode);
        }
Exemplo n.º 3
0
 public Task InitiateAsync(InitiateUserAccountVerificationViaEmailCommand command)
 {
     return(ExtendableContentRepository.ExecuteCommandAsync(command));
 }