public async Task OnValidateIdentityWithGuidTest()
        {
            var owinContext = new OwinContext();

            await CreateManager(owinContext);

            var manager = owinContext.GetUserManager <UserManager <GuidUser, Guid> >();
            var user    = new GuidUser {
                UserName = "******"
            };

            UnitTestHelper.IsSuccess(await manager.CreateAsync(user));
            var id = await SignIn(manager, user);

            var ticket = new AuthenticationTicket(id, new AuthenticationProperties {
                IssuedUtc = DateTimeOffset.UtcNow
            });
            var context = new CookieValidateIdentityContext(owinContext, ticket, new CookieAuthenticationOptions());
            await
            SecurityStampValidator.OnValidateIdentity <UserManager <GuidUser, Guid>, GuidUser, Guid>(TimeSpan.Zero,
                                                                                                     SignIn, claimId => new Guid(claimId.GetUserId())).Invoke(context);

            Assert.NotNull(context.Identity);
            Assert.Equal(user.Id.ToString(), id.GetUserId());

            // change stamp and make sure it fails
            UnitTestHelper.IsSuccess(await manager.UpdateSecurityStampAsync(user.Id));
            await
            SecurityStampValidator.OnValidateIdentity <UserManager <GuidUser, Guid>, GuidUser, Guid>(TimeSpan.Zero,
                                                                                                     SignIn, claimId => new Guid(claimId.GetUserId())).Invoke(context);

            Assert.Null(context.Identity);
        }
        public async Task CustomGuidConfirmEmailTest()
        {
            var owinContext = new OwinContext();

            await CreateManager(owinContext);

            var manager = owinContext.GetUserManager <UserManager <GuidUser, Guid> >();
            var user    = new GuidUser("test");

            Assert.False(user.EmailConfirmed);
            UnitTestHelper.IsSuccess(await manager.CreateAsync(user));
            var token = await manager.GenerateEmailConfirmationTokenAsync(user.Id);

            Assert.NotNull(token);
            UnitTestHelper.IsSuccess(await manager.ConfirmEmailAsync(user.Id, token));
            Assert.True(await manager.IsEmailConfirmedAsync(user.Id));
            UnitTestHelper.IsSuccess(await manager.SetEmailAsync(user.Id, null));
            Assert.False(await manager.IsEmailConfirmedAsync(user.Id));
        }
        public async Task CustomGuidEmailTokenFactorWithFormatTest()
        {
            var owinContext = new OwinContext();

            await CreateManager(owinContext);

            var manager        = owinContext.GetUserManager <UserManager <GuidUser, Guid> >();
            var messageService = new TestMessageService();

            manager.EmailService = messageService;
            var factorId = "EmailCode";

            manager.RegisterTwoFactorProvider(factorId, new EmailTokenProvider <GuidUser, Guid>
            {
                Subject    = "Security Code",
                BodyFormat = "Your code is: {0}"
            });
            var user = new GuidUser("EmailCodeTest");

            user.Email = "*****@*****.**";
            var password = "******";

            UnitTestHelper.IsSuccess(await manager.CreateAsync(user, password));
            var stamp = user.SecurityStamp;

            Assert.NotNull(stamp);
            var token = await manager.GenerateTwoFactorTokenAsync(user.Id, factorId);

            Assert.NotNull(token);
            Assert.Null(messageService.Message);
            await manager.NotifyTwoFactorTokenAsync(user.Id, factorId, token);

            Assert.NotNull(messageService.Message);
            Assert.Equal("Security Code", messageService.Message.Subject);
            Assert.Equal("Your code is: " + token, messageService.Message.Body);
            Assert.True(await manager.VerifyTwoFactorTokenAsync(user.Id, factorId, token));
        }
 private Task <ClaimsIdentity> SignIn(UserManager <GuidUser, Guid> manager, GuidUser user)
 {
     return(manager.ClaimsIdentityFactory.CreateAsync(manager, user, DefaultAuthenticationTypes.ApplicationCookie));
 }