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); }
public void IsUnsupportedWhenNull() { var config = new LoginDiscontinuationConfiguration(); var areOrganizationsSupported = config.AreOrganizationsSupportedForUser(null); var shouldTransform = config.ShouldUserTransformIntoOrganization(null); Assert.False(areOrganizationsSupported); Assert.False(shouldTransform); }
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); }
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); }
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); }