This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
IdHub_E2E_testing/tests/04-COMM-EnabledAndIssueFVC_...

138 lines
6.0 KiB
TypeScript

import { test, expect} from '@playwright/test'
import { loginAsAdmin, loginAsUser, gotoViewEnabledCredential, expectedCredentialSubjectForUser, testImportDataFile_SadPath, testImportDataFile_HappyPath } from '../src/steps';
import { ViewCredentialPage } from '../src/page-objects/US_ViewCredentialPage.js'
import { URL_IDHUB, USER1_EMAIL } from '../src/constants/env_constants';
import { ALERT_FILE_TO_IMPORT_IS_EMPTY, ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS, ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS, ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY, FILE_TO_IMPORT_FVC, FILE_TO_IMPORT_FVC_EMPTY, FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS, FILE_TO_IMPORT_FVC_WITH_REQUIRED_EMPTY, JSON_SCHEMA_FVC, SCHEMA_FVC, SCHEMA_TYPE_FVC } from '../src/constants/constants';
/**
* Checking Admin Data Section: view the lists of files imported, import data, ...
*/
test.describe('ADMIN-> DATA Section Tests - Testing with Financial Vulnerability Credential', () => {
test.beforeEach(async ({ page }) => {
await loginAsAdmin(page, URL_IDHUB);
})
test.afterEach(async ({ page }) => {
await page.click('.logout');
await page.close();
})
/**
* Load an excel file - Happy Path
* Expected behavior: the file is loaded, the message:"The file was imported successfully!" is displayed,
* and the file appears in the imported files view.
*/
test('DATA -> Import data file - Happy path - Financial Vulnerability Credential ', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_FVC;
const jsonSchema = JSON_SCHEMA_FVC;
const schema = SCHEMA_FVC;
await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema);
});
/**
* Load an excel file - Sad Path:
* Try to load a well-formatted excel file but without data.
* Expected behavior: The error message: "The file you try to import is empty"
*/
test('DATA -> Import data file - Sad path (file well formatted but empty) - Financial Vulnerability Credential ', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_FVC_EMPTY;
const jsonSchema = JSON_SCHEMA_FVC;
const schema = SCHEMA_FVC;
const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_IS_EMPTY;
await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage);
});
/**
* Load an excel file - Sad Path:
* Try to load a bad formatted file, without required data.
*/
test('DATA -> Import data file - Sad path (bad formatted file, without required columns) - Financial Vulnerability Credential ', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS;
const jsonSchema = JSON_SCHEMA_FVC;
const schema = SCHEMA_FVC;
const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS;
await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage);
});
/**
* Load an excel file - Sad Path:
* Try to load a bad formatted file, with alien columns.
* Expected behavior: The error message: "line 2: Additional properties are not allowed ('alien1', 'alien2' were unexpected)"
*/
test('DATA -> Import data file - Sad path (bad formatted file, with alien columns) - Financial Vulnerability Credential ', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS;
const jsonSchema = JSON_SCHEMA_FVC;
const schema = SCHEMA_FVC;
const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS;
await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage);
});
/**
* Load an excel file - Sad Path:
* Try to load a file bad formatted, with alien columns.
* Expected behavior: The error message: "line 3: 'firstName' is a required property"
*/
test('DATA -> Import data file - Sad path (file with required columns present but empty) - Financial Vulnerability Credential ', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_FVC_WITH_REQUIRED_EMPTY;
const jsonSchema = JSON_SCHEMA_FVC;
const schema = SCHEMA_FVC;
const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY;
await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage);
});
}) //end describe
test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND FINANCIAL VULNERABILITY CRED', () => {
test.beforeEach(async ({ page }) => {
await loginAsUser(page, USER1_EMAIL, URL_IDHUB);
})
test.afterEach(async ({ page }) => {
await page.click('.logout');
await page.close();
})
/**
* PRE-CONDITIONS: the admin has enabled a credential of type 'Financial Vulnerabitity' for USER1_EMAIL
* This is true, if the before test (DATA -> Import data- HAPPY PATH has been passed sucessfully)
* SUMMARY:
* - Check if the user1 can visualize the credentials that has been enabled in "My Credentials"
* - Check the fields displayed when user click "View" Credential
*/
test('USER Credentials -> My Credentials -> View enabled Financial Vulnerability Credential', async ({ page }) => {
// View the Financial Vulnerabilty Credential in status 'Enabled' for the user
await gotoViewEnabledCredential(page, SCHEMA_TYPE_FVC);
const enabledCredentialView = new ViewCredentialPage(page);
//Check that required fields exist and have a valid value in the current enabled credential
//Get the credential subject values of the credential visualized on the screen and compare to the model
let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_FVC);
let expectedCredential = await expectedCredentialSubjectForUser(USER1_EMAIL, SCHEMA_TYPE_FVC);
expect(actualCredential).toEqual(expectedCredential);
});
})