public void UsesTypeCaptionToDescribeCredentialIfNoProviderNounPresent() { var user = new User { EmailAddress = "*****@*****.**", Username = "******" }; var cred = CredentialBuilder.CreatePbkdf2Password("bogus"); var messageService = new TestableMessageService(); messageService.MockAuthService .Setup(a => a.DescribeCredential(cred)) .Returns(new CredentialViewModel() { TypeCaption = "Password" }); 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] Password added to your account", message.Subject); Assert.Contains("A Password was added to your account", message.Body); }
public async Task GivenInvalidView_ItReturnsView() { // Arrange var controller = GetController <UsersController>(); controller.ModelState.AddModelError("ChangePassword.blarg", "test"); var inputModel = new AccountViewModel(); controller.SetCurrentUser(new User() { Credentials = new List <Credential>() { CredentialBuilder.CreatePbkdf2Password("abc") } }); // Act var result = await controller.ChangePassword(inputModel); // Assert var outputModel = ResultAssert.IsView <AccountViewModel>(result, viewName: "Account"); Assert.Same(inputModel, outputModel); }
public void LoadsDescriptionsOfCredentialsInToViewModel() { // Arrange var user = Fakes.CreateUser( "test", CredentialBuilder.CreatePbkdf2Password("hunter2"), CredentialBuilder.CreateV1ApiKey(Guid.NewGuid()), 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 virtual Task <ActionResult> Register(LogOnViewModel model, string returnUrl, bool linkingAccount) { // I think it should be obvious why we don't want the current URL to be the return URL here ;) ViewData[Constants.ReturnUrlViewDataKey] = returnUrl; if (Request.IsAuthenticated) { TempData["Message"] = Strings.AlreadyLoggedIn; return(SafeRedirect(returnUrl)); } if (linkingAccount) { ModelState.Remove("Register.Password"); } if (!ModelState.IsValid) { return(LogOnView(model)); } AuthenticatedUser user; try { if (linkingAccount) { var result = await AuthService.ReadExternalLoginCredential(OwinContext); if (result.ExternalIdentity == null) { return(ExternalLinkExpired()); } user = await AuthService.Register( model.Register.Username, model.Register.EmailAddress, result.Credential); } else { user = await AuthService.Register( model.Register.Username, model.Register.EmailAddress, CredentialBuilder.CreatePbkdf2Password(model.Register.Password)); } } catch (EntityException ex) { ModelState.AddModelError("Register", ex.Message); return(LogOnView(model)); } // Send a new account email if (NuGetContext.Config.Current.ConfirmEmailAddresses && !String.IsNullOrEmpty(user.User.UnconfirmedEmailAddress)) { MessageService.SendNewAccountEmail( new MailAddress(user.User.UnconfirmedEmailAddress, user.User.Username), Url.ConfirmationUrl( "Confirm", "Users", user.User.Username, user.User.EmailConfirmationToken)); } // We're logging in! AuthService.CreateSession(OwinContext, user.User); return(RedirectFromRegister(returnUrl)); }