예제 #1
0
            public async Task WhenSomeEmailAddressesAreInvalid_ItShouldCallUpdateFreeAccessUsersAndItShouldReturnValidEmailAddresses()
            {
                var emailList = new List <string> {
                    "*****@*****.**", "two.test.com"
                };
                var freeAccessUsersData = new FreeAccessUsersData {
                    Emails = emailList
                };

                var validEmailList = new List <ValidEmail> {
                    ValidEmail.Parse(emailList[0])
                };
                var invalidEmailList = new List <Email> {
                    new Email(emailList[1])
                };

                var expectedResult = new PutFreeAccessUsersResult(invalidEmailList);

                this.updateFreeAccessUsers
                .Setup(v => v.HandleAsync(new UpdateFreeAccessUsersCommand(Requester, BlogId, validEmailList)))
                .Returns(Task.FromResult(0))
                .Verifiable();

                var result = await this.target.PutFreeAccessList(BlogId.Value.EncodeGuid(), freeAccessUsersData);

                this.updateFreeAccessUsers.Verify();
                Assert.AreEqual(expectedResult, result);
            }
        public async Task WhenUpdateAccountSettingsCalledWithSameEMailAndEmailWasNotConfirmed_ItShouldStillNotBeConfirmed()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new UpdateAccountSettingsDbStatement(testDatabase, this.userManager.Object, this.requestSnapshot);
                await this.CreateUserAsync(testDatabase, false);
                await testDatabase.TakeSnapshotAsync();

                var expectedUser                = await this.GetUserAsync(testDatabase);
                expectedUser.UserName           = this.newUsername.Value;
                expectedUser.ProfileImageFileId = this.newFileId.Value;
                expectedUser.SecurityStamp      = this.securityStamp;

                var result = await this.target.ExecuteAsync(
                    this.userId,
                    this.newUsername,
                    ValidEmail.Parse(this.email.Value),
                    null,
                    this.newFileId,
                    this.securityStamp);

                Assert.AreEqual(false, result.EmailConfirmed);

                return(new ExpectedSideEffects
                {
                    Update = expectedUser
                });
            });
        }
예제 #3
0
        public async Task WhenNewEmailList_AndEmailsForBlogIsEmpty_ItShouldModifyEmailsForBlog()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new UpdateFreeAccessUsersDbStatement(testDatabase, this.requestSnapshot);

                await this.CreateDataAsync(testDatabase, false);
                await testDatabase.TakeSnapshotAsync();

                await this.target.ExecuteAsync(
                    CreatorId,
                    BlogId,
                    new List <ValidEmail>
                {
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**")
                });

                return(new ExpectedSideEffects
                {
                    Inserts = new List <FreeAccessUser>
                    {
                        new FreeAccessUser {
                            BlogId = BlogId.Value, Email = "*****@*****.**"
                        },
                        new FreeAccessUser {
                            BlogId = BlogId.Value, Email = "*****@*****.**"
                        },
                    },
                });
            });
        }
예제 #4
0
        public async Task ItShouldBeIdempotent()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new UpdateFreeAccessUsersDbStatement(testDatabase, this.requestSnapshot);

                await this.CreateDataAsync(testDatabase, true);

                await this.target.ExecuteAsync(
                    CreatorId,
                    BlogId,
                    new List <ValidEmail>
                {
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**")
                });

                await testDatabase.TakeSnapshotAsync();

                await this.target.ExecuteAsync(
                    CreatorId,
                    BlogId,
                    new List <ValidEmail>
                {
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**")
                });

                return(ExpectedSideEffects.None);
            });
        }
예제 #5
0
        public async Task WhenNewEmailListIsSubset_ItShouldDeleteOldEmailsForBlog()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new UpdateFreeAccessUsersDbStatement(testDatabase, this.requestSnapshot);

                await this.CreateDataAsync(testDatabase, true);
                await testDatabase.TakeSnapshotAsync();

                await this.target.ExecuteAsync(
                    CreatorId,
                    BlogId,
                    new List <ValidEmail>
                {
                    ValidEmail.Parse("*****@*****.**"),
                });

                return(new ExpectedSideEffects
                {
                    Deletes = new List <FreeAccessUser>
                    {
                        new FreeAccessUser {
                            BlogId = BlogId.Value, Email = "*****@*****.**"
                        },
                        new FreeAccessUser {
                            BlogId = BlogId.Value, Email = "*****@*****.**"
                        },
                    },
                });
            });
        }
예제 #6
0
        public async Task WhenEmailDoesNotExist_ItShouldDoNothing()
        {
            var command = new RequestPasswordResetCommand(ValidEmail.Parse(EmailAddress), null);

            this.userManager.Setup(_ => _.FindByEmailAsync(EmailAddress)).ReturnsAsync(null);

            await this.target.HandleAsync(command);
        }
예제 #7
0
        public async Task WhenEmailExists_ItShouldSendEmail()
        {
            var command = new RequestPasswordResetCommand(ValidEmail.Parse(EmailAddress), null);

            this.userManager.Setup(_ => _.FindByEmailAsync(EmailAddress)).ReturnsAsync(new FifthweekUser()
            {
                Id       = UserId,
                UserName = Username
            });

            await this.AssertEmailSent(command);
        }
예제 #8
0
        public async Task WhenPostingUserRegistration_ItShouldIssueRegisterUserCommand()
        {
            var registration = NewRegistrationData();

            var command = new RegisterUserCommand(
                UserId,
                registration.ExampleWork,
                ValidEmail.Parse(registration.Email),
                ValidUsername.Parse(registration.Username),
                ValidPassword.Parse(registration.Password),
                false);

            this.guidCreator.Setup(_ => _.CreateSqlSequential()).Returns(UserId.Value);
            this.registerUser.Setup(v => v.HandleAsync(command)).Returns(Task.FromResult(0));

            var result = await this.controller.PostRegistrationAsync(registration);

            Assert.IsInstanceOfType(result, typeof(OkResult));
            this.registerUser.Verify(v => v.HandleAsync(command));
            this.guidCreator.Verify(v => v.CreateSqlSequential());
        }
예제 #9
0
        public async Task WhenNewEmailListIsSame_AndOrderIsDifferent_ItShouldNotModifyEmailsForBlog()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new UpdateFreeAccessUsersDbStatement(testDatabase, this.requestSnapshot);

                await this.CreateDataAsync(testDatabase, true);
                await testDatabase.TakeSnapshotAsync();

                await this.target.ExecuteAsync(
                    CreatorId,
                    BlogId,
                    new List <ValidEmail>
                {
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**"),
                    ValidEmail.Parse("*****@*****.**"),
                });

                return(ExpectedSideEffects.None);
            });
        }
예제 #10
0
 public static RequestPasswordResetCommand NewCommand(PasswordResetRequestData data)
 {
     return(new RequestPasswordResetCommand(
                data.Email == null ? null : ValidEmail.Parse(data.Email),
                data.Username == null ? null : ValidUsername.Parse(data.Username)));
 }
        public async Task WhenEmailIsFromFifthweekDomain_ItShouldNotReport()
        {
            await this.target.HandleAsync(new SendIdentifiedUserInformationCommand(Requester.Unauthenticated, false, ValidEmail.Parse("something" + Constants.FifthweekEmailDomain), Name, Username));

            // Test verification handled by strict behaviour.
        }