private RoleManager <Role> GetRoleManager()
        {
            DatabaseOptions databaseOptions = _context.MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);

#pragma warning disable CA2000 // Dispose objects before losing scope
            RoleMongoRepository roleRepositoryMongo = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
            RoleStore           roleStore           = new RoleStore(roleRepositoryMongo);
#pragma warning restore CA2000 // Dispose objects before losing scope
            List <IRoleValidator <Role> > roleValidators    = new List <IRoleValidator <Role> >();
            Mock <IRoleValidator <Role> > roleValidatorMock = new Mock <IRoleValidator <Role> >();
            roleValidatorMock.Setup(a => a.ValidateAsync(It.IsAny <RoleManager <Role> >(), It.IsAny <Role>())).Returns(Task.FromResult(IdentityResult.Success));
            roleValidators.Add(roleValidatorMock.Object);
            Mock <ILookupNormalizer> lookupNormalizedMock = new Mock <ILookupNormalizer>();
            lookupNormalizedMock.Setup(a => a.NormalizeName(It.IsAny <string>())).Returns((string name) => name.ToUpper());
            lookupNormalizedMock.Setup(a => a.NormalizeEmail(It.IsAny <string>())).Returns((string name) => name.ToUpper());

            RoleManager <Role> roleManager = new RoleManager <Role>(
                roleStore,
                roleValidators,
                lookupNormalizedMock.Object,
                new IdentityErrorDescriber(),
                new Mock <ILogger <RoleManager <Role> > >().Object);
            return(roleManager);
        }
示例#2
0
        private RoleMongoRepository GetRoleMongoRepository()
        {
            DatabaseOptions databaseOptions = MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);
            RoleMongoRepository roleMongoRepository = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));

            return(roleMongoRepository);
        }
        private UserManager <User> GetUserManager()
        {
            DatabaseOptions databaseOptions = _context.MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);

#pragma warning disable CA2000 // Dispose objects before losing scope
            UserMongoRepository userRepository = new UserMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
            RoleMongoRepository roleRepository = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
            UserStore           userStore      = new UserStore(userRepository, roleRepository);
#pragma warning restore CA2000 // Dispose objects before losing scope
            Mock <IOptions <IdentityOptions> > identityOptionsMock = new Mock <IOptions <IdentityOptions> >();
            IdentityOptions identityOptions = new IdentityOptions
            {
                SignIn = new SignInOptions
                {
                    RequireConfirmedEmail       = false,
                    RequireConfirmedPhoneNumber = false
                },
                User = new UserOptions
                {
                    RequireUniqueEmail = true
                },
                Lockout = new LockoutOptions
                {
                    AllowedForNewUsers = true
                }
            };
            identityOptionsMock.Setup(a => a.Value).Returns(identityOptions);
            List <IUserValidator <User> >    userValidators = new List <IUserValidator <User> >();
            List <PasswordValidator <User> > pwdValidators  = new List <PasswordValidator <User> >();

            Mock <IServiceProvider> serviceProviders = new Mock <IServiceProvider>();
            Mock <IUserTwoFactorTokenProvider <User> > mockUserFactorTokenProvider = new Mock <IUserTwoFactorTokenProvider <User> >();
            mockUserFactorTokenProvider
            .Setup(a => a.CanGenerateTwoFactorTokenAsync(It.IsAny <UserManager <User> >(), It.IsAny <User>()))
            .Returns(Task.FromResult(true));

            mockUserFactorTokenProvider
            .Setup(a => a.GenerateAsync(It.IsAny <string>(), It.IsAny <UserManager <User> >(), It.IsAny <User>()))
            .Returns(Task.FromResult(Guid.NewGuid().ToString()));

            mockUserFactorTokenProvider
            .Setup(a => a.ValidateAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <UserManager <User> >(), It.IsAny <User>()))
            .Returns(Task.FromResult(true));

            UserManager <User> userManager = new UserManager <User>(
                userStore,
                identityOptionsMock.Object,
                new PasswordHasher <User>(),
                userValidators,
                pwdValidators,
                new UpperInvariantLookupNormalizer(),
                new IdentityErrorDescriber(),
                serviceProviders.Object,
                new Mock <ILogger <UserManager <User> > >().Object);

            return(userManager);
        }
        public async Task Get_Base_Claims_Mongo_Test()
        {
            // Arrange
            DatabaseOptions databaseOptions = _context.MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);
            RoleMongoRepository roleRepository = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));

            // Act
            System.Collections.Generic.Dictionary <string, System.Collections.Generic.List <LetPortal.Identity.Entities.BaseClaim> > result = await roleRepository.GetBaseClaims(new string[] { "SuperAdmin" });

            roleRepository.Dispose();
            // Assert
            Assert.NotNull(result);
        }
        public async Task Get_By_Name_Mongo_Test()
        {
            // Arrange
            DatabaseOptions databaseOptions = _context.MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);
            RoleMongoRepository roleRepository = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));

            // Act
            LetPortal.Identity.Entities.Role result = await roleRepository.GetByNameAsync("SuperAdmin");

            roleRepository.Dispose();
            // Assert
            Assert.NotNull(result);
        }
        private InternalIdentityServiceProvider GetIdentityServiceProvider()
        {
            JwtBearerOptions jwtOptions = new JwtBearerOptions
            {
                Audience = "LetPortal",
                Issuer   = "letportal.app",
                RefreshTokenExpiration = 45,
                TokenExpiration        = 30,
                Secret = "9f3acfa82146f5e4a7dabf17c2b63f538c0bcffb8872e889367df2e2c23cef94"
            };

            IOptionsMonitor <JwtBearerOptions> mockJwtOptions = Mock.Of <IOptionsMonitor <JwtBearerOptions> >(_ => _.CurrentValue == jwtOptions);

            DatabaseOptions databaseOptions = _context.MongoDatabaseOptions;
            IOptionsMonitor <DatabaseOptions> databaseOptionsMock = Mock.Of <IOptionsMonitor <DatabaseOptions> >(_ => _.CurrentValue == databaseOptions);

#pragma warning disable CA2000 // Dispose objects before losing scope
            IssuedTokenMongoRepository issuedTokenRepository = new IssuedTokenMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
            UserSessionMongoRepository userSessionRepository = new UserSessionMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
            RoleMongoRepository        roleRepository        = new RoleMongoRepository(new MongoConnection(databaseOptionsMock.CurrentValue));
#pragma warning restore CA2000 // Dispose objects before losing scope

            Mock <IEmailServiceProvider> mockEmailServiceProvider = new Mock <IEmailServiceProvider>();
            mockEmailServiceProvider
            .Setup(a => a.SendEmailAsync(It.IsAny <EmailEnvelop>(), It.IsAny <EmailOptions>()))
            .Returns(Task.CompletedTask);
            Mock <IServiceLogger <InternalIdentityServiceProvider> > mockServiceLogger = new Mock <IServiceLogger <InternalIdentityServiceProvider> >();

#pragma warning disable CA2000 // Dispose objects before losing scope
            UserManager <User> userManager = GetUserManager();
#pragma warning restore CA2000 // Dispose objects before losing scope
            InternalIdentityServiceProvider internalISProvider = new InternalIdentityServiceProvider(
                userManager,
                GetSignInManager(userManager),
#pragma warning disable CA2000 // Dispose objects before losing scope
                roleManager: GetRoleManager(),
#pragma warning restore CA2000 // Dispose objects before losing scope
                mockJwtOptions,
                issuedTokenRepository,
                userSessionRepository,
                roleRepository,
                mockEmailServiceProvider.Object,
                mockServiceLogger.Object);

            return(internalISProvider);
        }