internal void SetupTokenTab(Client specification, ClientDetailsEditPage editClientPage) { // TokenTab // Toggles editClientPage.TokenTab.IdentityTokenLifetime.EnterText($"{specification.IdentityTokenLifetime}"); editClientPage.TokenTab.AccessTokenLifetime.EnterText($"{specification.AccessTokenLifetime}"); editClientPage.TokenTab.AuthorizationCodeLifetime.EnterText($"{specification.AuthorizationCodeLifetime}"); editClientPage.TokenTab.AbsoluteRefreshTokenLifetime.EnterText($"{specification.AbsoluteRefreshTokenLifetime}"); editClientPage.TokenTab.SlidingRefreshTokenLifetime.EnterText($"{specification.SlidingRefreshTokenLifetime}"); // Select editClientPage.TokenTab.AccessTokenType.SelectByValue($"{specification.AccessTokenType}"); editClientPage.TokenTab.RefreshTokenExpiration.SelectByValue($"{specification.RefreshTokenExpiration}"); editClientPage.TokenTab.RefreshTokenUsage.SelectByValue($"{specification.RefreshTokenUsage}"); // Tags editClientPage.TokenTab.AllowedCorsOrigins.ClearSelectedItems(); editClientPage.TokenTab.AllowedCorsOrigins.AddItems(specification.AllowedCorsOrigins?.ToArray() ?? new string[] { }); // Toggles editClientPage.TokenTab.UpdateAccessTokenClaimsOnRefresh.Checked = specification.UpdateAccessTokenClaimsOnRefresh; editClientPage.TokenTab.IncludeJwtId.Checked = specification.IncludeJwtId; editClientPage.TokenTab.AlwaysIncludeUserClaimsInIdToken.Checked = specification.AlwaysIncludeUserClaimsInIdToken; editClientPage.TokenTab.AlwaysSendClientClaims.Checked = specification.AlwaysSendClientClaims; // Input editClientPage.TokenTab.ClientClaimsPrefix.EnterText(specification.ClientClaimsPrefix ?? ""); editClientPage.TokenTab.PairWiseSubjectSalt.EnterText(specification.PairWiseSubjectSalt ?? ""); }
internal void AddSecret(List <ClientSecret> clientSecrets, ClientDetailsEditPage editClientPage, int totalSecretsLimit) { Assert.AreEqual("_blank", editClientPage.BasicsTab.ManageSecrets.GetAttribute("target")); editClientPage.BasicsTab.ManageSecrets.SetAttribute(Driver, "target", "_self"); Assert.AreEqual("_self", editClientPage.BasicsTab.ManageSecrets.GetAttribute("target")); editClientPage.BasicsTab.ManageSecrets.Click(); ClientSecretsPage secretsPage = new ClientSecretsPage(Driver); if (clientSecrets?.Count > 0) { for (var i = 0; i < clientSecrets.Count; i++) { if (secretsPage.GetItems().Count >= totalSecretsLimit) { break; } var secret = clientSecrets[i]; secretsPage.Value.EnterText(secret.Value); secretsPage.Type.SelectByValue(secret.Type); secretsPage.HashType.SelectByValue( $"{((int)Ids4Enums.HashType.Sha512).ToString()}"); // 512 by default secretsPage.AddSecret.Click(); } } secretsPage.BackToClient.Click(); }
public void ResetSecretsForClientsByGrantType(string[] clients, string secret, string grantType) { var homePage = GoToHomePage(); homePage.ClientLink.Click(); ClientsListPage clientListPage = new ClientsListPage(Driver); foreach (var clientId in clients) { clientListPage.Navigate(); var isClientExists = clientListPage.OpenItemForEditIfExists(clientId); if (!isClientExists) { continue; } ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); if (!editClientPage.BasicsTab.AllowedGrantTypes.SelectedTagsValues.Any(x => x == grantType /* "client_credentials"*/)) { continue; } _registrationSteps.ManageSecrets(new List <ClientSecret>() { new ClientSecret(secret) }, editClientPage); editClientPage.SaveClientBtn.Click(); } }
private void ValidateAuthenticationLogoutTab(Client specification, ClientDetailsEditPage editClientPage) { // AuthenticationLogoutTab Assert.AreEqual(specification.FrontChannelLogoutSessionRequired, editClientPage.AuthenticationLogoutTab.FrontChannelLogoutSessionRequired.Checked); Assert.AreEqual(specification.BackChannelLogoutSessionRequired, editClientPage.AuthenticationLogoutTab.BackChannelLogoutSessionRequired.Checked); Assert.AreEqual(specification.EnableLocalLogin, editClientPage.AuthenticationLogoutTab.EnableLocalLogin.Checked); Assert.AreEqual(specification.FrontChannelLogoutUri ?? "", editClientPage.AuthenticationLogoutTab.FrontChannelLogoutUri.Value); Assert.AreEqual(specification.BackChannelLogoutUri ?? "", editClientPage.AuthenticationLogoutTab.BackChannelLogoutUri.Value); Assert.AreEqual(specification.FrontChannelLogoutSessionRequired, editClientPage.AuthenticationLogoutTab.FrontChannelLogoutSessionRequired.Checked); var logoutRedirectUris = editClientPage.AuthenticationLogoutTab.PostLogoutRedirectUris.SelectedTagsValues; if (specification.PostLogoutRedirectUris != null) { foreach (var uri in specification.PostLogoutRedirectUris) { Assert.AreEqual(uri, logoutRedirectUris.FirstOrDefault(x => x == uri)); } } var restrictions = editClientPage.AuthenticationLogoutTab.IdentityProviderRestrictions.SelectedTagsValues; if (specification.IdentityProviderRestrictions != null) { foreach (var restriction in specification.IdentityProviderRestrictions) { Assert.AreEqual(restriction, restrictions.FirstOrDefault(x => x == restriction)); } } }
internal void SetupBasicsTab(Client specification, ClientDetailsEditPage editClientPage) { // BasicsTab editClientPage.BasicsTab.Description.EnterText(specification.Description ?? specification.ClientName); editClientPage.BasicsTab.ProtocolType.SelectByValue(specification.ProtocolType); // Test switch //editClientPage.BasicsTab.RequireClientSecret.Switch(); //editClientPage.BasicsTab.RequireClientSecret.On(); //editClientPage.BasicsTab.RequireClientSecret.Off(); // BasicsTab.Toggles editClientPage.BasicsTab.RequireClientSecret.Checked = specification.RequireClientSecret; editClientPage.BasicsTab.RequirePkce.Checked = specification.RequirePkce; editClientPage.BasicsTab.AllowPlainTextPkce.Checked = specification.AllowPlainTextPkce; editClientPage.BasicsTab.AllowAccessTokensViaBrowser.Checked = specification.AllowAccessTokensViaBrowser; editClientPage.BasicsTab.AllowOfflineAccess.Checked = specification.AllowOfflineAccess; // BasicsTab.Tags editClientPage.BasicsTab.AllowedScopes.ClearSelectedItems(); editClientPage.BasicsTab.AllowedScopes.AddItems(specification.AllowedScopes.ToArray()); editClientPage.BasicsTab.RedirectUris.ClearSelectedItems(); editClientPage.BasicsTab.RedirectUris.AddItems(specification.RedirectUris.ToArray()); editClientPage.BasicsTab.AllowedGrantTypes.ClearSelectedItems(); editClientPage.BasicsTab.AllowedGrantTypes.AddItems(specification.AllowedGrantTypes.ToArray()); }
public void PrepareMigratedClientForAuthTest(string clientId) { var homePage = GoToHomePage(); homePage.ClientLink.Click(); ClientsListPage clientListPage = new ClientsListPage(Driver); var isClientExists = clientListPage.OpenItemForEditIfExists(clientId); if (!isClientExists) { Assert.Fail($"not migrated client: {clientId}"); } // Edit new client ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); if (!editClientPage.BasicsTab.RedirectUris.SelectedTagsValues.Any(x => x == TestClientUrl.PostResultUri)) { editClientPage.BasicsTab.RedirectUris.AddItem(TestClientUrl.PostResultUri); } //editClientPage.ConsentScreenTab.RequireConsent.Checked = specification.RequireConsent; _registrationSteps.SaveClient(editClientPage); AddSecret(new List <ClientSecret>() { new ClientSecret("secret") }, editClientPage, 2); }
internal void ManageSecrets(List <ClientSecret> clientSecrets, ClientDetailsEditPage editClientPage) { Assert.AreEqual("_blank", editClientPage.BasicsTab.ManageSecrets.GetAttribute("target")); editClientPage.BasicsTab.ManageSecrets.SetAttribute(Driver, "target", "_self"); Assert.AreEqual("_self", editClientPage.BasicsTab.ManageSecrets.GetAttribute("target")); editClientPage.BasicsTab.ManageSecrets.Click(); ClientSecretsPage secretsPage = new ClientSecretsPage(Driver); if (clientSecrets?.Count > 0) { for (var i = 0; i < clientSecrets.Count; i++) { var secret = clientSecrets[i]; secretsPage.Value.EnterText(secret.Value); secretsPage.Type.SelectByValue(secret.Type); secretsPage.HashType.SelectByValue( $"{((int)Ids4Enums.HashType.Sha512).ToString()}"); // 512 by default secretsPage.AddSecret.Click(); var topItem = secretsPage.GetItem(1); Assert.AreEqual(secret.Type, topItem.Type.Text); Assert.AreEqual(88, topItem.Value.Text.Length); // 256 => 44, 512 => 88, } } // Delete latest in the list, first added item - test (OK) //secretsPage.DeleteItem(specification.ClientSecrets.Count); secretsPage.BackToClient.Click(); }
private void ManageClaims(List <ClientClaim> claims, ClientDetailsEditPage editClientPage) { //if (specification.Claims == null) return; Assert.AreEqual("_blank", editClientPage.TokenTab.ManageClientClaims.GetAttribute("target")); editClientPage.TokenTab.ManageClientClaims.SetAttribute(Driver, "target", "_self"); Assert.AreEqual("_self", editClientPage.TokenTab.ManageClientClaims.GetAttribute("target")); editClientPage.TokenTab.ManageClientClaims.Click(); ClientClaimsPage clientClaimsPage = new ClientClaimsPage(Driver); if (claims != null) { for (var i = 0; i < claims.Count; i++) { var claim = claims[i]; clientClaimsPage.ClaimType.AddItem(claim.Type); clientClaimsPage.ClaimValue.EnterText(claim.Value); clientClaimsPage.AddClientClaim.Click(); var topItem = clientClaimsPage.GetItem(1); Assert.AreEqual(claim.Type, topItem.Type.Text); Assert.AreEqual(claim.Value, topItem.Value.Text); } // Delete latest in the list, first added item - test (OK) //clientClaimsPage.DeleteItem(specification.Claims.Count); } clientClaimsPage.BackToClient.Click(); }
private void ValidateBasicsTab(Client specification, ClientDetailsEditPage editClientPage) { Assert.AreEqual(specification.ClientName, editClientPage.BasicsTab.Description.Value); Assert.AreEqual(specification.ProtocolType, editClientPage.BasicsTab.ProtocolType.Value); // BasicsTab.Toggles Assert.AreEqual(specification.RequireClientSecret, editClientPage.BasicsTab.RequireClientSecret.Checked); Assert.AreEqual(specification.RequirePkce, editClientPage.BasicsTab.RequirePkce.Checked); Assert.AreEqual(specification.AllowPlainTextPkce, editClientPage.BasicsTab.AllowPlainTextPkce.Checked); Assert.AreEqual(specification.AllowAccessTokensViaBrowser, editClientPage.BasicsTab.AllowAccessTokensViaBrowser.Checked); Assert.AreEqual(specification.AllowOfflineAccess, editClientPage.BasicsTab.AllowOfflineAccess.Checked); var scopes = editClientPage.BasicsTab.AllowedScopes.SelectedTagsValues; foreach (var scope in specification.AllowedScopes) { Assert.AreEqual(scope, scopes.FirstOrDefault(x => x == scope)); } var redirectUris = editClientPage.BasicsTab.RedirectUris.SelectedTagsValues; foreach (var uri in specification.RedirectUris) { Assert.AreEqual(uri, redirectUris.FirstOrDefault(x => x == uri)); } var grantTypes = editClientPage.BasicsTab.AllowedGrantTypes.SelectedTagsValues; foreach (var gType in specification.AllowedGrantTypes) { Assert.AreEqual(gType, grantTypes.FirstOrDefault(x => x == gType)); } }
public void ValidateIfClientMatchToSpecification(Client specification) { ClientsListPage clientListPage = new ClientsListPage(Driver); var isClientExists = clientListPage.OpenItemForEditIfExists(specification.ClientId); if (!isClientExists) { Assert.Fail($"Client {specification.ClientId} not exists"); } ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); Assert.AreEqual(specification.ClientId, editClientPage.NameTab.ClientId.Value); Assert.AreEqual(specification.ClientName, editClientPage.NameTab.ClientName.Value); ValidateBasicsTab(specification, editClientPage); ValidateAuthenticationLogoutTab(specification, editClientPage); ValidateTokenTab(specification, editClientPage); ValidateConsentTab(specification, editClientPage); ValidateClaims(specification, editClientPage); ValidateSecrets(specification, editClientPage); ValidateProperties(specification, editClientPage); }
private void SetupConsentTab(Client specification, ClientDetailsEditPage editClientPage) { editClientPage.ConsentScreenTab.RequireConsent.Checked = specification.RequireConsent; editClientPage.ConsentScreenTab.AllowRememberConsent.Checked = specification.AllowRememberConsent; editClientPage.ConsentScreenTab.ClientUri.EnterText(specification.ClientUri ?? ""); editClientPage.ConsentScreenTab.LogoUri.EnterText(specification.LogoUri ?? ""); }
private void ValidateConsentTab(Client specification, ClientDetailsEditPage editClientPage) { Assert.AreEqual($"{specification.ClientUri ?? ""}", editClientPage.ConsentScreenTab.ClientUri.Value); Assert.AreEqual($"{specification.LogoUri ?? ""}", editClientPage.ConsentScreenTab.LogoUri.Value); Assert.AreEqual(specification.RequireConsent, editClientPage.ConsentScreenTab.RequireConsent.Checked); Assert.AreEqual(specification.AllowRememberConsent, editClientPage.ConsentScreenTab.AllowRememberConsent.Checked); }
private void DeleteClient(Client specification) { ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); Assert.AreEqual(specification.ClientId, editClientPage.NameTab.ClientId.Value); editClientPage.DeleteClientBtn.Click(); ClientDeletePage deletePage = new ClientDeletePage(Driver); Assert.AreEqual(specification.ClientId, deletePage.ClientId.Value); Assert.AreEqual(specification.ClientName, deletePage.ClientName.Value); deletePage.DeleteClient.Click(); }
private void ValidateProperties(Client specification, ClientDetailsEditPage editClientPage) { editClientPage.BasicsTab.ManageClientProperties.SetAttribute(Driver, "target", "_self"); editClientPage.BasicsTab.ManageClientProperties.Click(); ClientPropertiesPage propertiesPage = new ClientPropertiesPage(Driver); if (specification.Properties != null) { var items = propertiesPage.GetItems(); foreach (var property in specification.Properties) { Assert.AreEqual(property.Value, items.FirstOrDefault(x => x.Key.Text == property.Key && x.Value.Text == property.Value)?.Value.Text); } } propertiesPage.BackToClient.Click(); }
private ClientDetailsEditPage SetupExistingClient(Client specification) { // Edit new client ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); // NameTab editClientPage.NameTab.ClientId.EnterText(specification.ClientId); editClientPage.NameTab.ClientName.EnterText(specification.ClientName); // BasicsTab SetupBasicsTab(specification, editClientPage); // AuthenticationLogoutTab SetupAuthenticationLogoutTab(specification, editClientPage); // TokenTab SetupTokenTab(specification, editClientPage); // Consent SetupConsentTab(specification, editClientPage); SaveClient(editClientPage); // Claims ManageClaims(specification.Claims, editClientPage); // Secrets ManageSecrets(specification.ClientSecrets, editClientPage); // Properties - PoC var properties = new List <(string, string)> { ("owner", "Idm team / integration test"), ("test executed on", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"), ("example", "example to be deleted") }; if (specification.Properties != null) { properties.AddRange(specification.Properties.Select(x => (x.Key, x.Value)).ToArray()); } ManageProperties(properties.ToArray(), editClientPage); return(editClientPage); }
private void ValidateClaims(Client specification, ClientDetailsEditPage editClientPage) { editClientPage.TokenTab.ManageClientClaims.SetAttribute(Driver, "target", "_self"); editClientPage.TokenTab.ManageClientClaims.Click(); ClientClaimsPage clientClaimsPage = new ClientClaimsPage(Driver); if (specification.Claims != null) { var items = clientClaimsPage.GetItems(); foreach (var claim in specification.Claims) { Assert.AreEqual(claim.Value, items.FirstOrDefault(x => x.Type.Text == claim.Type && x.Value.Text == claim.Value)?.Value.Text); } } clientClaimsPage.BackToClient.Click(); }
private void SetupAuthenticationLogoutTab(Client specification, ClientDetailsEditPage editClientPage) { // AuthenticationLogoutTab editClientPage.AuthenticationLogoutTab.FrontChannelLogoutSessionRequired.Checked = specification.FrontChannelLogoutSessionRequired; editClientPage.AuthenticationLogoutTab.BackChannelLogoutSessionRequired.Checked = specification.BackChannelLogoutSessionRequired; editClientPage.AuthenticationLogoutTab.EnableLocalLogin.Checked = specification.EnableLocalLogin; editClientPage.AuthenticationLogoutTab.FrontChannelLogoutUri.EnterText(specification.FrontChannelLogoutUri ?? ""); editClientPage.AuthenticationLogoutTab.BackChannelLogoutUri.EnterText(specification.BackChannelLogoutUri ?? ""); editClientPage.AuthenticationLogoutTab.PostLogoutRedirectUris.ClearSelectedItems(); editClientPage.AuthenticationLogoutTab.PostLogoutRedirectUris.AddItems(specification.PostLogoutRedirectUris?.ToArray() ?? new string[] { }); editClientPage.AuthenticationLogoutTab.IdentityProviderRestrictions.ClearSelectedItems(); editClientPage.AuthenticationLogoutTab.IdentityProviderRestrictions.AddItems(specification.IdentityProviderRestrictions?.ToArray() ?? new string[] { }); }
private void ValidateSecrets(Client specification, ClientDetailsEditPage editClientPage) { editClientPage.BasicsTab.ManageSecrets.SetAttribute(Driver, "target", "_self"); editClientPage.BasicsTab.ManageSecrets.Click(); ClientSecretsPage secretsPage = new ClientSecretsPage(Driver); if (specification.ClientSecrets != null) { var items = secretsPage.GetItems(); Assert.AreEqual(specification.ClientSecrets.Count, items.Count); foreach (var secret in specification.ClientSecrets) { // Value encrypted //Assert.AreEqual(secret.Value, items.FirstOrDefault(x => x.Type.Text == secret.Type && x.Value.Text == secret.Value)?.Value.Text); // Check if such type exists Assert.AreEqual(secret.Type, items.FirstOrDefault(x => x.Type.Text == secret.Type && x.Value.Text.Length == 88)?.Type.Text); } } secretsPage.BackToClient.Click(); }
private void ValidateTokenTab(Client specification, ClientDetailsEditPage editClientPage) { // TokenTab // Inputs Assert.AreEqual($"{specification.IdentityTokenLifetime}", editClientPage.TokenTab.IdentityTokenLifetime.Value); Assert.AreEqual($"{specification.AccessTokenLifetime}", editClientPage.TokenTab.AccessTokenLifetime.Value); Assert.AreEqual($"{specification.AuthorizationCodeLifetime}", editClientPage.TokenTab.AuthorizationCodeLifetime.Value); Assert.AreEqual($"{specification.AbsoluteRefreshTokenLifetime}", editClientPage.TokenTab.AbsoluteRefreshTokenLifetime.Value); Assert.AreEqual($"{specification.SlidingRefreshTokenLifetime}", editClientPage.TokenTab.SlidingRefreshTokenLifetime.Value); // Selects Assert.AreEqual($"{specification.AccessTokenType}", editClientPage.TokenTab.AccessTokenType.Value); Assert.AreEqual($"{specification.RefreshTokenExpiration}", editClientPage.TokenTab.RefreshTokenExpiration.Value); Assert.AreEqual($"{specification.RefreshTokenUsage}", editClientPage.TokenTab.RefreshTokenUsage.Value); // Toggles Assert.AreEqual(specification.UpdateAccessTokenClaimsOnRefresh, editClientPage.TokenTab.UpdateAccessTokenClaimsOnRefresh.Checked); Assert.AreEqual(specification.IncludeJwtId, editClientPage.TokenTab.IncludeJwtId.Checked); Assert.AreEqual(specification.AlwaysIncludeUserClaimsInIdToken, editClientPage.TokenTab.AlwaysIncludeUserClaimsInIdToken.Checked); Assert.AreEqual(specification.AlwaysSendClientClaims, editClientPage.TokenTab.AlwaysSendClientClaims.Checked); // Inputs Assert.AreEqual($"{specification.ClientClaimsPrefix ?? ""}", editClientPage.TokenTab.ClientClaimsPrefix.Value); Assert.AreEqual($"{specification.PairWiseSubjectSalt ?? ""}", editClientPage.TokenTab.PairWiseSubjectSalt.Value); // Tags var corsOrigins = editClientPage.TokenTab.AllowedCorsOrigins.SelectedTagsValues; if (specification.AllowedCorsOrigins != null) { foreach (var cors in specification.AllowedCorsOrigins) { Assert.AreEqual(cors, corsOrigins.FirstOrDefault(x => x == cors)); } } // Link: TODO }
public void UpdateClientBasicsAndSecrets(Client specification) { var homePage = GoToHomePage(); homePage.ClientLink.Click(); ClientsListPage clientListPage = new ClientsListPage(Driver); var isClientExists = clientListPage.OpenItemForEditIfExists(specification.ClientId); if (!isClientExists) { // Create new client _registrationSteps.CreateNewClient(specification, clientListPage); } // Edit new client ClientDetailsEditPage editClientPage = new ClientDetailsEditPage(Driver); editClientPage.NameTab.ClientName.EnterText(specification.ClientName); _registrationSteps.SetupBasicsTab(specification, editClientPage); editClientPage.ConsentScreenTab.RequireConsent.Checked = specification.RequireConsent; _registrationSteps.SaveClient(editClientPage); AddSecret(specification.ClientSecrets, editClientPage, 2); }
internal void SaveClient(ClientDetailsEditPage editClientPage) { editClientPage.SaveClientBtn.Click(); editClientPage.Navigate(); }