public async Task CanLogInAfterConfirmingEmail() { // Arrange TestEmailSender testEmailSender = new TestEmailSender(); var server = ServerFactory.CreateServer(builder => { builder.ConfigureServices(services => services .AddSingleton <IEmailSender>(testEmailSender) .Configure <IdentityOptions>(opt => opt.SignIn.RequireConfirmedEmail = true)); }); var client = ServerFactory.CreateDefaultClient(server); var newClient = ServerFactory.CreateDefaultClient(server); var userName = $"{Guid.NewGuid()}@example.com"; var password = $"!Test.Password1$"; var loggedIn = await UserStories.RegisterNewUserAsync(client, userName, password); // Act & Assert // Use a new client to simulate a new browser session. var emailBody = HtmlAssert.IsHtmlFragment(testEmailSender.HtmlMessage); var linkElement = HtmlAssert.HasElement("a", emailBody); var link = Assert.IsAssignableFrom <IHtmlAnchorElement>(linkElement); var response = await newClient.GetAsync(link.Href); await UserStories.LoginExistingUserAsync(newClient, userName, password); }
internal static async Task <ResetPasswordConfirmation> ResetPasswordAsync(HttpClient client, IdentityEmail resetPasswordEmail, string email, string newPassword) { var emailBody = HtmlAssert.IsHtmlFragment(resetPasswordEmail.Body); var linkElement = HtmlAssert.HasElement("a", emailBody); var link = Assert.IsAssignableFrom <IHtmlAnchorElement>(linkElement); var resetPassword = await ResetPassword.CreateAsync(link, client, new DefaultUIContext().WithExistingUser()); return(await resetPassword.SendNewPasswordAsync(email, newPassword)); }
internal static async Task <ConfirmEmail> ConfirmEmailAsync(IdentityEmail email, HttpClient client) { var emailBody = HtmlAssert.IsHtmlFragment(email.Body); var linkElement = HtmlAssert.HasElement("a", emailBody); var link = Assert.IsAssignableFrom <IHtmlAnchorElement>(linkElement); return(await ConfirmEmail.Create(link, client, new DefaultUIContext() .WithAuthenticatedUser() .WithExistingUser() .WithConfirmedEmail())); }