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();
            }
Esempio n. 3
0
            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);
            }
Esempio n. 4
0
            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);
            }
Esempio n. 6
0
            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);
            }
Esempio n. 7
0
            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();
            }