public async Task RefreshRefreshesObject()
            {
                // Arrange
                var emails     = new[] { "*****@*****.**" };
                var domains    = new[] { "example.com" };
                var exceptions = new[] { "*****@*****.**" };

                var config       = new LoginDiscontinuationConfiguration(emails, domains, exceptions);
                var configString = JsonConvert.SerializeObject(config);

                GetMock <IContentService>()
                .Setup(x => x.GetContentItemAsync(Constants.ContentNames.LoginDiscontinuationConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(configString)));

                var service = GetService <ContentObjectService>();

                // Act
                await service.Refresh();

                var loginDiscontinuationAndMigrationConfiguration = service.LoginDiscontinuationConfiguration as LoginDiscontinuationConfiguration;

                // Assert
                Assert.True(loginDiscontinuationAndMigrationConfiguration.DiscontinuedForEmailAddresses.SequenceEqual(emails));
                Assert.True(loginDiscontinuationAndMigrationConfiguration.DiscontinuedForDomains.SequenceEqual(domains));
                Assert.True(loginDiscontinuationAndMigrationConfiguration.ExceptionsForEmailAddresses.SequenceEqual(exceptions));
            }
            public async Task RefreshRefreshesObject()
            {
                // Arrange
                var emails            = new[] { "*****@*****.**" };
                var domains           = new[] { "example.com" };
                var exceptions        = new[] { "*****@*****.**" };
                var shouldTransforms  = new[] { "*****@*****.**" };
                var orgTenantPairs    = new[] { new OrganizationTenantPair("example.com", "tenantId") };
                var orgsEnabledForAll = true;

                var config       = new LoginDiscontinuationConfiguration(emails, domains, exceptions, shouldTransforms, orgTenantPairs, orgsEnabledForAll);
                var configString = JsonConvert.SerializeObject(config);

                GetMock <IContentService>()
                .Setup(x => x.GetContentItemAsync(Constants.ContentNames.LoginDiscontinuationConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(configString)));

                var service = GetService <ContentObjectService>();

                // Act
                await service.Refresh();

                var loginDiscontinuationConfiguration = service.LoginDiscontinuationConfiguration as LoginDiscontinuationConfiguration;

                // Assert
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForEmailAddresses.SequenceEqual(emails));
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForDomains.SequenceEqual(domains));
                Assert.True(loginDiscontinuationConfiguration.ExceptionsForEmailAddresses.SequenceEqual(exceptions));
                Assert.True(loginDiscontinuationConfiguration.EnabledOrganizationAadTenants.SequenceEqual(orgTenantPairs));
                Assert.Equal(orgsEnabledForAll, loginDiscontinuationConfiguration.OrganizationsEnabledForAll);
            }
Exemple #3
0
            public void IsUnsupportedWhenNull()
            {
                var config = new LoginDiscontinuationConfiguration();

                var areOrganizationsSupported = config.AreOrganizationsSupportedForUser(null);
                var shouldTransform           = config.ShouldUserTransformIntoOrganization(null);

                Assert.False(areOrganizationsSupported);
                Assert.False(shouldTransform);
            }
Exemple #4
0
            public async Task RefreshRefreshesObject()
            {
                // Arrange
                var emails           = new[] { "*****@*****.**" };
                var domains          = new[] { "example.com" };
                var exceptions       = new[] { "*****@*****.**" };
                var shouldTransforms = new[] { "*****@*****.**" };
                var orgTenantPairs   = new[] { new OrganizationTenantPair("example.com", "tenantId") };

                var loginDiscontinuationConfiguration = new LoginDiscontinuationConfiguration(emails, domains, exceptions, shouldTransforms, orgTenantPairs);
                var loginJson = JsonConvert.SerializeObject(loginDiscontinuationConfiguration);

                var isUIEnabledByDefault           = true;
                var alwaysEnabledForDomains        = new[] { "a" };
                var alwaysEnabledForEmailAddresses = new[] { "b" };

                var certificatesConfiguration = new CertificatesConfiguration(
                    isUIEnabledByDefault,
                    alwaysEnabledForDomains,
                    alwaysEnabledForEmailAddresses);
                var certificatesJson = JsonConvert.SerializeObject(certificatesConfiguration);

                var contentService = GetMock <IContentService>();

                contentService
                .Setup(x => x.GetContentItemAsync(Constants.ContentNames.LoginDiscontinuationConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(loginJson)));

                contentService
                .Setup(x => x.GetContentItemAsync(Constants.ContentNames.CertificatesConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(certificatesJson)));

                var service = GetService <ContentObjectService>();

                // Act
                await service.Refresh();

                loginDiscontinuationConfiguration = service.LoginDiscontinuationConfiguration as LoginDiscontinuationConfiguration;
                certificatesConfiguration         = service.CertificatesConfiguration as CertificatesConfiguration;

                // Assert
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForEmailAddresses.SequenceEqual(emails));
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForDomains.SequenceEqual(domains));
                Assert.True(loginDiscontinuationConfiguration.ExceptionsForEmailAddresses.SequenceEqual(exceptions));
                Assert.True(loginDiscontinuationConfiguration.EnabledOrganizationAadTenants.SequenceEqual(orgTenantPairs, new OrganizationTenantPairComparer()));

                Assert.True(certificatesConfiguration.IsUIEnabledByDefault);
                Assert.Equal(alwaysEnabledForDomains, certificatesConfiguration.AlwaysEnabledForDomains);
                Assert.Equal(alwaysEnabledForEmailAddresses, certificatesConfiguration.AlwaysEnabledForEmailAddresses);
            }
