public virtual async Task WhenNewEmailIsDifferentAndWasUnconfirmed_SavesChanges() { // Arrange var controller = GetController(); var account = GetAccount(controller); var model = CreateViewModel(account); model.ChangeEmail.NewEmail = "*****@*****.**"; account.UnconfirmedEmailAddress = account.EmailAddress; account.EmailAddress = null; // Act var result = await InvokeChangeEmail(controller, account, model); // Assert GetMock <IUserService>().Verify(u => u.ChangeEmailAddress(It.IsAny <User>(), It.IsAny <string>()), Times.Once); ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); Assert.Equal(controller.Messages.EmailUpdated, controller.TempData["Message"]); GetMock <IMessageService>() .Verify(m => m.SendEmailChangeConfirmationNotice(It.IsAny <MailAddress>(), It.IsAny <string>()), Times.Never); }
public void RedirectsToPasswordChangedIfUserServiceSucceeds() { // Arrange var controller = GetController <UsersController>(); controller.SetUser("user"); GetMock <IUserService>() .Setup(u => u.ChangePassword("user", "old", "new")) .Returns(true); var inputModel = new PasswordChangeViewModel() { OldPassword = "******", NewPassword = "******", ConfirmPassword = "******" }; // Act var result = controller.ChangePassword(inputModel); // Assert ResultAssert.IsRedirectToRoute(result, new { controller = "Users", action = "PasswordChanged" }); }
public async Task GivenValidRequest_ItRemovesCredAndSendsNotificationToUser() { // Arrange var cred = CredentialBuilder.CreatePbkdf2Password("password"); var user = Fakes.CreateUser("test", cred, CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "blorg", "bloog")); GetMock <AuthenticationService>() .Setup(a => a.RemoveCredential(user, cred)) .Completes() .Verifiable(); GetMock <IMessageService>() .Setup(m => m.SendCredentialRemovedNotice(user, cred)) .Verifiable(); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = await controller.RemovePassword(); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); GetMock <AuthenticationService>().VerifyAll(); GetMock <IMessageService>().VerifyAll(); }
public async Task GivenSuccessInAuthService_ItRedirectsBackToManageCredentialsWithMessage() { // Arrange var user = new User("foo"); user.Credentials.Add(CredentialBuilder.CreatePbkdf2Password("old")); GetMock <AuthenticationService>() .Setup(u => u.ChangePassword(user, "old", "new")) .CompletesWith(true); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); var inputModel = new AccountViewModel() { ChangePassword = new ChangePasswordViewModel() { OldPassword = "******", NewPassword = "******", } }; // Act var result = await controller.ChangePassword(inputModel); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); Assert.Equal(Strings.PasswordChanged, controller.TempData["Message"]); }
public async Task WhenAddOrganizationSucceeds_RedirectsToManageOrganization() { var token = "token"; var org = new Organization("newlyCreated") { UnconfirmedEmailAddress = OrgEmail, EmailConfirmationToken = token }; var mockUserService = GetMock <IUserService>(); mockUserService .Setup(x => x.AddOrganizationAsync(OrgName, OrgEmail, Admin)) .Returns(Task.FromResult(org)); var messageService = GetMock <IMessageService>(); var controller = GetController <OrganizationsController>(); controller.SetCurrentUser(Admin); var result = await controller.Add(Model); ResultAssert.IsRedirectToRoute(result, new { accountName = org.Username, action = nameof(OrganizationsController.ManageOrganization) }); messageService.Verify( x => x.SendNewAccountEmail( It.Is <MailAddress>(m => m.Address == OrgEmail && m.DisplayName == org.Username), It.Is <string>(s => s.Contains(token))), Times.Once()); }
public virtual async Task WhenAlreadyConfirmed_RedirectsToAccount(Func <Fakes, User> getCurrentUser) { // Arrange var controller = GetController(); var account = GetAccount(controller); // Act var result = await InvokeCancelChangeEmail(controller, account, getCurrentUser); // Assert GetMock <IUserService>().Verify(u => u.CancelChangeEmailAddress(It.IsAny <User>()), Times.Never); ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); }
public async Task RedirectsToAccountPage() { var user = new User { Username = "******" }; var controller = GetController <UsersController>(); controller.SetCurrentUser(user); var result = await controller.GenerateApiKey(expirationInDays : null); ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); }
public virtual async Task UpdatesEmailPreferences(Func <Fakes, User> getCurrentUser, bool emailAllowed, bool notifyPackagePushed) { // Arrange var controller = GetController(); var account = GetAccount(controller); // Act var result = await InvokeChangeEmailSubscription(controller, getCurrentUser, emailAllowed, notifyPackagePushed); // Assert ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); GetMock <IUserService>().Verify(u => u.ChangeEmailSubscriptionAsync(account, emailAllowed, notifyPackagePushed)); }
public void RedirectsToAccountPage() { var user = new User { Username = "******" }; var controller = GetController <UsersController>(); controller.SetCurrentUser(user); var result = controller.GenerateApiKey(); ResultAssert.IsRedirectToRoute(result, new { action = "Account", controller = "Users" }); }
public void RedirectsToAccountPage() { var controller = GetController <UsersController>(); var user = new User { Username = "******" }; controller.SetUser(user); GetMock <IUserService>() .Setup(u => u.FindByUsername(It.IsAny <string>())) .Returns(user); var result = controller.GenerateApiKey(); ResultAssert.IsRedirectToRoute(result, new { action = "Account", controller = "Users" }); }
public virtual async Task WhenNewEmailIsSame_RedirectsWithoutChange(Func <Fakes, User> getCurrentUser) { // Arrange var controller = GetController(); var account = GetAccount(controller); var model = CreateViewModel(account); model.ChangeEmail.NewEmail = account.EmailAddress; // Act var result = await InvokeChangeEmail(controller, account, getCurrentUser, model); // Assert GetMock <IUserService>().Verify(u => u.ChangeEmailAddress(It.IsAny <User>(), It.IsAny <string>()), Times.Never); ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); }
public async Task GivenNoCredential_ItRedirectsBackWithNoChangesMade() { // Arrange var user = Fakes.CreateUser("test", CredentialBuilder.CreatePbkdf2Password("password")); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = await controller.RemoveCredential(CredentialTypes.ExternalPrefix + "MicrosoftAccount"); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); Assert.Equal(1, user.Credentials.Count); }
public async Task GivenNoOtherLoginCredentials_ItRedirectsBackWithAnErrorMessage() { // Arrange var user = Fakes.CreateUser("test", CredentialBuilder.CreatePbkdf2Password("password")); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = await controller.RemovePassword(); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); Assert.Equal(Strings.CannotRemoveOnlyLoginCredential, controller.TempData["Message"]); Assert.Equal(1, user.Credentials.Count); }
public async Task GivenNoOtherLoginCredentials_ItRedirectsBackWithAnErrorMessage() { // Arrange var cred = CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "blorg", "bloog"); var user = Fakes.CreateUser("test", cred); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = await controller.RemoveCredential(cred.Type); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); Assert.Equal(Strings.CannotRemoveOnlyLoginCredential, controller.TempData["Message"]); Assert.Equal(1, user.Credentials.Count); }
public virtual async Task WhenUnconfirmed_CancelsEmailChangeRequest(Func <Fakes, User> getCurrentUser) { // Arrange var controller = GetController(); var account = GetAccount(controller); account.UnconfirmedEmailAddress = account.EmailAddress; account.EmailAddress = null; // Act var result = await InvokeCancelChangeEmail(controller, account, getCurrentUser); // Assert GetMock <IUserService>().Verify(u => u.CancelChangeEmailAddress(account), Times.Once); ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); Assert.Equal(controller.Messages.EmailUpdateCancelled, controller.TempData["Message"]); }
public async Task GivenNoPassword_ItRedirectsBackWithNoChangesMade() { // Arrange var fakes = Get <Fakes>(); var user = fakes.CreateUser("test", CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "blorg", "bloog")); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = await controller.RemovePassword(); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); Assert.Equal(Strings.NoCredentialToRemove, controller.TempData["Message"]); Assert.Equal(1, user.Credentials.Count); }
public void UpdatesEmailAllowedSetting() { var user = new User("aUsername") { EmailAddress = "*****@*****.**", EmailAllowed = true }; var controller = GetController <UsersController>(); controller.SetCurrentUser(user); GetMock <IUserService>() .Setup(u => u.ChangeEmailSubscription(user, false)); var result = controller.ChangeEmailSubscription(false); ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); GetMock <IUserService>().Verify(u => u.ChangeEmailSubscription(user, false)); }
/// <remarks> /// Normally, you should use a single <see cref="TheoryAttribute"/> that enumerates through the possible values of <paramref name="getCurrentUser"/> and <paramref name="newEmailIsConfirmed"/>, /// but because we are using test case "inheritance" (search for properties with the same name as <see cref="AllowedCurrentUsersDataName"/>), this is not possible. /// </remarks> private async Task WhenNewEmailIsDifferentAndWasConfirmedHelper(Func <Fakes, User> getCurrentUser, bool newEmailIsConfirmed) { // Arrange var controller = GetController(); var account = GetAccount(controller); var model = CreateViewModel(account); model.ChangeEmail.NewEmail = "*****@*****.**"; // Act var result = await InvokeChangeEmail(controller, account, getCurrentUser, model, newEmailIsConfirmed); // Assert GetMock <IUserService>().Verify(u => u.ChangeEmailAddress(It.IsAny <User>(), It.IsAny <string>()), Times.Once); ResultAssert.IsRedirectToRoute(result, new { action = controller.AccountAction }); GetMock <IMessageService>() .Verify(m => m.SendMessageAsync(It.IsAny <EmailChangeConfirmationMessage>(), It.IsAny <bool>(), It.IsAny <bool>()), newEmailIsConfirmed ? Times.Never() : Times.Once()); }