public async Task Get_Roles_Mongo_Test()
        {
            // Arrange
            InternalIdentityServiceProvider internalISProvider = GetIdentityServiceProvider();

            // Act
            List <Role> result = await internalISProvider.GetRolesAsync();

            // Assert
            Assert.NotEmpty(result);
        }
        public async Task Get_Portal_Claims_Mongo_Test()
        {
            // Arrange
            InternalIdentityServiceProvider internalISProvider = GetIdentityServiceProvider();

            // Act
            List <RolePortalClaimModel> result = await internalISProvider.GetPortalClaimsAsync("admin");

            // Assert
            Assert.NotEmpty(result);
        }
        public async Task Sign_In_Mongo_Test()
        {
            // Arrange
            InternalIdentityServiceProvider internalISProvider = GetIdentityServiceProvider();

            // Act
            TokenModel result = await internalISProvider.SignInAsync(new LetPortal.Identity.Models.LoginModel
            {
                Username = "******",
                Password = "******"
            });

            // Assert
            Assert.NotNull(result);
        }
        public async Task Register_User_Mongo_Test()
        {
            // Arrange
            InternalIdentityServiceProvider internalISProvider = GetIdentityServiceProvider();

            // Act
            await internalISProvider.RegisterAsync(new LetPortal.Identity.Models.RegisterModel
            {
                Username   = "******",
                Password   = "******",
                Repassword = "******",
                Email      = "*****@*****.**"
            });

            // Assert
            Assert.True(true);
        }
        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);
        }
        public async Task Add_Portal_Claims_To_Role_Mongo_Test()
        {
            // Arrange
            InternalIdentityServiceProvider internalISProvider = GetIdentityServiceProvider();

            // Act
            await internalISProvider.AddPortalClaimsToRoleAsync("SuperAdmin", new List <PortalClaimModel>
            {
                new PortalClaimModel
                {
                    Name  = "testclaim",
                    Value = "test"
                }
            });

            // Assert
            Assert.True(true);
        }