public void LoadsDescriptionsOfCredentialsInToViewModel() { // Arrange var fakes = Get <Fakes>(); var user = fakes.CreateUser( "test", CredentialBuilder.CreatePbkdf2Password("hunter2"), CredentialBuilder.CreateV1ApiKey(Guid.NewGuid(), Fakes.ExpirationForApiKeyV1), CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "blarg", "Bloog")); var controller = GetController <UsersController>(); controller.SetCurrentUser(user); // Act var result = controller.Account(); // Assert var model = ResultAssert.IsView <AccountViewModel>(result, viewName: "Account"); var descs = model.Credentials.ToDictionary(c => c.Kind); // Should only be one of each kind Assert.Equal(3, descs.Count); Assert.Equal(Strings.CredentialType_Password, descs[CredentialKind.Password].TypeCaption); Assert.Equal(Strings.CredentialType_ApiKey, descs[CredentialKind.Token].TypeCaption); Assert.Equal(Strings.MicrosoftAccount_Caption, descs[CredentialKind.External].TypeCaption); }
public async Task GivenValidRequest_ItRemovesCredAndSendsNotificationToUser() { // Arrange var fakes = Get <Fakes>(); var cred = CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "blorg", "bloog"); var user = fakes.CreateUser("test", cred, CredentialBuilder.CreatePbkdf2Password("password")); 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.RemoveCredential(cred.Type); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); GetMock <AuthenticationService>().VerifyAll(); GetMock <IMessageService>().VerifyAll(); }
public async Task GivenNoPassword_ItRedirectsBackWithNoChangesMade() { // Arrange 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(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 void UsesProviderNounToDescribeCredentialIfPresent() { var user = new User { EmailAddress = "*****@*****.**", Username = "******" }; var cred = CredentialBuilder.CreateExternalCredential("MicrosoftAccount", "abc123", "Test User"); var messageService = new TestableMessageService(); messageService.MockAuthService .Setup(a => a.DescribeCredential(cred)) .Returns(new CredentialViewModel() { AuthUI = new AuthenticatorUI("sign in", "Microsoft Account", "Microsoft Account") }); messageService.SendCredentialAddedNotice(user, cred); var message = messageService.MockMailSender.Sent.Last(); Assert.Equal(user.ToMailAddress(), message.To[0]); Assert.Equal(TestGalleryOwner, message.From); Assert.Equal("[Joe Shmoe] Microsoft Account added to your account", message.Subject); Assert.Contains("A Microsoft Account was added to your account", message.Body); }
public void LoadsDescriptionsOfCredentialsInToViewModel() { // Arrange var credentialBuilder = new CredentialBuilder(); var fakes = Get<Fakes>(); var user = fakes.CreateUser( "test", credentialBuilder.CreatePasswordCredential("hunter2"), TestCredentialBuilder.CreateV1ApiKey(Guid.NewGuid(), Fakes.ExpirationForApiKeyV1), credentialBuilder.CreateExternalCredential("MicrosoftAccount", "blarg", "Bloog")); var controller = GetController<UsersController>(); controller.SetCurrentUser(user); // Act var result = controller.Account(); // Assert var model = ResultAssert.IsView<AccountViewModel>(result, viewName: "Account"); var descs = model.Credentials.ToDictionary(c => c.Kind); // Should only be one of each kind Assert.Equal(3, descs.Count); Assert.Equal(Strings.CredentialType_Password, descs[CredentialKind.Password].TypeCaption); Assert.Equal(Strings.CredentialType_ApiKey, descs[CredentialKind.Token].TypeCaption); Assert.Equal(Strings.MicrosoftAccount_Caption, descs[CredentialKind.External].TypeCaption); }
public async Task GivenValidRequest_ItRemovesCredAndSendsNotificationToUser() { // Arrange var credentialBuilder = new CredentialBuilder(); var fakes = Get<Fakes>(); var cred = credentialBuilder.CreateExternalCredential("MicrosoftAccount", "blorg", "bloog"); var user = fakes.CreateUser("test", cred, credentialBuilder.CreatePasswordCredential("password")); 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.RemoveCredential(cred.Type); // Assert ResultAssert.IsRedirectToRoute(result, new { action = "Account" }); GetMock<AuthenticationService>().VerifyAll(); GetMock<IMessageService>().VerifyAll(); }