diff --git a/cypress/e2e/eda/Access-Management/team-access.cy.ts b/cypress/e2e/eda/Access-Management/team-access.cy.ts index d1a6a7ed7b..148a89acd9 100644 --- a/cypress/e2e/eda/Access-Management/team-access.cy.ts +++ b/cypress/e2e/eda/Access-Management/team-access.cy.ts @@ -11,21 +11,22 @@ import { edaAPI } from '../../../support/formatApiPathForEDA'; import { EdaCredentialType } from '../../../../frontend/eda/interfaces/EdaCredentialType'; import { user_team_access_tab_resources } from '../../../support/constants'; +type ResourceObject = + | EdaProject + | EdaDecisionEnvironment + | EdaRulebookActivation + | EdaCredential + | EdaCredentialType; + user_team_access_tab_resources.forEach((resource) => { describe(`Team Access Tab for ${resource.name} - Add team`, () => { let edaTeam: EdaTeam; - let resource_object: - | EdaProject - | EdaDecisionEnvironment - | EdaRulebookActivation - | EdaCredential - | EdaCredentialType; + let resource_object: ResourceObject; before(() => { cy.edaLogin(); // If the resource is a RBA, create all dependency resources, else just the one resource - if (resource.name == 'rulebook-activations') { + if (resource.name === 'rulebook-activations') { let edaProject: EdaProject; - let edaDecisionEnvironment: EdaDecisionEnvironment; let edaRuleBook: EdaRulebook; cy.createEdaProject().then((project) => { edaProject = project; @@ -33,7 +34,6 @@ user_team_access_tab_resources.forEach((resource) => { cy.getEdaRulebooks(edaProject, 'hello_echo.yml').then((edaRuleBooks) => { edaRuleBook = edaRuleBooks[0]; cy.createEdaDecisionEnvironment().then((decisionEnvironment) => { - edaDecisionEnvironment = decisionEnvironment; cy.createEdaRulebookActivation({ rulebook_id: edaRuleBook.id, decision_environment_id: decisionEnvironment.id, @@ -45,11 +45,11 @@ user_team_access_tab_resources.forEach((resource) => { }); }); }); - } else { - resource.creation().then((resource_instance) => { + } else if (resource.creation !== null) { + resource.creation().then((resource_instance: ResourceObject) => { resource_object = resource_instance; - if (resource.name == 'projects') { - cy.waitEdaProjectSync(resource_instance); + if (resource.name === 'projects') { + cy.waitEdaProjectSync(resource_instance as EdaProject); } }); } @@ -67,7 +67,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { @@ -106,9 +106,8 @@ user_team_access_tab_resources.forEach((resource) => { before(() => { cy.edaLogin(); // If the resource is a RBA, create all dependency resources, else just the one resource - if (resource.name == 'rulebook-activations') { + if (resource.name === 'rulebook-activations') { let edaProject: EdaProject; - let edaDecisionEnvironment: EdaDecisionEnvironment; let edaRuleBook: EdaRulebook; cy.createEdaProject().then((project) => { edaProject = project; @@ -116,7 +115,6 @@ user_team_access_tab_resources.forEach((resource) => { cy.getEdaRulebooks(edaProject, 'hello_echo.yml').then((edaRuleBooks) => { edaRuleBook = edaRuleBooks[0]; cy.createEdaDecisionEnvironment().then((decisionEnvironment) => { - edaDecisionEnvironment = decisionEnvironment; cy.createEdaRulebookActivation({ rulebook_id: edaRuleBook.id, decision_environment_id: decisionEnvironment.id, @@ -128,11 +126,11 @@ user_team_access_tab_resources.forEach((resource) => { }); }); }); - } else { + } else if (resource.creation !== null) { resource.creation().then((resource_instance) => { resource_object = resource_instance; - if (resource.name == 'projects') { - cy.waitEdaProjectSync(resource_object); + if (resource.name === 'projects') { + cy.waitEdaProjectSync(resource_object as EdaProject); } }); } @@ -182,7 +180,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { @@ -203,7 +201,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { diff --git a/cypress/e2e/eda/Access-Management/user-access.cy.ts b/cypress/e2e/eda/Access-Management/user-access.cy.ts index e962154485..c97a1d3518 100644 --- a/cypress/e2e/eda/Access-Management/user-access.cy.ts +++ b/cypress/e2e/eda/Access-Management/user-access.cy.ts @@ -23,9 +23,8 @@ user_team_access_tab_resources.forEach((resource) => { before(() => { cy.edaLogin(); // If the resource is a RBA, create all dependency resources, else just the one resource - if (resource.name == 'rulebook-activations') { + if (resource.name === 'rulebook-activations') { let edaProject: EdaProject; - let edaDecisionEnvironment: EdaDecisionEnvironment; let edaRuleBook: EdaRulebook; cy.createEdaProject().then((project) => { edaProject = project; @@ -33,7 +32,6 @@ user_team_access_tab_resources.forEach((resource) => { cy.getEdaRulebooks(edaProject, 'hello_echo.yml').then((edaRuleBooks) => { edaRuleBook = edaRuleBooks[0]; cy.createEdaDecisionEnvironment().then((decisionEnvironment) => { - edaDecisionEnvironment = decisionEnvironment; cy.createEdaRulebookActivation({ rulebook_id: edaRuleBook.id, decision_environment_id: decisionEnvironment.id, @@ -45,11 +43,11 @@ user_team_access_tab_resources.forEach((resource) => { }); }); }); - } else { + } else if (resource.creation !== null) { resource.creation().then((resource_instance) => { resource_object = resource_instance; - if (resource.name == 'projects') { - cy.waitEdaProjectSync(resource_instance); + if (resource.name === 'projects') { + cy.waitEdaProjectSync(resource_instance as EdaProject); } }); } @@ -67,7 +65,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { @@ -99,16 +97,16 @@ user_team_access_tab_resources.forEach((resource) => { | EdaProject | EdaDecisionEnvironment | EdaRulebookActivation - | EdaCredential; + | EdaCredential + | EdaCredentialType; let edaUser1: EdaUser; let edaUser2: EdaUser; let edaUser3: EdaUser; before(() => { cy.edaLogin(); // If the resource is a RBA, create all dependency resources, else just the one resource - if (resource.name == 'rulebook-activations') { + if (resource.name === 'rulebook-activations') { let edaProject: EdaProject; - let edaDecisionEnvironment: EdaDecisionEnvironment; let edaRuleBook: EdaRulebook; cy.createEdaProject().then((project) => { edaProject = project; @@ -116,7 +114,6 @@ user_team_access_tab_resources.forEach((resource) => { cy.getEdaRulebooks(edaProject, 'hello_echo.yml').then((edaRuleBooks) => { edaRuleBook = edaRuleBooks[0]; cy.createEdaDecisionEnvironment().then((decisionEnvironment) => { - edaDecisionEnvironment = decisionEnvironment; cy.createEdaRulebookActivation({ rulebook_id: edaRuleBook.id, decision_environment_id: decisionEnvironment.id, @@ -128,11 +125,11 @@ user_team_access_tab_resources.forEach((resource) => { }); }); }); - } else { + } else if (resource.creation !== null) { resource.creation().then((resource_instance) => { resource_object = resource_instance; - if (resource.name == 'projects') { - cy.waitEdaProjectSync(resource_object); + if (resource.name === 'projects') { + cy.waitEdaProjectSync(resource_object as EdaProject); } }); } @@ -183,7 +180,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { @@ -204,7 +201,7 @@ user_team_access_tab_resources.forEach((resource) => { cy.navigateTo('eda', resource.name); // filter resource by name not available for decision environment // or credential type - if (resource.name == 'decision-environments' || resource.name == 'credential-types') { + if (resource.name === 'decision-environments' || resource.name === 'credential-types') { cy.get('[data-cy="table-view"]').click(); cy.clickTableRow(resource_object.name, false); } else { diff --git a/cypress/support/commands.d.ts b/cypress/support/commands.d.ts index eeba2a19c7..cd3b527be9 100644 --- a/cypress/support/commands.d.ts +++ b/cypress/support/commands.d.ts @@ -41,6 +41,7 @@ import { import { EdaUser, EdaUserCreateUpdate } from '../../frontend/eda/interfaces/EdaUser'; import { EdaTeam } from '../../frontend/eda/interfaces/EdaTeam'; import { RoleDetail } from '../../frontend/eda/interfaces/EdaRole'; +import { EdaRbacRole } from '../../frontend/eda/interfaces/EdaRbacRole'; import { Role as HubRole } from '../../frontend/hub/access/roles/Role'; import { RemoteRegistry } from '../../frontend/hub/administration/remote-registries/RemoteRegistry'; import { HubRemote } from '../../frontend/hub/administration/remotes/Remotes'; @@ -1318,7 +1319,7 @@ declare global { */ deleteEdaCredentialType(delete_cred_type: EdaCredentialType): Chainable; - getEdaRoles(content_type__model?: string): Chainable; + getEdaRoles(content_type__model?: string): Chainable; /** * Creates an EDA user and returns the same. * diff --git a/cypress/support/constants.ts b/cypress/support/constants.ts index 7ab82a2ef6..4f02e8853b 100644 --- a/cypress/support/constants.ts +++ b/cypress/support/constants.ts @@ -1,3 +1,9 @@ +import { EdaCredential } from '../../frontend/eda/interfaces/EdaCredential'; +import { EdaDecisionEnvironment } from '../../frontend/eda/interfaces/EdaDecisionEnvironment'; +import { EdaProject } from '../../frontend/eda/interfaces/EdaProject'; +import { EdaRulebookActivation } from '../../frontend/eda/interfaces/EdaRulebookActivation'; +import { EdaCredentialType } from '../../frontend/eda/interfaces/EdaCredentialType'; + export enum SERVER_NAME { AWX_SERVER = 'AWX Ansible Server', EDA_SERVER = 'Event Driven Automation Server', @@ -5,40 +11,56 @@ export enum SERVER_NAME { GALAXY_SERVER = 'Galaxy Server', } -export const user_team_access_tab_resources = [ +type ResourceObject = + | EdaProject + | EdaDecisionEnvironment + | EdaRulebookActivation + | EdaCredential + | EdaCredentialType; + +export interface AccessTabResource { + name: string; + content_type: string; + creation: (() => Cypress.Chainable) | null; + deletion: (resourceObject: ResourceObject) => Cypress.Chainable; + role: string; +} +export const user_team_access_tab_resources: AccessTabResource[] = [ { name: 'projects', content_type: 'eda.project', - creation: cy.createEdaProject, - deletion: cy.deleteEdaProject, + creation: () => cy.createEdaProject() as Cypress.Chainable, + deletion: (resourceObject) => cy.deleteEdaProject(resourceObject as EdaProject), role: 'Project Admin', }, { name: 'decision-environments', content_type: 'eda.project', - creation: cy.createEdaDecisionEnvironment, - deletion: cy.deleteEdaDecisionEnvironment, + creation: () => cy.createEdaDecisionEnvironment() as Cypress.Chainable, + deletion: (resourceObject) => + cy.deleteEdaDecisionEnvironment(resourceObject as EdaDecisionEnvironment), role: 'Decision Environment Admin', }, { name: 'rulebook-activations', content_type: 'eda.activation', - creation: cy.createEdaRulebookActivation, - deletion: cy.deleteEdaRulebookActivation, + creation: null, + deletion: (resourceObject) => + cy.deleteEdaRulebookActivation(resourceObject as EdaRulebookActivation), role: 'Activation Admin', }, { name: 'credentials', content_type: 'eda.edacredential', - creation: cy.createEdaCredential, - deletion: cy.deleteEdaCredential, + creation: () => cy.createEdaCredential() as Cypress.Chainable, + deletion: (resourceObject) => cy.deleteEdaCredential(resourceObject as EdaCredential), role: 'Eda Credential Admin', }, { name: 'credential-types', content_type: 'eda.credentialtype', - creation: cy.createEdaCredentialType, - deletion: cy.deleteEdaCredentialType, + creation: () => cy.createEdaCredentialType() as Cypress.Chainable, + deletion: (resourceObject) => cy.deleteEdaCredentialType(resourceObject as EdaCredentialType), role: 'Credential Type Admin', }, ]; diff --git a/cypress/support/interfaces.ts b/cypress/support/interfaces.ts new file mode 100644 index 0000000000..e69de29bb2