Exemple #5
0
            private void TestIsLoginDiscontinued(string credentialType, bool isOnWhiteList, bool isOnDomainList, bool isOnExceptionList, bool expectedResult)
            {
                // Arrange
                var credential = new Credential(credentialType, "value");
                var user       = new User("test")
                {
                    EmailAddress = _email, Credentials = new[] { credential }
                };
                var authUser = new AuthenticatedUser(user, credential);

                var emails     = isOnWhiteList ? new[] { _email } : new[] { _incorrectEmail };
                var domains    = isOnDomainList ? new[] { _domain } : new[] { _incorrectDomain };
                var exceptions = isOnExceptionList ? new[] { _email } : new[] { _incorrectException };

                var config = new LoginDiscontinuationConfiguration(emails, domains, exceptions);

                // Act
                var result = config.IsLoginDiscontinued(authUser);

                // Assert
                Assert.Equal(expectedResult, result);
            }
Exemple #6
0
            public async Task RefreshRefreshesObject()
            {
                // Arrange
                var emails           = new[] { "*****@*****.**" };
                var domains          = new[] { "example.com" };
                var exceptions       = new[] { "*****@*****.**" };
                var shouldTransforms = new[] { "*****@*****.**" };
                var orgTenantPairs   = new[] { new OrganizationTenantPair("example.com", "tenantId") };

                var loginDiscontinuationConfiguration = new LoginDiscontinuationConfiguration(emails, domains, exceptions, shouldTransforms, orgTenantPairs, isPasswordDiscontinuedForAll: false);
                var loginJson = JsonConvert.SerializeObject(loginDiscontinuationConfiguration);

                var isUIEnabledByDefault           = true;
                var alwaysEnabledForDomains        = new[] { "a" };
                var alwaysEnabledForEmailAddresses = new[] { "b" };

                var packageIdChecklistLength = 20000;
                var packageIdChecklistCacheExpireTimeInHours = 12.0;

                var certificatesConfiguration = new CertificatesConfiguration(
                    isUIEnabledByDefault,
                    alwaysEnabledForDomains,
                    alwaysEnabledForEmailAddresses);
                var certificatesJson = JsonConvert.SerializeObject(certificatesConfiguration);

                var symbolsConfiguration = new SymbolsConfiguration(
                    isSymbolsUploadEnabledForAll: true,
                    alwaysEnabledForDomains: alwaysEnabledForDomains,
                    alwaysEnabledForEmailAddresses: alwaysEnabledForEmailAddresses);
                var symbolsJson = JsonConvert.SerializeObject(symbolsConfiguration);

                var typosquattingConfiguration = new TyposquattingConfiguration(
                    packageIdChecklistLength: packageIdChecklistLength,
                    isCheckEnabled: true,
                    isBlockUsersEnabled: true,
                    packageIdChecklistCacheExpireTimeInHours: packageIdChecklistCacheExpireTimeInHours);
                var typosquattingJson = JsonConvert.SerializeObject(typosquattingConfiguration);

                var contentService = GetMock <IContentService>();

                contentService
                .Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.LoginDiscontinuationConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(loginJson)));

                contentService
                .Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.CertificatesConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(certificatesJson)));

                contentService
                .Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.SymbolsConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(symbolsJson)));

                contentService
                .Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.TyposquattingConfiguration, It.IsAny <TimeSpan>()))
                .Returns(Task.FromResult <IHtmlString>(new HtmlString(typosquattingJson)));

                var service = GetService <ContentObjectService>();

                // Act
                await service.Refresh();

                loginDiscontinuationConfiguration = service.LoginDiscontinuationConfiguration as LoginDiscontinuationConfiguration;
                certificatesConfiguration         = service.CertificatesConfiguration as CertificatesConfiguration;
                symbolsConfiguration       = service.SymbolsConfiguration as SymbolsConfiguration;
                typosquattingConfiguration = service.TyposquattingConfiguration as TyposquattingConfiguration;

                // Assert
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForEmailAddresses.SequenceEqual(emails));
                Assert.True(loginDiscontinuationConfiguration.DiscontinuedForDomains.SequenceEqual(domains));
                Assert.True(loginDiscontinuationConfiguration.ExceptionsForEmailAddresses.SequenceEqual(exceptions));
                Assert.True(loginDiscontinuationConfiguration.EnabledOrganizationAadTenants.SequenceEqual(orgTenantPairs, new OrganizationTenantPairComparer()));

                Assert.True(certificatesConfiguration.IsUIEnabledByDefault);
                Assert.Equal(alwaysEnabledForDomains, certificatesConfiguration.AlwaysEnabledForDomains);
                Assert.Equal(alwaysEnabledForEmailAddresses, certificatesConfiguration.AlwaysEnabledForEmailAddresses);

                Assert.True(symbolsConfiguration.IsSymbolsUploadEnabledForAll);
                Assert.Equal(alwaysEnabledForDomains, symbolsConfiguration.AlwaysEnabledForDomains);
                Assert.Equal(alwaysEnabledForEmailAddresses, symbolsConfiguration.AlwaysEnabledForEmailAddresses);

                Assert.Equal(packageIdChecklistLength, typosquattingConfiguration.PackageIdChecklistLength);
                Assert.True(typosquattingConfiguration.IsCheckEnabled);
                Assert.True(typosquattingConfiguration.IsBlockUsersEnabled);
                Assert.Equal(packageIdChecklistCacheExpireTimeInHours, typosquattingConfiguration.PackageIdChecklistCacheExpireTimeInHours);
            }