From fccd2c3b9c2acdc4c28463c4da476eb584316e79 Mon Sep 17 00:00:00 2001 From: StylusFrost Date: Tue, 21 Oct 2025 12:29:03 +0200 Subject: [PATCH] test(ui): enhance AWS and Azure provider tests with role-based credentials - Added tests for adding AWS providers with both static and role-based credentials, ensuring environment variables are validated. - Refactored Azure provider tests to include role-based credential handling and improved setup for test state management. - Updated test descriptions and tags for better clarity and organization. --- ui/tests/providers/providers.spec.ts | 430 ++++++++++++++------------- 1 file changed, 224 insertions(+), 206 deletions(-) diff --git a/ui/tests/providers/providers.spec.ts b/ui/tests/providers/providers.spec.ts index df70ca5d5e..88c44be5d6 100644 --- a/ui/tests/providers/providers.spec.ts +++ b/ui/tests/providers/providers.spec.ts @@ -7,235 +7,253 @@ import { AWS_CREDENTIAL_OPTIONS, AZUREProviderData, AZUREProviderCredential, - AZURE_CREDENTIAL_OPTIONS + AZURE_CREDENTIAL_OPTIONS, } from "./providers-page"; +test.describe.serial("Add Provider", () => { + test.describe("Add AWS Provider", () => { + // Providers page object + let providersPage: ProvidersPage; -test.describe.serial("Add AWS Provider", () => { + // Test data from environment variables + const accountId = process.env.E2E_AWS_PROVIDER_ACCOUNT_ID; + const accessKey = process.env.E2E_AWS_PROVIDER_ACCESS_KEY; + const secretKey = process.env.E2E_AWS_PROVIDER_SECRET_KEY; + const roleArn = process.env.E2E_AWS_PROVIDER_ROLE_ARN; - // Providers page object - let providersPage: ProvidersPage; + // Validate required environment variables + if (!accountId) { + throw new Error( + "E2E_AWS_PROVIDER_ACCOUNT_ID environment variable is not set", + ); + } - // Test data from environment variables - const accountId = process.env.E2E_AWS_PROVIDER_ACCOUNT_ID; - const accessKey = process.env.E2E_AWS_PROVIDER_ACCESS_KEY; - const secretKey = process.env.E2E_AWS_PROVIDER_SECRET_KEY; - const roleArn = process.env.E2E_AWS_PROVIDER_ROLE_ARN; + // Setup before each test + test.beforeEach(async ({ page }) => { + providersPage = new ProvidersPage(page); + // Clean up existing provider to ensure clean test state + await helpers.deleteProviderIfExists(page, accountId); + }); - // Validate required environment variables - if (!accountId) { - throw new Error( - "E2E_AWS_PROVIDER_ACCOUNT_ID environment variable is not set", + // Use admin authentication for provider management + test.use({ storageState: "playwright/.auth/admin_user.json" }); + + test( + "should add a new AWS provider with static credentials", + { + tag: [ + "@critical", + "@e2e", + "@providers", + "@aws", + "@serial", + "@PROVIDER-E2E-001", + ], + }, + async ({ page }) => { + // Validate required environment variables + if (!accountId || !accessKey || !secretKey) { + throw new Error( + "E2E_AWS_PROVIDER_ACCOUNT_ID, E2E_AWS_PROVIDER_ACCESS_KEY, and E2E_AWS_PROVIDER_SECRET_KEY environment variables are not set", + ); + } + + // Prepare test data for AWS provider + const awsProviderData: AWSProviderData = { + accountId: accountId, + alias: "Test E2E AWS Account - Credentials", + }; + + // Prepare static credentials + const staticCredentials: AWSProviderCredential = { + type: AWS_CREDENTIAL_OPTIONS.AWS_CREDENTIALS, + accessKeyId: accessKey, + secretAccessKey: secretKey, + }; + + // Navigate to providers page + await providersPage.goto(); + await providersPage.verifyPageLoaded(); + + // Start adding new provider + await providersPage.clickAddProvider(); + await providersPage.verifyConnectAccountPageLoaded(); + + // Select AWS provider + await providersPage.selectAWSProvider(); + + // Fill provider details + await providersPage.fillAWSProviderDetails(awsProviderData); + await providersPage.clickNext(); + + // Select static credentials type + await providersPage.selectCredentialsType( + AWS_CREDENTIAL_OPTIONS.AWS_CREDENTIALS, + ); + await providersPage.verifyCredentialsPageLoaded(); + + // Fill static credentials + await providersPage.fillStaticCredentials(staticCredentials); + await providersPage.clickNext(); + + // Launch scan + await providersPage.verifyLaunchScanPageLoaded(); + await providersPage.clickNext(); + + // Wait for redirect to provider page + await providersPage.verifyLoadProviderPageAfterNewProvider(); + }, ); - } - // Setup before each test - test.beforeEach(async ({ page }) => { - providersPage = new ProvidersPage(page); - // Clean up existing provider to ensure clean test state - await helpers.deleteProviderIfExists(page, accountId); + test( + "should add a new AWS provider with assume role credentials with Access Key and Secret Key", + { + tag: [ + "@critical", + "@e2e", + "@providers", + "@aws", + "@serial", + "@PROVIDER-E2E-002", + ], + }, + async ({ page }) => { + // Validate required environment variables + if (!accountId || !accessKey || !secretKey || !roleArn) { + throw new Error( + "E2E_AWS_PROVIDER_ACCOUNT_ID, E2E_AWS_PROVIDER_ACCESS_KEY, E2E_AWS_PROVIDER_SECRET_KEY, and E2E_AWS_PROVIDER_ROLE_ARN environment variables are not set", + ); + } + + // Prepare test data for AWS provider + const awsProviderData: AWSProviderData = { + accountId: accountId, + alias: "Test E2E AWS Account - Credentials", + }; + + // Prepare role-based credentials + const roleCredentials: AWSProviderCredential = { + type: AWS_CREDENTIAL_OPTIONS.AWS_ROLE_ARN, + accessKeyId: accessKey, + secretAccessKey: secretKey, + roleArn: roleArn, + }; + + // Navigate to providers page + await providersPage.goto(); + await providersPage.verifyPageLoaded(); + + // Start adding new provider + await providersPage.clickAddProvider(); + await providersPage.verifyConnectAccountPageLoaded(); + + // Select AWS provider + await providersPage.selectAWSProvider(); + + // Fill provider details + await providersPage.fillAWSProviderDetails(awsProviderData); + await providersPage.clickNext(); + + // Select role credentials type + await providersPage.selectCredentialsType( + AWS_CREDENTIAL_OPTIONS.AWS_ROLE_ARN, + ); + await providersPage.verifyCredentialsPageLoaded(); + + // Fill role credentials + await providersPage.fillRoleCredentials(roleCredentials); + await providersPage.clickNext(); + + // Launch scan + await providersPage.verifyLaunchScanPageLoaded(); + await providersPage.clickNext(); + + // Wait for redirect to provider page + await providersPage.verifyLoadProviderPageAfterNewProvider(); + }, + ); }); - // Use admin authentication for provider management - test.use({ storageState: "playwright/.auth/admin_user.json" }); + test.describe("Add AZURE Provider", () => { + // Providers page object + let providersPage: ProvidersPage; + // Test data from environment variables + const subscriptionId = process.env.E2E_AZURE_SUBSCRIPTION_ID; + const clientId = process.env.E2E_AZURE_CLIENT_ID; + const clientSecret = process.env.E2E_AZURE_SECRET_ID; + const tenantId = process.env.E2E_AZURE_TENANT_ID; - test( - "should add a new AWS provider with static credentials", - { - tag: ["@critical", "@e2e", "@providers", "@aws", "@serial", "@PROVIDER-E2E-001"], - }, - async ({ page }) => { - - // Validate required environment variables - if (!accountId || !accessKey || !secretKey) { - throw new Error( - "E2E_AWS_PROVIDER_ACCOUNT_ID, E2E_AWS_PROVIDER_ACCESS_KEY, and E2E_AWS_PROVIDER_SECRET_KEY environment variables are not set", - ); - } - - // Prepare test data for AWS provider - const awsProviderData: AWSProviderData = { - accountId: accountId, - alias: "Test E2E AWS Account - Credentials", - }; - - // Prepare static credentials - const staticCredentials: AWSProviderCredential = { - type: AWS_CREDENTIAL_OPTIONS.AWS_CREDENTIALS, - accessKeyId: accessKey, - secretAccessKey: secretKey, - }; - - // Navigate to providers page - await providersPage.goto(); - await providersPage.verifyPageLoaded(); - - // Start adding new provider - await providersPage.clickAddProvider(); - await providersPage.verifyConnectAccountPageLoaded(); - - // Select AWS provider - await providersPage.selectAWSProvider(); - - // Fill provider details - await providersPage.fillAWSProviderDetails(awsProviderData); - await providersPage.clickNext(); - - // Select static credentials type - await providersPage.selectCredentialsType(AWS_CREDENTIAL_OPTIONS.AWS_CREDENTIALS); - await providersPage.verifyCredentialsPageLoaded(); - - // Fill static credentials - await providersPage.fillStaticCredentials(staticCredentials); - await providersPage.clickNext(); - - // Launch scan - await providersPage.verifyLaunchScanPageLoaded(); - await providersPage.clickNext(); - - // Wait for redirect to provider page - await providersPage.verifyLoadProviderPageAfterNewProvider(); + // Validate required environment variables + if (!subscriptionId || !clientId || !clientSecret || !tenantId) { + throw new Error( + "E2E_AZURE_SUBSCRIPTION_ID, E2E_AZURE_CLIENT_ID, E2E_AZURE_SECRET_ID, and E2E_AZURE_TENANT_ID environment variables are not set", + ); } - ) - test( - "should add a new AWS provider with assume role credentials with Access Key and Secret Key", - { - tag: ["@critical", "@e2e", "@providers", "@aws","@serial", "@PROVIDER-E2E-002"], - }, - async ({ page }) => { + // Setup before each test + test.beforeEach(async ({ page }) => { + providersPage = new ProvidersPage(page); + // Clean up existing provider to ensure clean test state + await helpers.deleteProviderIfExists(page, subscriptionId); + }); - // Validate required environment variables - if (!accountId || !accessKey || !secretKey || !roleArn) { - throw new Error( - "E2E_AWS_PROVIDER_ACCOUNT_ID, E2E_AWS_PROVIDER_ACCESS_KEY, E2E_AWS_PROVIDER_SECRET_KEY, and E2E_AWS_PROVIDER_ROLE_ARN environment variables are not set", - ); - } + // Use admin authentication for provider management + test.use({ storageState: "playwright/.auth/admin_user.json" }); - // Prepare test data for AWS provider - const awsProviderData: AWSProviderData = { - accountId: accountId, - alias: "Test E2E AWS Account - Credentials", - }; + test( + "should add a new Azure provider with static credentials", + { + tag: [ + "@critical", + "@e2e", + "@providers", + "@azure", + "@serial", + "@PROVIDER-E2E-003", + ], + }, + async ({ page }) => { + // Prepare test data for AZURE provider + const azureProviderData: AZUREProviderData = { + subscriptionId: subscriptionId, + alias: "Test E2E AZURE Account - Credentials", + }; - // Prepare role-based credentials - const roleCredentials: AWSProviderCredential = { - type: AWS_CREDENTIAL_OPTIONS.AWS_ROLE_ARN, - accessKeyId: accessKey, - secretAccessKey: secretKey, - roleArn: roleArn, - }; + // Prepare static credentials + const azureCredentials: AZUREProviderCredential = { + type: AZURE_CREDENTIAL_OPTIONS.AZURE_CREDENTIALS, + clientId: clientId, + clientSecret: clientSecret, + tenantId: tenantId, + }; - // Navigate to providers page - await providersPage.goto(); - await providersPage.verifyPageLoaded(); + // Navigate to providers page + await providersPage.goto(); + await providersPage.verifyPageLoaded(); - // Start adding new provider - await providersPage.clickAddProvider(); - await providersPage.verifyConnectAccountPageLoaded(); + // Start adding new provider + await providersPage.clickAddProvider(); + await providersPage.verifyConnectAccountPageLoaded(); - // Select AWS provider - await providersPage.selectAWSProvider(); + // Select AZURE provider + await providersPage.selectAZUREProvider(); - // Fill provider details - await providersPage.fillAWSProviderDetails(awsProviderData); - await providersPage.clickNext(); + // Fill provider details + await providersPage.fillAZUREProviderDetails(azureProviderData); + await providersPage.clickNext(); - // Select role credentials type - await providersPage.selectCredentialsType(AWS_CREDENTIAL_OPTIONS.AWS_ROLE_ARN); - await providersPage.verifyCredentialsPageLoaded(); + // Fill static credentials details + await providersPage.fillAZURECredentials(azureCredentials); + await providersPage.clickNext(); - // Fill role credentials - await providersPage.fillRoleCredentials(roleCredentials); - await providersPage.clickNext(); + // Launch scan + await providersPage.verifyLaunchScanPageLoaded(); + await providersPage.clickNext(); - // Launch scan - await providersPage.verifyLaunchScanPageLoaded(); - await providersPage.clickNext(); - - // Wait for redirect to provider page - await providersPage.verifyLoadProviderPageAfterNewProvider(); - } - ); -}); - - -test.describe.serial("Add AZURE Provider", () => { - - // Providers page object - let providersPage: ProvidersPage; - - // Test data from environment variables - const subscriptionId= process.env.E2E_AZURE_SUBSCRIPTION_ID; - const clientId= process.env.E2E_AZURE_CLIENT_ID - const clientSecret= process.env.E2E_AZURE_SECRET_ID - const tenantId= process.env.E2E_AZURE_TENANT_ID - - // Validate required environment variables - if (!subscriptionId || !clientId || !clientSecret || !tenantId) { - throw new Error( - "E2E_AZURE_SUBSCRIPTION_ID, E2E_AZURE_CLIENT_ID, E2E_AZURE_SECRET_ID, and E2E_AZURE_TENANT_ID environment variables are not set", + // Wait for redirect to provider page + await providersPage.verifyLoadProviderPageAfterNewProvider(); + }, ); - } - - // Setup before each test - test.beforeEach(async ({ page }) => { - providersPage = new ProvidersPage(page); - // Clean up existing provider to ensure clean test state - await helpers.deleteProviderIfExists(page, subscriptionId); }); - - // Use admin authentication for provider management - test.use({ storageState: "playwright/.auth/admin_user.json" }); - - - test( - "should add a new Azure provider with static credentials", - { - tag: ["@critical", "@e2e", "@providers", "@azure", "@serial", "@PROVIDER-E2E-003"], - }, - async ({ page }) => { - - // Prepare test data for AZURE provider - const azureProviderData: AZUREProviderData = { - subscriptionId:subscriptionId, - alias: "Test E2E AZURE Account - Credentials", - }; - - // Prepare static credentials - const azureCredentials: AZUREProviderCredential = { - type: AZURE_CREDENTIAL_OPTIONS.AZURE_CREDENTIALS, - clientId: clientId, - clientSecret: clientSecret, - tenantId: tenantId, - }; - - // Navigate to providers page - await providersPage.goto(); - await providersPage.verifyPageLoaded(); - - // Start adding new provider - await providersPage.clickAddProvider(); - await providersPage.verifyConnectAccountPageLoaded(); - - // Select AZURE provider - await providersPage.selectAZUREProvider(); - - // Fill provider details - await providersPage.fillAZUREProviderDetails(azureProviderData); - await providersPage.clickNext(); - - // Fill static credentials details - await providersPage.fillAZURECredentials(azureCredentials); - await providersPage.clickNext(); - - // Launch scan - await providersPage.verifyLaunchScanPageLoaded(); - await providersPage.clickNext(); - - // Wait for redirect to provider page - await providersPage.verifyLoadProviderPageAfterNewProvider(); - } - ) -}); +});