From d43f893c74b56225dc62f59c2030cb6f1470a8d8 Mon Sep 17 00:00:00 2001 From: mildred Date: Mon, 25 Mar 2024 12:31:43 +0100 Subject: [PATCH] Adding test for all types of credentials --- src/constants/constants.ts | 97 ++++-- src/constants/credential_fields.ts | 85 +++-- src/constants/env_constants.ts | 6 + src/data_stores/credentials_data_store.ts | 323 +++++++++++++++++- ...al_financial_vulnerability_credential.json | 80 ----- ...ed_financial_vulnerability_credential-json | 69 ---- ...aInitialization.ts => users_data_store.ts} | 0 src/interfaces/credential_interfaces.ts | 12 +- .../AD_BasicUserInfoSectionInPage.ts | 2 - src/page-objects/AD_ImportDataPage.ts | 1 - src/page-objects/AD_ImportTemplatePage.ts | 1 - src/page-objects/AD_TemplatesPage.ts | 7 - .../AD_UserPersonalInformationPage.ts | 3 - src/page-objects/AD_ViewImportedDataPage.ts | 1 - src/page-objects/AD_ViewUsersPage.ts | 1 - src/page-objects/US_ViewCredentialPage.ts | 97 +++--- src/steps.ts | 127 ++++++- tests/01-AD-leftmenuNavigation.spec.ts | 4 + tests/02-AD-manageUsers.spec.ts | 6 +- tests/03-AD-templates.spec.ts | 8 +- ...COMM-EnabledAndIssueFVC_Credential.spec.ts | 242 ++++--------- ...-COMM-EnabledAndIssueMC_Credential.spec.ts | 140 ++++++++ tests/06-COMM-EnabledAndIssueNGO_FED.spec.ts | 133 ++++++++ ...-COMM-EnabledAndIssueCC_Credential.spec.ts | 133 ++++++++ ...OMM-EnabledAndIssue_EOC_Credential.spec.ts | 136 ++++++++ .../course-credential-with-alien-columns.xlsx | Bin 0 -> 13826 bytes ...course-credential-with-required-empty.xlsx | Bin 0 -> 13357 bytes ...e-credential-without-required-columns.xlsx | Bin 0 -> 13262 bytes vc_excel/course-credential.xlsx | Bin 8758 -> 13744 bytes .../e-operator-claim-with-alien-columns.xlsx | Bin 0 -> 12710 bytes .../e-operator-claim-with-required-empty.xlsx | Bin 0 -> 12624 bytes ...erator-claim-without-required-columns.xlsx | Bin 0 -> 12518 bytes vc_excel/e-operator-claim.xlsx | Bin 7956 -> 12621 bytes vc_excel/federation-membership-empty.xlsx | Bin 8606 -> 12666 bytes ...eration-membership-with-alien-columns.xlsx | Bin 0 -> 13895 bytes ...ration-membership-with-required-empty.xlsx | Bin 0 -> 13819 bytes ...n-membership-with-some-optional-empty.xlsx | Bin 0 -> 13828 bytes ...n-membership-without-required-columns.xlsx | Bin 0 -> 13532 bytes vc_excel/federation-membership.xlsx | Bin 8606 -> 13831 bytes vc_excel/federation-membership2.xlsx | Bin 0 -> 13822 bytes .../financial-vulnerability-empty887.xlsx | Bin 0 -> 8290 bytes ...ial-vulnerability-with-required-empty.xlsx | Bin 12507 -> 12556 bytes ...erability-without-required-columns684.xlsx | Bin 0 -> 12434 bytes .../membership-card-with-alien-columns.xlsx | Bin 0 -> 12930 bytes .../membership-card-with-required-empty.xlsx | Bin 0 -> 12501 bytes ...bership-card-with-some-optional-empty.xlsx | Bin 0 -> 12783 bytes ...bership-card-without-required-columns.xlsx | Bin 0 -> 12556 bytes vc_excel/membership-card.xlsx | Bin 12362 -> 12794 bytes vc_excel/membership-card2.xlsx | Bin 0 -> 12797 bytes 49 files changed, 1248 insertions(+), 466 deletions(-) delete mode 100644 src/data_stores/jsons/_actual_financial_vulnerability_credential.json delete mode 100644 src/data_stores/jsons/_expected_financial_vulnerability_credential-json rename src/data_stores/{usersDataInitialization.ts => users_data_store.ts} (100%) create mode 100644 tests/05-COMM-EnabledAndIssueMC_Credential.spec.ts create mode 100644 tests/06-COMM-EnabledAndIssueNGO_FED.spec.ts create mode 100644 tests/07-COMM-EnabledAndIssueCC_Credential.spec.ts create mode 100644 tests/08-COMM-EnabledAndIssue_EOC_Credential.spec.ts create mode 100644 vc_excel/course-credential-with-alien-columns.xlsx create mode 100644 vc_excel/course-credential-with-required-empty.xlsx create mode 100644 vc_excel/course-credential-without-required-columns.xlsx create mode 100644 vc_excel/e-operator-claim-with-alien-columns.xlsx create mode 100644 vc_excel/e-operator-claim-with-required-empty.xlsx create mode 100644 vc_excel/e-operator-claim-without-required-columns.xlsx create mode 100644 vc_excel/federation-membership-with-alien-columns.xlsx create mode 100644 vc_excel/federation-membership-with-required-empty.xlsx create mode 100644 vc_excel/federation-membership-with-some-optional-empty.xlsx create mode 100644 vc_excel/federation-membership-without-required-columns.xlsx create mode 100644 vc_excel/federation-membership2.xlsx create mode 100644 vc_excel/financial-vulnerability-empty887.xlsx create mode 100644 vc_excel/financial-vulnerability-without-required-columns684.xlsx create mode 100644 vc_excel/membership-card-with-alien-columns.xlsx create mode 100644 vc_excel/membership-card-with-required-empty.xlsx create mode 100644 vc_excel/membership-card-with-some-optional-empty.xlsx create mode 100644 vc_excel/membership-card-without-required-columns.xlsx create mode 100644 vc_excel/membership-card2.xlsx diff --git a/src/constants/constants.ts b/src/constants/constants.ts index 246c852..0281e7c 100644 --- a/src/constants/constants.ts +++ b/src/constants/constants.ts @@ -1,44 +1,71 @@ -/*Constants for TEMPLATES testing*/ - -//JSON_SCHEMA_FVC: A string representing the filename of the financial vulnerability JSON schema. -export const JSON_SCHEMA_FVC = "financial-vulnerability.json" - -//JSON_SCHEMA_ID_FVC: A URL pointing to the online location of the financial vulnerability JSON schema. -export const JSON_SCHEMA_ID_FVC = "https://idhub.pangea.org/vc_schemas/financial-vulnerability.json" - -/*Files used in DATA IMPORT testing*/ - //PATH_FILES_TO_IMPORT: A string representing the path to the directory where Excel files are located for data import testing. export const PATH_FILES_TO_IMPORT = '/vc_excel/' -//Financial Vulnerability Credential +//JSON_SCHEMA: A string representing the filename of the credential JSON schema. +export const JSON_SCHEMA_FVC = "financial-vulnerability.json" +export const JSON_SCHEMA_MC = "membership-card.json" +export const JSON_SCHEMA_NGO_FM = "federation-membership.json" +export const JSON_SCHEMA_CC = "course-credential.json" +export const JSON_SCHEMA_EOC = "e-operator-claim.json" + + +//JSON_SCHEMA_ID: A URL pointing to the online location of the financial vulnerability JSON schema. +export const JSON_SCHEMA_ID_FVC = "https://idhub.pangea.org/vc_schemas/financial-vulnerability.json" +export const JSON_SCHEMA_ID_MC = "https://idhub.pangea.org/vc_schemas/membership-card.json" +export const JSON_SCHEMA_ID_NGO_FM = "https://idhub.pangea.org/vc_schemas/federation-membership.json" +export const JSON_SCHEMA_ID_CC = "https://idhub.pangea.org/vc_schemas/course-credential.json" +export const JSON_SCHEMA_ID_EOC = "https://idhub.pangea.org/vc_schemas/e-operator-claim.json" + +//Excel testing files +//FVC export const FILE_TO_IMPORT_FVC = 'financial-vulnerability.xlsx' export const FILE_TO_IMPORT_FVC_EMPTY = 'financial-vulnerability-empty.xlsx' export const FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS = 'financial-vulnerability-without-required-columns.xlsx' export const FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS = 'financial-vulnerability-with-alien-columns.xlsx' +export const FILE_TO_IMPORT_FVC_WITH_REQUIRED_EMPTY = 'financial-vulnerability-with-required-empty.xlsx' -//"Schema name" as appears in the Idhub User interface for FVC +//MC +export const FILE_TO_IMPORT_MC = 'membership-card.xlsx' +export const FILE_TO_IMPORT_MC_2 = 'membership-card2.xlsx' +export const FILE_TO_IMPORT_MC_EMPTY = 'membership-card-empty.xlsx' +export const FILE_TO_IMPORT_MC_WITHOUT_REQUIRED_COLUMNS = 'membership-card-without-required-columns.xlsx' +export const FILE_TO_IMPORT_MC_WITH_ALIEN_COLUMNS = 'membership-card-with-alien-columns.xlsx' +export const FILE_TO_IMPORT_MC_WITH_REQUIRED_EMPTY = 'membership-card-with-required-empty.xlsx' + +//NGO FEDERATION MEMBERSHIP +export const FILE_TO_IMPORT_NGO_FM = 'federation-membership.xlsx' +export const FILE_TO_IMPORT_NGO_FM_EMPTY = 'federation-membership-empty.xlsx' +export const FILE_TO_IMPORT_NGO_FM_WITHOUT_REQUIRED_COLUMNS = 'federation-membership-without-required-columns.xlsx' +export const FILE_TO_IMPORT_NGO_FM_WITH_ALIEN_COLUMNS = 'federation-membership-with-alien-columns.xlsx' +export const FILE_TO_IMPORT_NGO_FM_WITH_REQUIRED_EMPTY = 'federation-membership-with-required-empty.xlsx' + +//CC +export const FILE_TO_IMPORT_CC = 'course-credential.xlsx' +export const FILE_TO_IMPORT_CC_EMPTY = 'course-credential-empty.xlsx' +export const FILE_TO_IMPORT_CC_WITHOUT_REQUIRED_COLUMNS = 'course-credential-without-required-columns.xlsx' +export const FILE_TO_IMPORT_CC_WITH_ALIEN_COLUMNS = 'course-credential-with-alien-columns.xlsx' +export const FILE_TO_IMPORT_CC_WITH_REQUIRED_EMPTY = 'course-credential-with-required-empty.xlsx' + +//E-OPERATOR-CLAIM +export const FILE_TO_IMPORT_EOC = 'e-operator-claim.xlsx' +export const FILE_TO_IMPORT_EOC_EMPTY = 'e-operator-claim-empty.xlsx' +export const FILE_TO_IMPORT_EOC_WITHOUT_REQUIRED_COLUMNS = 'e-operator-claim-without-required-columns.xlsx' +export const FILE_TO_IMPORT_EOC_WITH_ALIEN_COLUMNS = 'e-operator-claim-with-alien-columns.xlsx' +export const FILE_TO_IMPORT_EOC_WITH_REQUIRED_EMPTY = 'e-operator-claim-with-required-empty.xlsx' + +//"Schema name" as appears in the Idhub Admin interface Data->Import->combo schema export const SCHEMA_FVC = 'Financial Vulnerability Credential' - -//"Schema type" as appears in the Idhub User interface for FVC -export const SCHEMA_TYPE_FVC = 'FinancialVulnerabilityCredential' - - -//Membership Card -export const FILE_TO_IMPORT_MC = 'membership-card.xlsx'; export const SCHEMA_MC = 'Membership Card' -export const SCHEMA_TYPE_MC = 'MembershipCardCredential' //Revisar este valor en la interfaz - -//NGOFederationMembership -export const FILE_TO_IMPORT_FM = 'federation-membership.xlsx'; -export const SCHEMA_FM = 'Federation Membership' -export const SCHEMA_TYPE_FM = 'FederationMembership' //Revisar este valor en la interfaz (en Type) - -//Course Credential -export const FILE_TO_IMPORT_CC = 'course-credential.xlsx'; -export const SCHEMA_CC = 'Course Credential' -export const SCHEMA_TYPE_CC = 'CourseCredential' //Revisar este valor en la interfaz +export const SCHEMA_NGO_FM = 'NGO federation membership' +export const SCHEMA_CC = 'NGO Course Credential for participants' +export const SCHEMA_EOC = 'Product and waste electronics operator claim' +//"Schema type" as appears in the Idhub My wallet->My Credentials-> value on column 'type' +export const SCHEMA_TYPE_FVC = 'FinancialVulnerabilityCredential' +export const SCHEMA_TYPE_MC = 'MembershipCard' +export const SCHEMA_TYPE_NGO_FM = 'FederationMembership' +export const SCHEMA_TYPE_CC = 'CourseCredential' +export const SCHEMA_TYPE_EOC = 'EOperatorClaim' //Messages export const ALERT_FILE_IMPORTED_SUCCESSFULLY = "The file was imported successfully!" @@ -47,9 +74,17 @@ export const ALERT_FILE_TO_IMPORT_IS_EMPTY = "The file you try to import is empt export const ALERT_FILE_NOT_CORRESPOND_SCHEMA = "This File does not correspond to this scheme!" export const ALERT_FILE_IS_BADLY_FORMATTED = "This file is badly formatted!" export const ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS = "line 2: 'email' is a required property" +export const ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_MC = "line 2: 'affiliatedSince' is a required property" +export const ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_NGO_FM = "line 2: 'legalName' is a required property" +export const ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_CC = "line 2: 'firstName' is a required property" +export const ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_EOC = "line 2: 'legalName' is a required property" export const ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS = "line 2: Additional properties are not allowed ('alien1', 'alien2' were unexpected)" -export const ALERT_USER_CREATED_SUCESSFULLY_MESSAGE = 'The account was created successfully' +export const ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY = "line 3: 'firstName' is a required property" +export const ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_NGO_FM = "line 5: 'postCode' is a required property" +export const ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_EOC = "line 3: 'legalName' is a required property" + +export const ALERT_USER_CREATED_SUCESSFULLY_MESSAGE = 'The account was created successfully' export const ERROR_INCORRECT_EMAIL_PASSWORD = 'Please enter a correct Email address and password. Note that both fields may be case-sensitive.' diff --git a/src/constants/credential_fields.ts b/src/constants/credential_fields.ts index 39aa91e..55fcf7c 100644 --- a/src/constants/credential_fields.ts +++ b/src/constants/credential_fields.ts @@ -16,26 +16,71 @@ export const CREDENTIAL_TYPES_FIELDS_LIST = { 'assessmentDate' ] as string[], - - // TODO Add other type credentials... -}; - -export const CREDENTIAL_TYPES_REQUIRED_FIELDS_LIST = { - "FinancialVulnerabilityCredential": [ - "id", - "firstName", - "lastName", - "email", - "identityDocType", - "identityNumber", - "streetAddress", - "socialWorkerName", - "socialWorkerSurname", - "financialVulnerabilityScore", - "amountCoveredByOtherAids", - "assessmentDate" + "MembershipCard": [ + 'organisation', + 'membershipType', + 'membershipId', + 'affiliatedSince', + 'affiliatedUntil', + 'typeOfPerson', + 'identityDocType', + 'identityNumber', + 'firstName', + 'lastName', + 'role', + 'email' ] as string[], + "FederationMembership": [ + 'federation', + 'legalName', + 'shortName', + 'registrationIdentifier', + 'publicRegistry', + 'streetAddress', + 'postCode', + 'city', + 'taxReference', + 'membershipType', + 'membershipStatus', + 'membershipId', + 'membershipSince', + 'email', + 'phone', + 'website', + 'evidence', + 'certificationDate', + ] as string[], + + "CourseCredential": [ + 'firstName', + 'lastName', + 'email', + 'personalIdentifier', + 'issuedDate', + 'modeOfInstruction', + 'courseDuration', + 'courseDays', + 'courseName', + 'courseDescription', + 'gradingScheme', + 'scoreAwarded', + 'qualificationAwarded', + 'courseLevel', + 'courseFramework', + 'courseCredits', + 'dateOfAssessment', + 'evidenceAssessment' + ] as string[], + + "EOperatorClaim": [ + 'legalName', + 'role', + 'email', + 'accreditedBy', + 'operatorNumber', + 'limitJurisdiction', + 'accreditedFor' + ] as string[], +}; - // TODO Add other type credentials... -}; \ No newline at end of file diff --git a/src/constants/env_constants.ts b/src/constants/env_constants.ts index c294edb..b292c87 100644 --- a/src/constants/env_constants.ts +++ b/src/constants/env_constants.ts @@ -3,9 +3,15 @@ export const ENCRYPTION_KEY = "1234" export const ADMIN_EMAIL = "idhub_admin@pangea.org" export const ADMIN_K = "1234" export const KO_ADMIN_K = "876" + +//export const URL_IDHUB = "https://idhub-autotest.demo.pangea.org" export const URL_IDHUB = "https://idhub1-autotest.demo.pangea.org" //export const URL_IDHUB = "https://idhub1-nightly.demo.pangea.org" +//2fa enabled +//export const URL_IDHUB = "https://idhub-nightly.demo.pangea.org" + + export const USER1_EMAIL = "user1@example.org" export const USER2_EMAIL = "user2@example.org" export const USER3_EMAIL = "user3@example.org" diff --git a/src/data_stores/credentials_data_store.ts b/src/data_stores/credentials_data_store.ts index 122e21f..20a3ddd 100644 --- a/src/data_stores/credentials_data_store.ts +++ b/src/data_stores/credentials_data_store.ts @@ -1,12 +1,11 @@ -import { CourseCredential_fields, FinancialVulnerabilityCredential_fields, MembershipCard_fields, NGOFederationMembership_fields } from "../interfaces/credential_interfaces"; // List of entries in data store for the different types of credentials export const CREDENTIAL_TYPES_DATA_STORE = { - FinancialVulnerabilityCredential_data: [] as FinancialVulnerabilityCredential_fields[], - MembershipCard_data: [] as MembershipCard_fields[], - NGOFederationMembership_data: [] as NGOFederationMembership_fields[], - CourseCredential_data: [] as CourseCredential_fields[], - //TODO añadir otros tipos de credenciales + FinancialVulnerabilityCredential_data: [] as Record, + MembershipCard_data: [] as Record, + FederationMembership_data: [] as Record, + CourseCredential_data: [] as Record, + EOperatorClaim_data: [] as Record }; //Testing data for financialVulnerabilityCredential @@ -72,21 +71,252 @@ CREDENTIAL_TYPES_DATA_STORE.FinancialVulnerabilityCredential_data = [{ } ]; +//Testing data for Membership Card + CREDENTIAL_TYPES_DATA_STORE.MembershipCard_data = [ - //TODO: fill with data + { + organisation: "Pangea", + membershipType: "Employee", + membershipId: "1234", + affiliatedSince: "2019-01-01", + affiliatedUntil: "2025-01-01", + typeOfPerson: "natural", + identityDocType: "DNI", + identityNumber: "89898987A", + firstName: "Wolfgang Amadeus", + lastName: "Mozart", + role: "Conductor", + email: "user1@example.org" + }, + { + organisation: "Pangea", + membershipType: "Employee", + membershipId: "2345", + affiliatedSince: "2020-01-01", + typeOfPerson: "natural", + identityDocType: "NIE", + identityNumber: "23456789P", + firstName: "Ludwing Van", + lastName: "Beethoven", + role: "Composer", + email: "user2@example.org" + }, + { + organisation: "Pangea", + membershipType: "Employee", + membershipId: "2312", + affiliatedSince: "2021-01-01", + affiliatedUntil: "2026-01-01", + typeOfPerson: "natural", + identityDocType: "DNI", + identityNumber: "87665566D", + firstName: "Franz", + lastName: "Schubert", + role: "Chamber musician", + email: "user3@example.org" + }, + { + organisation: "Pangea", + membershipType: "Employee", + membershipId: "3212", + affiliatedSince: "2021-01-01", + affiliatedUntil: "2026-01-01", + typeOfPerson: "natural", + identityDocType: "NIE", + identityNumber: "87654567", + firstName: "Barbara", + lastName: "Strozzi", + role: "Composer and Singer", + email: "user4@example.org" + }, + { + organisation: "Pangea", + membershipType: "Employee", + membershipId: "4544", + affiliatedSince: "2021-01-02", + affiliatedUntil: "2026-01-01", + typeOfPerson: "natural", + identityDocType: "DNI", + identityNumber: "98765432", + firstName: "Clara", + lastName: "Schumann", + role: "Composer and Pianist", + email: "user5@example.org" + } ]; -CREDENTIAL_TYPES_DATA_STORE.NGOFederationMembership_data = [ - //TODO: fill with data +CREDENTIAL_TYPES_DATA_STORE.FederationMembership_data = [ + { + federation: "Lafede", + legalName: "ACCIÓ CONTRA LA FAM", + shortName: "ACCIÓ CONTRA LA FAM", + registrationIdentifier: "28-0968", + publicRegistry: "Registro del Protectorado de Fundaciones del Ministerio de Asuntos Sociales", + streetAddress: "c/Diputació, 180, 3B", + postCode: "08011", + city: "Barcelona", + taxReference: "G-81164105", + membershipType: "full", + membershipStatus: "active", + membershipId: "1234", + membershipSince: "2010-01-01", + email: "user1@example.org", + phone: "93 254 03 81", + website: "https://www.acciocontralafam.org", + certificationDate: "2024-02-02", + }, + { + federation: "Lafede", + legalName: "ACNUR CATALUNYA – COMITÈ CATALÀ PER ALS REFUGIATS", + shortName: "UNHCR ACNUR", + registrationIdentifier: "130.446", + publicRegistry: "Registro del Protectorado de Fundaciones del Ministerio de Asuntos Sociales", + streetAddress: "c/ Trafalgar, 6. Principal 3ª", + postCode: "08001", + city: "Barcelona", + taxReference: "G80757560", + membershipType: "observer", + membershipStatus: "active", + membershipId: "2345", + membershipSince: "2010-01-01", + email: "user2@example.org", + website: "https://www.eacnur.org", + certificationDate: "2024-02-02", + }, + { + federation: "Lafede", + legalName: "AMNISTIA INTERNACIONAL CATALUNYA", + shortName: "AMNISTIA INTERNACIONAL", + registrationIdentifier: "22729", + publicRegistry: "Registro del Protectorado de Fundaciones del Ministerio de Asuntos Sociales", + streetAddress: "Alfons XII, 19-21, pral. 1A", + postCode: "08006", + city: "Barcelona", + membershipType: "observer", + membershipStatus: "active", + membershipId: "2345", + membershipSince: "2010-01-01", + email: "user3@example.org", + website: "https://www.amnistiacatalunya.org", + certificationDate: "2024-02-02", + }, + { + federation: "Lafede", + legalName: "ASSOCIACIÓ CATALANA D’ENGINYERIA SENSE FRONTERES", + shortName: "ENGINYERIA SENSE FRONTERES", + publicRegistry: "Registro del Protectorado de Fundaciones del Ministerio de Asuntos Sociales", + streetAddress: "Mandoni 4, Baixos,", + postCode: "08004", + city: "Barcelona", + membershipType: "full", + membershipStatus: "active", + membershipId: "4567", + membershipSince: "2010-01-01", + email: "user4@example.ort", + phone: "93 302 27 53", + website: "https://www.esf-cat.org", + certificationDate: "2024-02-02", + }, ]; + CREDENTIAL_TYPES_DATA_STORE.CourseCredential_data = [ - //TODO: fill with data + { + firstName: "Wolfgang Amadeus", + lastName: "Mozart", + email: "user1@example.org", + personalIdentifier: "1234", + issuedDate: "2022-09-22", + modeOfInstruction: "online", + courseDuration: "20", + courseDays: "5", + courseName: "How to write a great sonata", + courseDescription: "This course provides an in-depth exploration of sonata form, a structural framework that has been central to the development of Western classical music, particularly in the first movements of sonatas, symphonies, and string quartets.", + gradingScheme: "Grade Point Average (GPA)", + scoreAwarded: "10", + qualificationAwarded: "A+", + courseLevel: "Postgraduate", + courseFramework: "European Qualifications Framework (EQF) Level 6", + courseCredits: "5", + dateOfAssessment: "2020-12-20", + evidenceAssessment: "final exam" + }, + { + firstName: "Ludwing Van", + lastName: "Beethoven", + email: "user2@example.org", + personalIdentifier: "44334", + issuedDate: "2021-10-10", + modeOfInstruction: "onsite", + courseDuration: "10", + courseDays: "3", + courseName: "Modern piano", + courseDescription: "The Modern Piano course offers a comprehensive exploration of various styles of modern piano music, from the early 20th century to contemporary times.", + gradingScheme: "Grade Point Average (GPA)", + scoreAwarded: "9", + qualificationAwarded: "A", + courseLevel: "Undergraduate", + courseCredits: "7", + dateOfAssessment: "2020-12-20", + evidenceAssessment: "presence" + }, + { + firstName: "Barbara", + lastName: "Strozzi", + email: "user4@example.org", + personalIdentifier: "45454K", + issuedDate: "2019-05-05", + modeOfInstruction: "online", + courseDuration: "20", + courseDays: "5", + courseName: "Opera", + courseDescription: "The Opera course offers a comprehensive exploration of opera as an art form, from its historical origins to its contemporary expressions.", + scoreAwarded: "9", + qualificationAwarded: "A", + courseLevel: "Postgraduate", + courseFramework: "Classical music", + courseCredits: "10", + dateOfAssessment: "2020-12-20", + evidenceAssessment: "presence" + } ]; - +CREDENTIAL_TYPES_DATA_STORE.EOperatorClaim_data = [ + { + legalName: "Recicladors associats", + role: "Gestor de residus RAEE", + email: "user1@example.org", + accreditedBy: "Agència de residus de Catalunya", + operatorNumber: "E-1111.22", + limitJurisdiction: "Catalunya", + accreditedFor: "CLASSIFICACIÓ DE FERRALLA, RES. VOLUMINOSOS, DESMUNTATGE DE RAEE I PREPARACIÓ PER A LA REUTILITZACIÓ DE RESIDUS DE ROBA I DE RAEE. TRANSFERÈNCIA DE RESIDUS P I NP (INCLÒS RAEE)", + }, + { + legalName: "GSP", + role: "Gestor de residus RAEE", + email: "user2@example.org", + accreditedBy: "Agència de residus de Catalunya", + operatorNumber: "E-1555.14", + limitJurisdiction: "Catalunya", + accreditedFor: "CLASSIF. FERRALLA, CARTRÓ PLÀSTIC I FUSTA, CLASSIF., TRITURACIÓ DE CABLE, CLASSIFICACIÓ, DESMUNTATGE RAEE (FR 2,3,4,5,6), PREPARACIO PER A LA REUTILITZACIÓ DE RAEE (FR 1,2,4,5,6,7) ALTRES ACTIVITATS SEGONS LLIC. AMBIENTAL DE 25/02/16 I DE 28/1/2022", + }, + { + legalName: "Reutilitza", + role: "Gestor de residus RAEE", + email: "user3@example.org", + accreditedBy: "Agència de residus de Catalunya", + operatorNumber: "E-0000.12", + limitJurisdiction: "Catalunya", + accreditedFor: "RECUPERACIÓ DE RAEE NO PERILLOSOS MITJANÇANT CLASSIFICACIÓ I REPARACIÓ (PREPARACIÓ PER LA REUTILITZACIÓ) I TRANSFERÈNCIA DE RAEE PERILLOSOS I NO PERILLOSOS I ALTRES SEGONS RELACIÓ.", + } +]; export const CREDENTIAL_TYPE_DATASTORE_UNDEFINED = { - FinancialVulnerabilityCredential_data_undefined: {} as FinancialVulnerabilityCredential_fields + FinancialVulnerabilityCredential_data_undefined: {} as Record, + MembershipCard_data_undefined: {} as Record, + FederationMembership_data_undefined: {} as Record, + CourseCredential_data_undefined: {} as Record, + EOperatorClaim_data_undefined: {} as Record + //TODO añadir otros tipos de credenciales } @@ -104,6 +334,73 @@ CREDENTIAL_TYPE_DATASTORE_UNDEFINED.FinancialVulnerabilityCredential_data_undefi financialVulnerabilityScore: 'undefined_data', amountCoveredByOtherAids: 'undefined_data', connectivityOptionList: 'undefined_data', - assessmentDate: 'undefined_data', + assessmentDate: 'undefined_data' +} + +CREDENTIAL_TYPE_DATASTORE_UNDEFINED.MembershipCard_data_undefined = { + organisation: 'undefined_data', + membershipType: 'undefined_data', + membershipId: 'undefined_data', + affiliatedSince: 'undefined_data', + affiliatedUntil: 'undefined_data', + typeOfPerson: 'undefined_data', + identityDocType: 'undefined_data', + identityNumber: 'undefined_data', + firstName: 'undefined_data', + lastName: 'undefined_data', + role: 'undefined_data', + email: 'undefined_data' +} + +CREDENTIAL_TYPE_DATASTORE_UNDEFINED.FederationMembership_data_undefined = { + federation: 'undefined_data', + legalName: 'undefined_data', + shortName: 'undefined_data', + registrationIdentifier: 'undefined_data', + publicRegistry: 'undefined_data', + streetAddress: 'undefined_data', + postCode: 'undefined_data', + city: 'undefined_data', + taxReference: 'undefined_data', + membershipType: 'undefined_data', + membershipStatus: 'undefined_data', + membershipId: 'undefined_data', + membershipSince: 'undefined_data', + email: 'undefined_data', + phone: 'undefined_data', + website: 'undefined_data', + evidence: 'undefined_data', + certificationDate: 'undefined_data' +} + +CREDENTIAL_TYPE_DATASTORE_UNDEFINED.CourseCredential_data_undefined = { + firstName: 'undefined_data', + lastName: 'undefined_data', + email: 'undefined_data', + personalIdentifier: 'undefined_data', + issuedDate: 'undefined_data', + modeOfInstruction: 'undefined_data', + courseDuration: 'undefined_data', + courseDays: 'undefined_data', + courseName: 'undefined_data', + courseDescription: 'undefined_data', + gradingScheme: 'undefined_data', + scoreAwarded: 'undefined_data', + qualificationAwarded: 'undefined_data', + courseLevel: 'undefined_data', + courseFramework: 'undefined_data', + courseCredits: 'undefined_data', + dateOfAssessment: 'undefined_data', + evidenceAssessment: 'undefined_data', +} + +CREDENTIAL_TYPE_DATASTORE_UNDEFINED.EOperatorClaim_data_undefined = { + legalName: 'undefined_data', + role: 'undefined_data', + email: 'undefined_data', + accreditedBy: 'undefined_data', + operatorNumber: 'undefined_data', + limitJurisdiction: 'undefined_data', + accreditedFor: 'undefined_data' } diff --git a/src/data_stores/jsons/_actual_financial_vulnerability_credential.json b/src/data_stores/jsons/_actual_financial_vulnerability_credential.json deleted file mode 100644 index ae26c3a..0000000 --- a/src/data_stores/jsons/_actual_financial_vulnerability_credential.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://idhub.pangea.org/credentials/base/v1", - "https://idhub.pangea.org/credentials/financial-vulnerability/v1" - ], - "id": "https://http://idhub-autotest.demo.pangea.org/credentials/1", - "type": [ - "VerifiableCredential", - "VerifiableAttestation", - "FinancialVulnerabilityCredential" - ], - "credentialSubject": { - "id": "did:web:idhub-autotest.demo.pangea.org:did-registry:z6Mkr4s4CSK3t52CXaw9inx2cxUhB8BNT7P5Dj3kK5ySz758", - "connectivityOptionList": "Fibra", - "identityNumber": "45678900V", - "assessmentDate": "2024-01-01", - "phoneNumber": "678567456", - "streetAddress": "C/ Tallers 1", - "lastName": "Mozart", - "email": "user1@example.org", - "identityDocType": "DNI", - "socialWorkerName": "Ana", - "socialWorkerSurname": "Fernández", - "amountCoveredByOtherAids": "0", - "firstName": "Wolfgang Amadeus", - "financialVulnerabilityScore": "4" - }, - "issuer": { - "id": "did:web:idhub-autotest.demo.pangea.org:did-registry:z6MktKKrgWJne5ZQkj5uVyHkdrPfRZGC7HEiaR9LrfjPhEP8", - "name": "idhub-autotest.demo.pangea.org" - }, - "issuanceDate": "2024-03-06T22:15:20Z", - "proof": { - "type": "Ed25519Signature2018", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:web:idhub-autotest.demo.pangea.org:did-registry:z6MktKKrgWJne5ZQkj5uVyHkdrPfRZGC7HEiaR9LrfjPhEP8#owner", - "created": "2024-03-06T22:15:20.778Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..HiLXLoMlwkhfHd5Ha20AP8Mgtgna_JaTpg-UZvobYEZcGJLrWEY-MntnCglHyQ6oXCNRlc-DCpG9JdsWf8boDg" - }, - "credentialStatus": { - "id": "did:web:idhub-autotest.demo.pangea.org:did-registry:z6MktKKrgWJne5ZQkj5uVyHkdrPfRZGC7HEiaR9LrfjPhEP8", - "type": "RevocationBitmap2022", - "revocationBitmapIndex": "1" - }, - "credentialSchema": { - "id": "https://idhub.pangea.org/vc_schemas/financial-vulnerability.json", - "type": "FullJsonSchemaValidator2021" - }, - "validFrom": "2024-03-06T22:15:20Z", - "description": [ - { - "lang": "en", - "value": "The Financial Vulnerability Credential is issued to individuals or families to prove their financial vulnerability based on various factors, with the objective of presenting it to a third party to receive benefits or services." - }, - { - "lang": "ca_ES", - "value": "La Credencial de Vulnerabilitat Financera és emesa a persones o famílies per acreditar la seva vulnerabilitat financera sobre la base de diversos factors, amb l'objectiu que la presentin a una tercera part per rebre beneficis o serveis." - }, - { - "lang": "es", - "value": "La Credencial de Vulnerabilidad Financiera es emitida a personas o familias para acreditar su vulnerabilidad financiera con base en diversos factores, con el objetivo de que la presenten a una tercera parte para recibir beneficios o servicios." - } - ], - "issued": "2024-03-06T22:15:20Z", - "name": [ - { - "lang": "en", - "value": "Financial Vulnerability Credential" - }, - { - "lang": "ca_ES", - "value": "Credencial de Vulnerabilitat Financera" - }, - { - "lang": "es", - "value": "Credencial de Vulnerabilidad Financiera" - } - ] -} \ No newline at end of file diff --git a/src/data_stores/jsons/_expected_financial_vulnerability_credential-json b/src/data_stores/jsons/_expected_financial_vulnerability_credential-json deleted file mode 100644 index 9738e9d..0000000 --- a/src/data_stores/jsons/_expected_financial_vulnerability_credential-json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://idhub.pangea.org/credentials/base/v1", - "https://idhub.pangea.org/credentials/financial-vulnerability/v1" - ], - "id": "https://idhub.pangea.org/credentials/987654321", - "type": [ - "VerifiableCredential", - "VerifiableAttestation", - "FinancialVulnerabilityCredential" - ], - "issuer": { - "id": "did:example:5678", - "name": "Fundació Pare Manel" - }, - "issuanceDate": "2023-12-06T19:23:24Z", - "issued": "2023-12-06T19:23:24Z", - "validFrom": "2023-12-06T19:23:24Z", - "validUntil": "2024-12-06T19:23:24Z", - "name": [ - { - "value": "Financial Vulnerability Credential", - "lang": "en" - }, - { - "value": "Credencial de Vulnerabilitat Financera", - "lang": "ca_ES" - }, - { - "value": "Credencial de Vulnerabilidad Financiera", - "lang": "es" - } - ], - "description": [ - { - "value": "The Financial Vulnerability Credential is issued to individuals or families to prove their financial vulnerability based on various factors, with the objective of presenting it to a third party to receive benefits or services.", - "lang": "en" - }, - { - "value": "La Credencial de Vulnerabilitat Financera és emesa a persones o famílies per acreditar la seva vulnerabilitat financera sobre la base de diversos factors, amb l'objectiu que la presentin a una tercera part per rebre beneficis o serveis.", - "lang": "ca_ES" - }, - { - "value": "La Credencial de Vulnerabilidad Financiera es emitida a personas o familias para acreditar su vulnerabilidad financiera con base en diversos factores, con el objetivo de que la presenten a una tercera parte para recibir beneficios o servicios.", - "lang": "es" - } - ], - "credentialSubject": { - "id": "did:example:1234", - "firstName": "Joan", - "lastName": "Pera", - "email": "joan.pera@pangea.org", - "identityDocType": "DNI", - "identityNumber": "12345678A", - "phoneNumber": "1234567890", - "streetAddress": "Tallers 19 2-1 Barcelona", - "socialWorkerName": "Mireia", - "socialWorkerSurname": "Pujol", - "financialVulnerabilityScore": "5", - "amountCoveredByOtherAids": "20", - "connectivityOptionList": "fibre, mobile", - "assessmentDate": "2023-12-06" - }, - "credentialSchema": { - "id": "https://idhub.pangea.org/vc_schemas/financial-vulnerability.json", - "type": "FullJsonSchemaValidator2021" - } -} \ No newline at end of file diff --git a/src/data_stores/usersDataInitialization.ts b/src/data_stores/users_data_store.ts similarity index 100% rename from src/data_stores/usersDataInitialization.ts rename to src/data_stores/users_data_store.ts diff --git a/src/interfaces/credential_interfaces.ts b/src/interfaces/credential_interfaces.ts index c82ed90..33dfe89 100644 --- a/src/interfaces/credential_interfaces.ts +++ b/src/interfaces/credential_interfaces.ts @@ -71,4 +71,14 @@ export interface FinancialVulnerabilityCredential_fields { evidenceAssessment: string; } - //TODO complete \ No newline at end of file + export interface EOperatorClaim_fields{ + legalName: string; + role: string; + email: string; + accreditedBy: string; + operatorNumber: string; + limitJurisdiction: string; + accreditedFor: string; + } + + \ No newline at end of file diff --git a/src/page-objects/AD_BasicUserInfoSectionInPage.ts b/src/page-objects/AD_BasicUserInfoSectionInPage.ts index 9e3d220..2e4730b 100644 --- a/src/page-objects/AD_BasicUserInfoSectionInPage.ts +++ b/src/page-objects/AD_BasicUserInfoSectionInPage.ts @@ -89,7 +89,6 @@ export class BasicUserInfoSectionPage { async addUserBasicInfo(newFirstname: string, newLastname: string, newEmail: string, isAdmin: boolean) { try { - console.log("Adding user with email: ", newEmail); await this.firstName.fill(newFirstname); await this.lastName.fill(newLastname); await this.email.fill(newEmail); @@ -107,7 +106,6 @@ export class BasicUserInfoSectionPage { async updateUserBasicInfo(newFirstname: string, newLastname: string, newEmail: string, isAdmin: boolean) { try { - console.log("Modifying user with email: ", newEmail); await this.firstName.fill(newFirstname); await this.lastName.fill(newLastname); await this.email.fill(newEmail); diff --git a/src/page-objects/AD_ImportDataPage.ts b/src/page-objects/AD_ImportDataPage.ts index 5a788d6..1343b6b 100644 --- a/src/page-objects/AD_ImportDataPage.ts +++ b/src/page-objects/AD_ImportDataPage.ts @@ -88,7 +88,6 @@ export class ImportDataPage { } async importFile(schema: string, fileToImport: string, did: string) { try { - console.log('Importing the file from the current working directory: ${process.cwd()}'); await (await this.getDropdownDID()).selectOption({ label: did }); await (await this.getDropdownSchema()).selectOption({ label: schema }); await (await this.getFileToImport()).click(); diff --git a/src/page-objects/AD_ImportTemplatePage.ts b/src/page-objects/AD_ImportTemplatePage.ts index 0d7edb6..28e6a09 100644 --- a/src/page-objects/AD_ImportTemplatePage.ts +++ b/src/page-objects/AD_ImportTemplatePage.ts @@ -45,7 +45,6 @@ export class ImportTemplatePage { async schemaIsAvailableToImport(schemaName: string): Promise { try { - console.log(`Checking if template ${schemaName} exists`); // Wait for the table to appear and contain at least one row await this.page.waitForFunction(() => document.querySelectorAll('tr').length > 0, { timeout: 10000 }); diff --git a/src/page-objects/AD_TemplatesPage.ts b/src/page-objects/AD_TemplatesPage.ts index e027e6a..4819464 100644 --- a/src/page-objects/AD_TemplatesPage.ts +++ b/src/page-objects/AD_TemplatesPage.ts @@ -98,13 +98,9 @@ export class TemplatesPage { for (let i = 0; i < rowCount; i++) { // Get the second cell (file schema name) of the current row - console.log("Checking schema name against JSON for element: ", i); const fileSchemaCell = page.locator(`table tbody tr:nth-child(${i + 1}) td:nth-child(2)`); const fileSchemaValue = await fileSchemaCell.innerText(); - // Print the value of the second cell - console.log('Name of the schema: ' + fileSchemaValue); - // Click the corresponding element in the fifth cell (eye icon) await clickViewSchemaOnLeftMenu(page, fileSchemaValue) @@ -114,7 +110,6 @@ export class TemplatesPage { // Extract the last component of the $id path const idUrl = new URL(jsonContent["$id"]); const lastPathSegment = idUrl.pathname.split("/").pop(); - console.log('lastPathSegment', lastPathSegment); // Check if the last component of the $id path matches the second cell value (File schema) expect(lastPathSegment).toBe(fileSchemaValue); @@ -129,8 +124,6 @@ export class TemplatesPage { async schemaIsAvailableInView(schemaName: string): Promise { try { - console.log('Checking if template ${schemaName} exists'); - // Wait for the table to appear and contain at least one row await this.page.waitForFunction(() => document.querySelectorAll('tr').length > 0, { timeout: 10000 }); diff --git a/src/page-objects/AD_UserPersonalInformationPage.ts b/src/page-objects/AD_UserPersonalInformationPage.ts index f3ef16b..3f8bb35 100644 --- a/src/page-objects/AD_UserPersonalInformationPage.ts +++ b/src/page-objects/AD_UserPersonalInformationPage.ts @@ -60,9 +60,6 @@ export class UserPersonalInformationPage { const toDateElement = await this.page.$$eval('tr > td:nth-of-type(3)', elements => elements.map(el => el.textContent ? el.textContent.trim() : '')); const toDate = toDateElement[0]; - console.log(fn, ' ', ln, ' ', em, ' ', mst, ' ', fromDate, ' ', toDate); - console.log(user.firstName, ' ', user.lastName, ' ', user.email, ' ', getMembershipTypeById(user.membershipType), ' ', formatDate(user.startDate), ' ', formatDate(user.endDate)); - if (user.firstName === fn && user.lastName === ln && user.email === em && getMembershipTypeById(user.membershipType) === mst && formatDate(user.startDate) === fromDate && formatDate(user.endDate) === toDate) { return true } diff --git a/src/page-objects/AD_ViewImportedDataPage.ts b/src/page-objects/AD_ViewImportedDataPage.ts index 50a8737..ed31b13 100644 --- a/src/page-objects/AD_ViewImportedDataPage.ts +++ b/src/page-objects/AD_ViewImportedDataPage.ts @@ -93,7 +93,6 @@ export class ViewImportedDataPage { async fileIsAvailableInView(fileName: string): Promise { try { - console.log(`Checking if file ${fileName} was previously loaded`); // Wait for the table to appear and contain at least one row await this.page.waitForFunction(() => document.querySelectorAll('tr').length > 0, { timeout: 10000 }); diff --git a/src/page-objects/AD_ViewUsersPage.ts b/src/page-objects/AD_ViewUsersPage.ts index bb50bc6..bf1ff2a 100644 --- a/src/page-objects/AD_ViewUsersPage.ts +++ b/src/page-objects/AD_ViewUsersPage.ts @@ -43,7 +43,6 @@ export class ViewUsersPage { async userExists(email: string): Promise { try { - console.log('Checking the user with email', email); // Wait for the table to appear and contain at least one row await this.page.waitForFunction(() => document.querySelectorAll('tr').length > 0, { timeout: 10000 }); diff --git a/src/page-objects/US_ViewCredentialPage.ts b/src/page-objects/US_ViewCredentialPage.ts index e010da9..168624f 100644 --- a/src/page-objects/US_ViewCredentialPage.ts +++ b/src/page-objects/US_ViewCredentialPage.ts @@ -3,56 +3,63 @@ import { initialize_with_undefined_values, setCredentialValues } from "../steps" export class ViewCredentialPage { - readonly page: Page - readonly primaryTitle: Locator - readonly secondaryTitle: Locator + readonly page: Page + readonly primaryTitle: Locator + readonly secondaryTitle: Locator - constructor(page: Page) { - this.page = page; - this.primaryTitle = page.getByRole('heading', { name: 'My wallet' }); - this.secondaryTitle = page.getByRole('heading', { name: ' Credential' }); + constructor(page: Page) { + this.page = page; + this.primaryTitle = page.getByRole('heading', { name: 'My wallet' }); + this.secondaryTitle = page.getByRole('heading', { name: ' Credential' }); + } + async getPrimaryTitle() { + try { + return await this.primaryTitle.innerText(); + } catch (error) { + console.error("Failed to get primary title:", error); + throw error; } - async getPrimaryTitle() { - try { - return await this.primaryTitle.innerText(); - } catch (error) { - console.error("Failed to get primary title:", error); - throw error; - } - } - - async getSecondaryTitle() { - try { - return await this.secondaryTitle.innerText(); - } catch (error) { - console.error("Failed to get secondary title:", error); - throw error; + } + + async getSecondaryTitle() { + try { + return await this.secondaryTitle.innerText(); + } catch (error) { + console.error("Failed to get secondary title:", error); + throw error; + } + } + + async buildACredentialFromInputValues(credentialType: string) { + + try { + const elementsWithLabel = await this.page.locator('.col-3 strong').all(); + const elementsWithValue = await this.page.locator('.col.bg-light.text-secondary').all(); + let credential = initialize_with_undefined_values(credentialType); + + let labels: string[] = []; + let values: string[] = []; + + for (let i = 0; i < elementsWithLabel.length; i++) { + let label = await elementsWithLabel[i].textContent() + if (label) label = label.trim().replace(/:$/, ''); + let value = await elementsWithValue[i].textContent() + if (value) value = value.trim(); + if (value != null && label != null && label != 'Id' && label != "Issuance date" && label != "Status") { + labels.push(label); + values.push(value); } } - async buildACredentialFromInputValues(credentialType: string) { - - const elementsWithLabel = await this.page.locator('.col-3 strong').all(); - const elementsWithValue = await this.page.locator('.col.bg-light.text-secondary').all(); - let credential = initialize_with_undefined_values(credentialType); - - let labels: string[] = []; - let values: string[] = []; - - for (let i = 0; i < elementsWithLabel.length; i++) { - let label = await elementsWithLabel[i].textContent() - if (label) label = label.trim().replace(/:$/, ''); - let value = await elementsWithValue[i].textContent() - if (value) value = value.trim(); - if (value != null && label != null && label != 'Id' && label != "Issuance date" && label != "Status") { - labels.push(label); - values.push(value); - } - } - - credential = setCredentialValues(labels, values, credentialType); - return credential; - + credential = setCredentialValues(labels, values, credentialType); + return credential; + } catch (error) { + console.error("Failed to build the credential from input values:", error); + throw error; } + + }//end function + + } diff --git a/src/steps.ts b/src/steps.ts index 8735b1c..774da39 100644 --- a/src/steps.ts +++ b/src/steps.ts @@ -1,10 +1,9 @@ import { expect, Page } from '@playwright/test' -import { appendRandomNumberToFilename, copyFile } from './utils' +import { appendRandomNumberToFilename, copyFile, deleteFile } from './utils' import { CREDENTIAL_TYPE_DATASTORE_UNDEFINED, CREDENTIAL_TYPES_DATA_STORE } from './data_stores/credentials_data_store' -import { FinancialVulnerabilityCredential_fields } from './interfaces/credential_interfaces' -import { CREDENTIAL_TYPES_FIELDS_LIST, CREDENTIAL_TYPES_REQUIRED_FIELDS_LIST } from './constants/credential_fields' +import { CREDENTIAL_TYPES_FIELDS_LIST} from './constants/credential_fields' import { LogInPage } from './page-objects/COMM_LoginPage' import { ADMIN_EMAIL, ADMIN_K, ENCRYPTION_KEY, USER_K } from './constants/env_constants' import { LeftMenuAdminPage } from './page-objects/AD_LeftMenuAdminPage' @@ -18,6 +17,9 @@ import { ViewImportedDataPage } from './page-objects/AD_ViewImportedDataPage' import { User } from './interfaces/User' import { EncryptionKeyPage } from './page-objects/AD_EncryptionKeyPage' import { DataProtectionPage } from './page-objects/COMM_DataProtectionPage' +import { ImportDataPage } from './page-objects/AD_ImportDataPage' +import { PATH_FILES_TO_IMPORT } from './constants/constants' +import { fail } from 'assert' export async function loginAsAdmin(page: Page, url: string) { @@ -30,7 +32,6 @@ export async function loginAsAdmin(page: Page, url: string) { await loginPage.login(ADMIN_EMAIL, ADMIN_K); let currentTitle = await page.title(); - console.log("current title: ", currentTitle); if (currentTitle === 'Encryption Key – IdHub') { //code to set Encription Key @@ -253,7 +254,6 @@ export async function gotoViewEnabledCredential(page: Page, credentialType: stri } export async function checkIfTheInformationIsValid(page: Page, user: User) { - console.log(user.firstName, "membership: ", user.membershipType, "sd: ", user.startDate) const userPersonalInformationPage = new UserPersonalInformationPage(page) try { @@ -264,16 +264,17 @@ export async function checkIfTheInformationIsValid(page: Page, user: User) { } -export function expectedCredentialSubjectForUser(email: string, credentialType: string): FinancialVulnerabilityCredential_fields | MembershipCard_fields | undefined { +export function expectedCredentialSubjectForUser(email: string, credentialType: string){ + +//export function expectedCredentialSubjectForUser(email: string, credentialType: string): FinancialVulnerabilityCredential_fields | MembershipCard_fields | NGOFederationMembership_fields | undefined { try { - const testingDataForCredential = CREDENTIAL_TYPES_DATA_STORE[credentialType + '_data'] as T[]; + const testingDataForCredential = CREDENTIAL_TYPES_DATA_STORE[credentialType + '_data']; if (!testingDataForCredential) { console.error(`No testing data found for credential type: ${credentialType}`); return undefined; } - console.log("testing Data: ", testingDataForCredential); let credentialSubject = testingDataForCredential.find(user => user.email.toLowerCase() === email.toLowerCase()); return credentialSubject; } catch (error) { @@ -324,20 +325,19 @@ export async function loadIfJsonSchemaNotAvailable(page: Page, jsonSchema: strin } export function setCredentialValues(labels: string[], values: string[], credentialType: string): any { - // Get the interface type associated with the credentialType - + + try { const listOfFields = CREDENTIAL_TYPES_FIELDS_LIST[credentialType]; - const listOfRequiredFields = CREDENTIAL_TYPES_REQUIRED_FIELDS_LIST[credentialType]; // Initialize an empty object to store the credential let credential: any = {}; - try { + // Iterate over labels and values for (let i = 0; i < labels.length; i++) { let label = labels[i]; let value = values[i]; - // Check if the label exists in the interface type + // Check if the label exists in the list of fields label = label.charAt(0).toLowerCase() + label.slice(1); if (listOfFields.includes(label)) { credential[label] = value; @@ -355,4 +355,103 @@ export function setCredentialValues(labels: string[], values: string[], credenti export function initialize_with_undefined_values(credentialType: string) { return (CREDENTIAL_TYPE_DATASTORE_UNDEFINED[credentialType + '_data_undefined']) -} \ No newline at end of file +} + + +/* Load of an excel file - Happy Path: + * Check if file was loaded before. If yes, copy the original file (ie., financial-vulnerability-credential.xlxs) with a new valid with a random name + * If the template schema (associated with the type of credential to be enabled) is not available, import it and verify the operation + * Load the associated data file (xls) and check that appears in the list of imported data files + * Expected behavior: the file is loaded, the message:"The file was imported successfully!" is displayed, + * and the file appears in the imported files view. + */ + +export async function testImportDataFile_HappyPath(page: Page, fileToImport: string, jsonSchema: string, schema: string) { + + const viewImportedDataPage = new ViewImportedDataPage(page); + const importDataPage = new ImportDataPage(page); + + await clickDataOnLeftMenu(page); + + // If a file with a FILE_TO_IMPORT was previouly loaded, rename it + let fileName = fileToImport; + fileName = await checkFileName(page, fileName); + + // Check if the json schema associated with the file is loaded to be used + // If not, load it in templates + await loadIfJsonSchemaNotAvailable(page, jsonSchema); + + //Go to the Data option on leftmenu + await clickDataOnLeftMenu(page); + + //Select the import button and go to the import data page + await viewImportedDataPage.gotoImportDataPage(); + + //Import excel file to enable a 'Financial vulnerability credential'for testing users + await importDataPage.importFile(schema, PATH_FILES_TO_IMPORT + fileName, "Default"); + let actual = await viewImportedDataPage.alertFileImportedSuccessfully(); + + //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT + if (fileName != fileToImport) { + await deleteFile(fileName); + } + if (actual) { + //Check if the file is in the list of imported files sucessfully + await clickDataOnLeftMenu(page); + await page.getByRole('link', { name: 'Date' }).click(); + await page.getByRole('link', { name: 'Date' }).click(); + + expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); + expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeTruthy(); + } else { + console.log("Unexpected result loading the file. Test failed.") + fail(); + } + +} + +/** + * Load of an excel file - Sad Path: + * Check if file was loaded before. If yes, copy the original to the new one with random name. + * If the template schema (associated with the type of credential to be enabled) is not available, import it and verify the operation + */ +export async function testImportDataFile_SadPath(page: Page, fileToImport: string, jsonSchema: string, schema: string, unsuccessAlertMessage: string) { + const viewImportedDataPage = new ViewImportedDataPage(page); + const importDataPage = new ImportDataPage(page); + + await clickDataOnLeftMenu(page); + + // If a file with a FILE_TO_IMPORT was previously loaded, rename it + let fileName = await checkFileName(page, fileToImport); + + // Check if the json schema associated with the file is loaded to be used + // If not, load it in templates + await loadIfJsonSchemaNotAvailable(page, jsonSchema); + + //Go to the Data option on leftmenu + await clickDataOnLeftMenu(page); + + //Select the import button and go to the import data page + await viewImportedDataPage.gotoImportDataPage(); + + //Import excel file to enable a 'Financial vulnerability credential'. The file has no data. + await importDataPage.importFile(schema, PATH_FILES_TO_IMPORT + fileName, "Default"); + let actual = await importDataPage.alertFileImportedUnsuccessfully(unsuccessAlertMessage); + + //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT + if (fileName != fileToImport) { + await deleteFile(fileName); + } + if (actual) { + //Check if the file is in the list of imported files as failed + await clickDataOnLeftMenu(page); + await page.getByRole('link', { name: 'Date' }).click(); + await page.getByRole('link', { name: 'Date' }).click(); + + expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); + expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeFalsy(); + } else { + console.log("Unexpected result loading an empty file. Test failed."); + fail(); + } +} diff --git a/tests/01-AD-leftmenuNavigation.spec.ts b/tests/01-AD-leftmenuNavigation.spec.ts index b668b6e..8acb557 100644 --- a/tests/01-AD-leftmenuNavigation.spec.ts +++ b/tests/01-AD-leftmenuNavigation.spec.ts @@ -14,6 +14,10 @@ test.describe('Leftside Menu navigation test', () => { test.beforeEach(async ({ page }) => { await loginAsAdmin(page, URL_IDHUB); }) + test.afterEach(async ({ page }) => { //este se ejecutará despues de cada test + await page.click('.logout'); + await page.close(); + }) test('LEFTMENU -> Dashboard', async ({ page }) => { await clickDashboardOnLeftMenu(page) diff --git a/tests/02-AD-manageUsers.spec.ts b/tests/02-AD-manageUsers.spec.ts index 54599cf..72b3ae7 100644 --- a/tests/02-AD-manageUsers.spec.ts +++ b/tests/02-AD-manageUsers.spec.ts @@ -5,7 +5,7 @@ import { ViewUsersPage } from '../src/page-objects/AD_ViewUsersPage' import { AddMembershipPage } from '../src/page-objects/AD_AddMembershipPage' import { UserPersonalInformationPage } from '../src/page-objects/AD_UserPersonalInformationPage' import { MembershipSectionPage } from '../src/page-objects/AD_MembershipSectionPage' -import { testingUsers, users } from '../src/data_stores/usersDataInitialization' +import { testingUsers, users } from '../src/data_stores/users_data_store' import { createUsersRandomList } from '../src/utils' import { URL_IDHUB } from '../src/constants/env_constants' import { checkIfTheInformationIsValid, clickAddUserOnLeftMenu, clickViewUsersOnLeftMenu, gotoBasicInfoPageOfTheUser, loginAsAdmin } from '../src/steps' @@ -21,6 +21,10 @@ test.describe('USER Section Tests', () => { await loginAsAdmin(page, URL_IDHUB); (await leftMenu.getUsersLink()).click() }) + test.afterEach(async ({ page }) => { //este se ejecutará despues de cada test + await page.click('.logout'); + await page.close(); + }) /** * UPDATE the basic data for default testing users user1..user5 */ diff --git a/tests/03-AD-templates.spec.ts b/tests/03-AD-templates.spec.ts index 27e5c96..4e23c7a 100644 --- a/tests/03-AD-templates.spec.ts +++ b/tests/03-AD-templates.spec.ts @@ -1,7 +1,7 @@ import { test, expect } from '@playwright/test' import { TemplatesPage } from '../src/page-objects/AD_TemplatesPage' import { clickTemplatesOnLeftMenu, loadIfJsonSchemaNotAvailable, loginAsAdmin } from '../src/steps'; -import { URL_IDHUB } from '../src/constants/env_constants'; +import { URL_IDHUB, URL_SCHEMAS } from '../src/constants/env_constants'; import { JSON_SCHEMA_FVC, JSON_SCHEMA_ID_FVC } from '../src/constants/constants'; /** @@ -12,6 +12,10 @@ test.describe('TEMPLATES Section Tests ', () => { test.beforeEach(async ({ page }) => { //este se ejecutará antes de cada test await loginAsAdmin(page, URL_IDHUB); }) + test.afterEach(async ({ page }) => { //este se ejecutará despues de cada test + await page.click('.logout'); + await page.close(); + }) /** * For every row in the templates view, @@ -41,6 +45,8 @@ test.describe('TEMPLATES Section Tests ', () => { const jsonContent = await page.evaluate(() => JSON.parse(document.body.innerText)); // Check if the JSON elements exist expect(jsonContent["$id"]).toBe(JSON_SCHEMA_ID_FVC); + await page.goto(URL_SCHEMAS); + }) /** diff --git a/tests/04-COMM-EnabledAndIssueFVC_Credential.spec.ts b/tests/04-COMM-EnabledAndIssueFVC_Credential.spec.ts index aa9a3dc..f96c873 100644 --- a/tests/04-COMM-EnabledAndIssueFVC_Credential.spec.ts +++ b/tests/04-COMM-EnabledAndIssueFVC_Credential.spec.ts @@ -1,214 +1,102 @@ -import { test, expect } from '@playwright/test' -import { ViewImportedDataPage } from '../src/page-objects/AD_ViewImportedDataPage' -import { ImportDataPage } from '../src/page-objects/AD_ImportDataPage' -import { checkFileName, clickDataOnLeftMenu, loadIfJsonSchemaNotAvailable, loginAsAdmin, loginAsUser, gotoViewEnabledCredential, expectedCredentialSubjectForUser } from '../src/steps'; +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 { fail } from 'assert' -import { URL_IDHUB, USER1_EMAIL, USER2_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, FILE_TO_IMPORT_FVC, FILE_TO_IMPORT_FVC_EMPTY, FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS, JSON_SCHEMA_FVC, PATH_FILES_TO_IMPORT, SCHEMA_FVC, SCHEMA_TYPE_FVC } from '../src/constants/constants'; -import { deleteFile } from '../src/utils'; +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 data section: view the lists of files imported, import data, delete... +* 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 }) => { //este se ejecutará antes de cada test + test.beforeEach(async ({ page }) => { await loginAsAdmin(page, URL_IDHUB); }) + test.afterEach(async ({ page }) => { + await page.click('.logout'); + await page.close(); - + }) /** - * Load of an excel file - Happy Path: - * Check if file was loaded before. If yes, copy the original file (financial-vulnerability-credential.xlxs) to a new valid with random name - * If the template schema (associated with the type of credential to be enabled) is not available, import it and verify the operation - * Load the associated data file (xls) and check that appears in the list of imported data files + * 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 viewImportedDataPage = new ViewImportedDataPage(page); - const importDataPage = new ImportDataPage(page); + const fileToImport = FILE_TO_IMPORT_FVC; + const jsonSchema = JSON_SCHEMA_FVC; + const schema = SCHEMA_FVC; - await clickDataOnLeftMenu(page); - - // If a file with a FILE_TO_IMPORT was previouly loaded, rename it - let fileName = FILE_TO_IMPORT_FVC; - fileName = await checkFileName(page, fileName); - - // Check if the json schema associated with the file is loaded to be used - // If not, load it in templates - await loadIfJsonSchemaNotAvailable(page, JSON_SCHEMA_FVC); - - //Go to the Data option on leftmenu - await clickDataOnLeftMenu(page); - - //Select the import button and go to the import data page - await viewImportedDataPage.gotoImportDataPage(); - - //Import excel file to enable a 'Financial vulnerability credential'for testing users - console.log("File to import: ", fileName, " with schema: ", SCHEMA_FVC); - await importDataPage.importFile(SCHEMA_FVC, PATH_FILES_TO_IMPORT + fileName, "Default"); - let actual = await viewImportedDataPage.alertFileImportedSuccessfully(); - - //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT - if (fileName != FILE_TO_IMPORT_FVC) { - await deleteFile(fileName); - } - if (actual) { - //Check if the file is in the list of imported files sucessfully - await clickDataOnLeftMenu(page); - await page.getByRole('link', { name: 'Date' }).click(); - await page.getByRole('link', { name: 'Date' }).click(); - - expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); - expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeTruthy(); - } else { - console.log("Unexpected result loading the file. Test failed.") - fail(); - } + await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema); }); - /** - * Load of an excel file - Sad Path: - * Check if file was loaded before. If yes, copy the original to the new one with random name. - * If the template schema (associated with the type of credential to be enabled) is not available, import it and verify the operation + /** + * 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 viewImportedDataPage = new ViewImportedDataPage(page); - const importDataPage = new ImportDataPage(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 clickDataOnLeftMenu(page); - - // If a file with a FILE_TO_IMPORT was previously loaded, rename it - let fileName = await checkFileName(page, FILE_TO_IMPORT_FVC_EMPTY); - - // Check if the json schema associated with the file is loaded to be used - // If not, load it in templates - await loadIfJsonSchemaNotAvailable(page, JSON_SCHEMA_FVC); - - //Go to the Data option on leftmenu - await clickDataOnLeftMenu(page); - - //Select the import button and go to the import data page - await viewImportedDataPage.gotoImportDataPage(); - - //Import excel file to enable a 'Financial vulnerability credential'. The file has no data. - console.log("File to import: ", fileName, " with schema: ", SCHEMA_FVC); - await importDataPage.importFile(SCHEMA_FVC, PATH_FILES_TO_IMPORT + fileName, "Default"); - let actual = await importDataPage.alertFileImportedUnsuccessfully(ALERT_FILE_TO_IMPORT_IS_EMPTY); - - //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT - if (fileName != FILE_TO_IMPORT_FVC_EMPTY) { - await deleteFile(fileName); - } - if (actual) { - //Check if the file is in the list of imported files as failed - await clickDataOnLeftMenu(page); - await page.getByRole('link', { name: 'Date' }).click(); - await page.getByRole('link', { name: 'Date' }).click(); - - expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); - expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeFalsy(); - } else { - console.log("Unexpected result loading an empty file. Test failed."); - fail(); - } - }); - - test('DATA -> Import data file - Sad path (file bad formatted, without required columns) - Financial Vulnerability Credential ', async ({ page }) => { - - const viewImportedDataPage = new ViewImportedDataPage(page); - const importDataPage = new ImportDataPage(page); - - await clickDataOnLeftMenu(page); - - // If a file with a FILE_TO_IMPORT was previously loaded, rename it - let fileName = await checkFileName(page, FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS); - - // Check if the json schema associated with the file is loaded to be used - // If not, load it in templates - await loadIfJsonSchemaNotAvailable(page, JSON_SCHEMA_FVC); - - //Go to the Data option on leftmenu - await clickDataOnLeftMenu(page); - - //Select the import button and go to the import data page - await viewImportedDataPage.gotoImportDataPage(); - - //Import excel file to enable a 'Financial vulnerability credential'. The file has no data. - console.log("File to import: ", fileName, " with schema: ", SCHEMA_FVC); - await importDataPage.importFile(SCHEMA_FVC, PATH_FILES_TO_IMPORT + fileName, "Default"); - let actual = await importDataPage.alertFileImportedUnsuccessfully(ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS); - - //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT - if (fileName != FILE_TO_IMPORT_FVC_WITHOUT_REQUIRED_COLUMNS) { - await deleteFile(fileName); - } - if (actual) { - //Check if the file is in the list of imported files as failed - await clickDataOnLeftMenu(page); - await page.getByRole('link', { name: 'Date' }).click(); - await page.getByRole('link', { name: 'Date' }).click(); - - expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); - expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeFalsy(); - } else { - console.log("Unexpected result loading an empty file. Test failed."); - fail(); - } + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); }); - test('DATA -> Import data file - Sad path (file bad formatted, with alien columns) - Financial Vulnerability Credential ', async ({ page }) => { + /** + * Load an excel file - Sad Path: + * Try to load a bad formatted file, without required data. + */ - const viewImportedDataPage = new ViewImportedDataPage(page); - const importDataPage = new ImportDataPage(page); + test('DATA -> Import data file - Sad path (bad formatted file, without required columns) - Financial Vulnerability Credential ', async ({ page }) => { - await clickDataOnLeftMenu(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; - // If a file with a FILE_TO_IMPORT was previously loaded, rename it - let fileName = await checkFileName(page, FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS); + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); - // Check if the json schema associated with the file is loaded to be used - // If not, load it in templates - await loadIfJsonSchemaNotAvailable(page, JSON_SCHEMA_FVC); + }); - //Go to the Data option on leftmenu - await clickDataOnLeftMenu(page); + /** + * 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)" + */ - //Select the import button and go to the import data page - await viewImportedDataPage.gotoImportDataPage(); + 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; - //Import excel file to enable a 'Financial vulnerability credential'. The file has no data. - console.log("File to import: ", fileName, " with schema: ", SCHEMA_FVC); - await importDataPage.importFile(SCHEMA_FVC, PATH_FILES_TO_IMPORT + fileName, "Default"); - let actual = await importDataPage.alertFileImportedUnsuccessfully(ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS); + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); - //Rename the default excel file with the original name FILE_TO_IMPORT in the directoy PATH_FILES_TO_IMPORT - if (fileName != FILE_TO_IMPORT_FVC_WITH_ALIEN_COLUMNS) { - await deleteFile(fileName); - } - if (actual) { - //Check if the file is in the list of imported files as failed - await clickDataOnLeftMenu(page); - await page.getByRole('link', { name: 'Date' }).click(); - await page.getByRole('link', { name: 'Date' }).click(); + }); - expect(await viewImportedDataPage.fileIsAvailableInView(fileName)).toBeTruthy(); - expect(await viewImportedDataPage.isFileSuccessfullyLoaded(fileName)).toBeFalsy(); - } else { - console.log("Unexpected result loading an empty file. Test failed."); - fail(); - } + /** + * 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); }); @@ -216,9 +104,14 @@ test.describe('ADMIN-> DATA Section Tests - Testing with Financial Vulnerability test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND FINANCIAL VULNERABILITY CRED', () => { - test.beforeEach(async ({ page }) => { //este se ejecutará antes de cada test + 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 @@ -234,12 +127,11 @@ test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND 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 in the screen and compare to the model + //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); }); -}) //end describe - +}) diff --git a/tests/05-COMM-EnabledAndIssueMC_Credential.spec.ts b/tests/05-COMM-EnabledAndIssueMC_Credential.spec.ts new file mode 100644 index 0000000..3d6830c --- /dev/null +++ b/tests/05-COMM-EnabledAndIssueMC_Credential.spec.ts @@ -0,0 +1,140 @@ +import { test, expect } from '@playwright/test' +import { ViewCredentialPage } from '../src/page-objects/US_ViewCredentialPage.js' +import { URL_IDHUB, USER1_EMAIL, USER2_EMAIL } from '../src/constants/env_constants'; +import { ALERT_FILE_TO_IMPORT_IS_EMPTY, ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_MC, ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS, ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY, FILE_TO_IMPORT_MC, FILE_TO_IMPORT_MC_2, FILE_TO_IMPORT_MC_EMPTY, FILE_TO_IMPORT_MC_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_MC_WITH_ALIEN_COLUMNS, FILE_TO_IMPORT_MC_WITH_REQUIRED_EMPTY, JSON_SCHEMA_MC, SCHEMA_MC, SCHEMA_TYPE_MC } from '../src/constants/constants'; +import { expectedCredentialSubjectForUser, gotoViewEnabledCredential, loginAsAdmin, loginAsUser, testImportDataFile_HappyPath, testImportDataFile_SadPath } from '../src/steps.js'; + +/** +* Checking data section: view the lists of files imported, import data, delete... +*/ + +test.describe('ADMIN-> DATA Section Tests - Testing with Membership Credential', () => { + + test.beforeEach(async ({ page }) => { + await loginAsAdmin(page, URL_IDHUB); + }) + test.afterEach(async ({ page }) => { + await page.click('.logout'); + await page.close(); + }) + + /** + * Load of 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 - Membership Card Credential - membership_card.xlsx ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_MC; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + + await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema); + + }); + + test('DATA -> Import data file - Happy path - Membership Card Credential - membership_card2.xlsx ', async ({ page }) => { + //test with a second excel file + + const fileToImport = FILE_TO_IMPORT_MC_2; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + + await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema); + + }); + + /** + * Load of 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) - Membership Card Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_MC_EMPTY; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_IS_EMPTY; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (bad formatted file, without required columns) - Membership Card Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_MC_WITHOUT_REQUIRED_COLUMNS; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_MC; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (bad formatted file, with alien columns) - Membership Card Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_MC_WITH_ALIEN_COLUMNS; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file with required columns present but empty) - Membership Card Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_MC_WITH_REQUIRED_EMPTY; + const jsonSchema = JSON_SCHEMA_MC; + const schema = SCHEMA_MC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + +}) + +test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND Membership Card Credential', () => { + + test.afterEach(async ({ page }) => { + await page.click('.logout'); + await page.close(); + }) + + /** + * PRE-CONDITIONS: the admin has enabled a credential of type 'Membership Card' 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 Membership Card - for user1@example.org', async ({ page }) => { + // View the Membership Card Credential in status 'Enabled' for the user + await loginAsUser(page, USER1_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_MC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_MC); + let expectedCredential = await expectedCredentialSubjectForUser(USER1_EMAIL, SCHEMA_TYPE_MC); + expect(actualCredential).toEqual(expectedCredential); + }); + + test('USER Credentials -> My Credentials -> View enabled Membership Card - for user2@example.org', async ({ page }) => { + // View the Membership Card Credential in status 'Enabled' for the user + await loginAsUser(page, USER2_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_MC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_MC); + let expectedCredential = await expectedCredentialSubjectForUser(USER2_EMAIL, SCHEMA_TYPE_MC); + expect(actualCredential).toEqual(expectedCredential); + }); +}) diff --git a/tests/06-COMM-EnabledAndIssueNGO_FED.spec.ts b/tests/06-COMM-EnabledAndIssueNGO_FED.spec.ts new file mode 100644 index 0000000..b92c03b --- /dev/null +++ b/tests/06-COMM-EnabledAndIssueNGO_FED.spec.ts @@ -0,0 +1,133 @@ +import { test, expect } from '@playwright/test' +import { loginAsAdmin, loginAsUser, gotoViewEnabledCredential, expectedCredentialSubjectForUser, testImportDataFile_HappyPath, testImportDataFile_SadPath } from '../src/steps'; +import { ViewCredentialPage } from '../src/page-objects/US_ViewCredentialPage.js' +import { URL_IDHUB, USER1_EMAIL, USER2_EMAIL } from '../src/constants/env_constants'; +import { ALERT_FILE_TO_IMPORT_IS_EMPTY, ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_NGO_FM, ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS, ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_NGO_FM, FILE_TO_IMPORT_NGO_FM, FILE_TO_IMPORT_NGO_FM_EMPTY, FILE_TO_IMPORT_NGO_FM_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_NGO_FM_WITH_ALIEN_COLUMNS, FILE_TO_IMPORT_NGO_FM_WITH_REQUIRED_EMPTY, JSON_SCHEMA_NGO_FM, SCHEMA_NGO_FM, SCHEMA_TYPE_NGO_FM } from '../src/constants/constants'; + +/** +* Checking data section: view the lists of files imported, import data, delete... +*/ + +test.describe('ADMIN-> DATA Section Tests - Testing with NGO Federation Membership', () => { + + 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 - NGO Federation Membership Credential - federation-membership.xlsx ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_NGO_FM; + const jsonSchema = JSON_SCHEMA_NGO_FM; + const schema = SCHEMA_NGO_FM; + + 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) - NGO Federation Membership Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_NGO_FM_EMPTY; + const jsonSchema = JSON_SCHEMA_NGO_FM; + const schema = SCHEMA_NGO_FM; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_IS_EMPTY; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file bad formatted, without required columns) - NGO Federation Membership Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_NGO_FM_WITHOUT_REQUIRED_COLUMNS; + const jsonSchema = JSON_SCHEMA_NGO_FM; + const schema = SCHEMA_NGO_FM; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_NGO_FM; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file bad formatted, with alien columns) - NGO Federation Membership Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_NGO_FM_WITH_ALIEN_COLUMNS; + const jsonSchema = JSON_SCHEMA_NGO_FM; + const schema = SCHEMA_NGO_FM; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file with required columns present but empty) - NGO Federation Membership Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_NGO_FM_WITH_REQUIRED_EMPTY; + const jsonSchema = JSON_SCHEMA_NGO_FM; + const schema = SCHEMA_NGO_FM; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_NGO_FM; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + +}) //end describe + +test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND NGO Federation Membership Credential', () => { + + test.afterEach(async ({ page }) => { //este se ejecutará despues de cada test + await page.click('.logout'); + await page.close(); + }) + + /** + * PRE-CONDITIONS: the admin has enabled a credential of type 'NGO Federation Membership' 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 NGO Federation Membership Credential - for user1@example.org', async ({ page }) => { + // View the NGO Federation Membership Credential in status 'Enabled' for the user + await loginAsUser(page, USER1_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_NGO_FM); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_NGO_FM); + let expectedCredential = await expectedCredentialSubjectForUser(USER1_EMAIL, SCHEMA_TYPE_NGO_FM); + expect(actualCredential).toEqual(expectedCredential); + }); + + test('USER Credentials -> My Credentials -> View enabled NGO Federation Membership Credential - for user2@example.org', async ({ page }) => { + // View the NGO Federation Membership Credential in status 'Enabled' for the user + await loginAsUser(page, USER2_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_NGO_FM); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_NGO_FM); + let expectedCredential = await expectedCredentialSubjectForUser(USER2_EMAIL, SCHEMA_TYPE_NGO_FM); + expect(actualCredential).toEqual(expectedCredential); + }); + +}) + diff --git a/tests/07-COMM-EnabledAndIssueCC_Credential.spec.ts b/tests/07-COMM-EnabledAndIssueCC_Credential.spec.ts new file mode 100644 index 0000000..2e73544 --- /dev/null +++ b/tests/07-COMM-EnabledAndIssueCC_Credential.spec.ts @@ -0,0 +1,133 @@ +import { test, expect } from '@playwright/test' +import { loginAsAdmin, loginAsUser, gotoViewEnabledCredential, expectedCredentialSubjectForUser, testImportDataFile_HappyPath, testImportDataFile_SadPath } from '../src/steps'; +import { ViewCredentialPage } from '../src/page-objects/US_ViewCredentialPage.js' +import { URL_IDHUB, USER1_EMAIL, USER2_EMAIL } from '../src/constants/env_constants'; +import { ALERT_FILE_TO_IMPORT_IS_EMPTY, ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_CC, ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS, ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY, FILE_TO_IMPORT_CC, FILE_TO_IMPORT_CC_EMPTY, FILE_TO_IMPORT_CC_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_CC_WITH_ALIEN_COLUMNS, FILE_TO_IMPORT_CC_WITH_REQUIRED_EMPTY, JSON_SCHEMA_CC, SCHEMA_CC, SCHEMA_TYPE_CC } from '../src/constants/constants'; + +/** +* Checking data section: view the lists of files imported, import data, delete... +*/ + +test.describe('ADMIN-> DATA Section Tests - Testing with Course Credential', () => { + + test.beforeEach(async ({ page }) => { + await loginAsAdmin(page, URL_IDHUB); + }) + test.afterEach(async ({ page }) => { + await page.click('.logout'); + await page.close(); + }) + + /** + * Load of 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 - Course Credential - course-credential.xlsx ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_CC; + const jsonSchema = JSON_SCHEMA_CC; + const schema = SCHEMA_CC; + + await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema); + + }); + + /** + * Load of 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) - Course Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_CC_EMPTY; + const jsonSchema = JSON_SCHEMA_CC; + const schema = SCHEMA_CC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_IS_EMPTY; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (bad formatted file, without required columns) - Course Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_CC_WITHOUT_REQUIRED_COLUMNS; + const jsonSchema = JSON_SCHEMA_CC; + const schema = SCHEMA_CC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_CC; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (bad formatted file, with alien columns) - Course Credential ', async ({ page }) => { + + + const fileToImport = FILE_TO_IMPORT_CC_WITH_ALIEN_COLUMNS; + const jsonSchema = JSON_SCHEMA_CC; + const schema = SCHEMA_CC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + + }); + + test('DATA -> Import data file - Sad path (file with required columns present but empty) - Course Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_CC_WITH_REQUIRED_EMPTY; + const jsonSchema = JSON_SCHEMA_CC; + const schema = SCHEMA_CC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + +}) + +test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND Course Credential', () => { + + test.afterEach(async ({ page }) => { + await page.click('.logout'); + await page.close(); + }) + + /** + * PRE-CONDITIONS: the admin has enabled a credential of type 'Course' 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 Course Credential - for user1@example.org', async ({ page }) => { + // View the Course Credential in status 'Enabled' for the user + await loginAsUser(page, USER1_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_CC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_CC); + let expectedCredential = await expectedCredentialSubjectForUser(USER1_EMAIL, SCHEMA_TYPE_CC); + expect(actualCredential).toEqual(expectedCredential); + }); + + test('USER Credentials -> My Credentials -> View enabled Course Credential - for user2@example.org', async ({ page }) => { + // View the Course Credential in status 'Enabled' for the user + await loginAsUser(page, USER2_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_CC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_CC); + let expectedCredential = await expectedCredentialSubjectForUser(USER2_EMAIL, SCHEMA_TYPE_CC); + expect(actualCredential).toEqual(expectedCredential); + }); + +}) + diff --git a/tests/08-COMM-EnabledAndIssue_EOC_Credential.spec.ts b/tests/08-COMM-EnabledAndIssue_EOC_Credential.spec.ts new file mode 100644 index 0000000..eaf7bfe --- /dev/null +++ b/tests/08-COMM-EnabledAndIssue_EOC_Credential.spec.ts @@ -0,0 +1,136 @@ +import { test, expect } from '@playwright/test' +import { loginAsAdmin, loginAsUser, gotoViewEnabledCredential, expectedCredentialSubjectForUser, testImportDataFile_HappyPath, testImportDataFile_SadPath } from '../src/steps'; +import { ViewCredentialPage } from '../src/page-objects/US_ViewCredentialPage.js' +import { URL_IDHUB, USER1_EMAIL, USER2_EMAIL } from '../src/constants/env_constants'; +import { ALERT_FILE_TO_IMPORT_IS_EMPTY, ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_EOC, ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS, ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_EOC, FILE_TO_IMPORT_EOC, FILE_TO_IMPORT_EOC_EMPTY, FILE_TO_IMPORT_EOC_WITHOUT_REQUIRED_COLUMNS, FILE_TO_IMPORT_EOC_WITH_ALIEN_COLUMNS, FILE_TO_IMPORT_EOC_WITH_REQUIRED_EMPTY, JSON_SCHEMA_EOC, SCHEMA_EOC, SCHEMA_TYPE_EOC } from '../src/constants/constants'; + +/** +* Checking data section: view the lists of files imported, import data, delete... +*/ + +test.describe('ADMIN-> DATA Section Tests - Testing with E-Operator Claim 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 - E-Operator Claim Credential - e-operator-claim.xlsx ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_EOC; + const jsonSchema = JSON_SCHEMA_EOC; + const schema = SCHEMA_EOC; + + await testImportDataFile_HappyPath(page, fileToImport, jsonSchema, schema); + + }); + + /** + * Load an excel file - Sad Path: + * 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) - E-Operator Claim Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_EOC_EMPTY; + const jsonSchema = JSON_SCHEMA_EOC; + const schema = SCHEMA_EOC; + 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) - E-Operator Claim Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_EOC_WITHOUT_REQUIRED_COLUMNS; + const jsonSchema = JSON_SCHEMA_EOC; + const schema = SCHEMA_EOC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITHOUT_REQUIRED_COLUMS_EOC; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file bad formatted, with alien columns) - E-Operator Claim Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_EOC_WITH_ALIEN_COLUMNS; + const jsonSchema = JSON_SCHEMA_EOC; + const schema = SCHEMA_EOC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_ALIEN_COLUMS; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + + test('DATA -> Import data file - Sad path (file with required columns present but empty) - E-Operator Claim Credential ', async ({ page }) => { + + const fileToImport = FILE_TO_IMPORT_EOC_WITH_REQUIRED_EMPTY; + const jsonSchema = JSON_SCHEMA_EOC; + const schema = SCHEMA_EOC; + const unsuccessAlertMessage = ALERT_FILE_TO_IMPORT_WITH_REQUIRED_COLUMS_EMPTY_EOC; + + await testImportDataFile_SadPath(page, fileToImport, jsonSchema, schema, unsuccessAlertMessage); + + }); + +}) + +test.describe('USER -> Credentials Section Tests - testing with USER1_EMAIL AND E-Operator Claim Credential', () => { + + test.afterEach(async ({ page }) => { //este se ejecutará despues de cada test + await page.click('.logout'); + await page.close(); + }) + + /** + * PRE-CONDITIONS: the admin has enabled a credential of type 'E-Operator Claim' 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 E-Operator Claim Credential - for user1@example.org' , async ({ page }) => { + // View the E-Operator Claim Credential in status 'Enabled' for the user + await loginAsUser(page, USER1_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_EOC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_EOC); + let expectedCredential = await expectedCredentialSubjectForUser(USER1_EMAIL, SCHEMA_TYPE_EOC); + expect(actualCredential).toEqual(expectedCredential); + }); + + test('USER Credentials -> My Credentials -> View enabled E-Operator Claim Credential - for user2@example.org' , async ({ page }) => { + // View the E-Operator Claim Credential in status 'Enabled' for the user + await loginAsUser(page, USER2_EMAIL, URL_IDHUB); + await gotoViewEnabledCredential(page, SCHEMA_TYPE_EOC); + 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 in the screen and compare to the model + let actualCredential = await enabledCredentialView.buildACredentialFromInputValues(SCHEMA_TYPE_EOC); + let expectedCredential = await expectedCredentialSubjectForUser(USER2_EMAIL, SCHEMA_TYPE_EOC); + expect(actualCredential).toEqual(expectedCredential); + }); + +}) + diff --git a/vc_excel/course-credential-with-alien-columns.xlsx b/vc_excel/course-credential-with-alien-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e3609298f6346769307b9b36a6d48c64fb7f6ba2 GIT binary patch literal 13826 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 V#GBg#00?iNlsD!mF#h)I{{UHS>(~GQ literal 0 HcmV?d00001 diff --git a/vc_excel/course-credential-with-required-empty.xlsx b/vc_excel/course-credential-with-required-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4680b9ea4f74f840372685d9d2acfeac90f03741 GIT binary patch literal 13357 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 Y0ZKs{;*ItI0K(fR_04k#nSML_KLVEYhyVZp literal 0 HcmV?d00001 diff --git a/vc_excel/course-credential.xlsx b/vc_excel/course-credential.xlsx index 8ffea58d95418b269ae587cac972fbcf102e68d8..e1ec19fd70bfbb362334853dc7e2dd8fd967e5a7 100644 GIT binary patch literal 13744 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 diff --git a/vc_excel/e-operator-claim-with-alien-columns.xlsx b/vc_excel/e-operator-claim-with-alien-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dbe12533008d5b2c4b58c5d4eb2edd52d0edb390 GIT binary patch literal 12710 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 literal 0 HcmV?d00001 diff --git a/vc_excel/e-operator-claim-with-required-empty.xlsx b/vc_excel/e-operator-claim-with-required-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..60e59eee4e575bd92d2b72de03d74f072dc5478c GIT binary patch literal 12624 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 OA8Fvo$z%NE-TwnwwWL!3 literal 0 HcmV?d00001 diff --git a/vc_excel/e-operator-claim-without-required-columns.xlsx b/vc_excel/e-operator-claim-without-required-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..332e01d1c3c436c662b9384d34166e9c408e065c GIT binary patch literal 12518 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

@R{sZD;!WZRLCd93JD)!NHv(K}T*spyqi6a2 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 literal 7956 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 literal 8606 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 T6&ef-I`l6ID%>N|U!VRDO`7k6 diff --git a/vc_excel/federation-membership-with-alien-columns.xlsx b/vc_excel/federation-membership-with-alien-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ae06383a3b604690d5d1557b46ccc14afe54f2bd GIT binary patch literal 13895 zcmeHu1y>!}wlxmH-QC@TySqbx;O-FI-Q9z`1$TFM_k%-#1a}MMJKcTn>+alsc z))}Wp)!4P>IaPbjz4lsrmXa(u1Ud*52n+}a2nmQK6+&Y$CWbp^7AEE~gG8^?mFz?R- z`%!6?1$tMLD6M|PkNCXuqdkzQg-ED3M5MSM=A2xaNF-HNC%t#CtQ=co#;b*hZY*bw z%JP}nUNBEJK$eJD#~ocmjF%sNa4US82Bl24Wi~g3IS+A4rmzS|cQLRit<{SXs`2g1 zj+d(7`(!B(f;K;EQF~H;sKaH>Ow<$Uw`02v|8&(nN>kY1IGQ;x^SBM zTR^)NKp1xShy?=j z^Cvin(%;C7rq^u>1|;t`kehHo^6ER9+Bh*W{YYGjl7Z(^4?JPT&OskDX7Q9GvnsmJ^=#W5r~2@g-u@ z@mi1ZYa-uo-WO=(7nAqZ`i_4KAAcb=1}CJ_e$73;u%1&?{&@ zLi5{5m+(Gf?qo$O)wE+8D|le3<2RoEFvE#Dy;c7Vd!UD)O>}%*b7EZ(+=CnXVWpYtBrhr|Kt2 zFk_8007?=z-`j0G+IC&dWmzV0`%sUIsS($Q_lSGoXm@>dWs#^5o@h1~ypZ-&H&fs+ zMrT!ofs&ADsHfjgD$d{#Gn~-c1QJK-bI`dCAE_yD!U{`B#ctc?L)opSnO#_|oMs8e z<+ZjZ8V~%RgH=zf0vlUeh%;!+zW!_z1>8gB26_<9-Qc{F=0orRnLA!2p?mBTzlXW* z{9z{VF>T#f_zeFQze1L<{5`*Ss55ccs3egeO`_A+g7gmci(O}tmvNdNz%~8E?S`-Y7+10+A2x9ac>5$Kq7$KIk z^^a^0I14kTyMwfJAV!QuwE$f7LV85W2^~w0&&c}iX%98ZSemQYr{ziDf zw@keYry;`&Ny2$qJA1>=RHhNg>^bk4%{Bo|+mbinqqDuF6T>fsL5(l}xUFJ=7z6nn zsA*{OY4p%+(k4=dflQ7N9zu~7M(k#gIs4sCfz$#)XtY-M0le*;^R*niGdD@J|l7E8QC+}nqkiOdtQsS`nS&tfU}3}C_KL%=Q2)*=U4xG z-s~Iy`FlEu!XRdi%EoVc3>ePAKJmj5C!7Fw!tbHQQnBoM8?Rs0Zo=}fx->vP9PJhE zSUWAMn-)wZjiNQh)*gw<0fw#G463YGlB8^4-&{+b+&K=6(!umS&oydJxVR9O#=^ z$AUT*wjYstlKbzIl~2|DtKi9Tj_GkCn%_wk$*6do)}MA)oSX3jo`Mb(4`pSBAW`E* z7K+cg4}7u;Cx%MH+5>q>$-mlsdnB6y?T6J>@3#pzq28Nmz7R`_NL~s<(EzBOu zyDH4DVwpeco{-p8HJdar>`V9OD=!fyEEJ8Zh^s2A6|}wB+!gI8)HTvJl=(F~3IoIK z)`uz*KdcJ04rR}qVWNv)P3R+Ul6yoNL>UCRQXc6Sb0rrA&IHn_P%}ELK^iPrU0|;B zi*@hujyFPv=haXruKVeT48ujz8OgK4gl!Gcv$N?TiEii0d)r%)hIol*YJ7`k+J@c< z+X5N>OgRR}zs(u+Src9Cr^zY=qOB>-9`t_1nAe*pOQ-=4s6BkX3x8yy4=l>~oNKPP z@a6uO%S@NKGz?Mq&H2Ml|<|XvK7s9-aQ)I zv!_pjKo+M_c8@*|Wl*|X z0S$eK^WA#4{Gg*A)3(t!{t@yYgd^H#QHDE6c_^*80ddbfwW0oS;ukh6=49Tu?J+jlCf2J(oVvUxlau#9(|Nl#xeJ+bdMQefbP%6uTTVIB zrw_X@@x4GHoYG?D8<&ipdJ>^^I5EC$g$RgTq8R=_F}#k=n?&FINO5QE;^!yWAF>4p zY5pu+)`)b{ow#-Lj!~0Nz-YJqBQyGmd{{*){~l6JN?1PS!<>Woy9OP7ZQ0ipth6re zOp`YS<`0596@LF1N)QP`t?E6JER7WkK4KJ# zKKIEToS&??!&)nll9wnL+{4TH=tVM4+T=?G29`8*ZK_dfm24hDdmLx4!0F_PP|v4OTlZW&*5 zBsb^veDv2tr3F_<2P*aP3v{0(IkoQzLCb+O+8OC2X^|Si=M&_{YGuP}PyEfv-G;Ow zd0*ylqN`A~sk|8Bxjs5sN{85vw8Xbvp0V9blAC#Hu?!Uvk2NR$$UEk>RZB>IkfZ0? zq^XB}_^u1cKgi*7c@l%sIVJ>4wVj@A^W`avKj@(>JVhH{W z`{>I-eRNd|ue);e+q*L+OxANtaS>S9*GJiXLrqO(W%W_`N<~DO9G~*0KAr%cBPyRM zPwSdMGPWoGA`6`-qE{)qid!WW%^%BOj*1`0&O8+qql*2zt11oGJ!#CvDX?%B=)kLW z$aPToXVOCv^Ie8xO9P&H;v2k#8=cHE?@)`TTJNrd-@{3SsyAoW`(;E^D@pKRV0amIlgnibR6T_G)%Ii5Z7tQ!WKBbHThc)u z)!6DlPi#F~J|AlGhh2(s6n}pB@u`|Zs_}{(YF^jbi25q<`=+u}1?o5oTCa1+iCCmM z5A4)zO2ka$*Y#Tbdy_Sn&hy$zajMk!E2Z!QnVN*}CKNz!Gtj~7qo}Qv?B;_3X4vNl zO0k{=r)$2P6gLXoW1Q^;eQ$C^1OIUaULL&5kls-1 z&U-`dEG5Es<0J=TlN-2afMJ2IESreqypBZjICdpG$A^+IlU!5~QGE}j}tD&M1AYh#5SYPz!u9S?2v z1T|#Za*;#ix{0N^>^ISxVJg?*TWEmuxTMYn-mpcEQ%N4?_wAegJ3mOk54e8{(258Q zrW?QjJp^n;_*Z~-_OLPiJu-J{$l3$Akh_^?e-a;8AEQh(AxMi8NLmCmQ^(WKiZV5d zt%*G{Q`6G59Q$pP&}cdC4Od0!5}7!1T|AkM9>`CW-GrOULnv-u(mD`K!YQM6OKLSIsX1h|d+Bu8*MIP%Xj)hGZW+?#&I?@m(xGnEa{1c6Y83jNu5JKdftCbE zr8WhxXG=PITpNz%yQDDl9S-S66E0@uBL)ThSeV%nM&MaIskKPNI-YLzK;+O10v2i& zP3w9nni`iaS4zUd_*QtnK*N9(i8uqT3#6xyvU*YP%x3nB6A?xb<*avl3G;o>G4;KM zUYX^d><=mDrw#gDgo*U>Y!P-HVQwVyk(^GZ0IuxT*sAduY8UC_ZeHZpD%DOsoe^$ zurLhQD)~76(E2X>zM*p%dcR*w!=d5fn!X0%(3xIWNht$N)w49{Nrm9+mnw-@STwCd z$(Cw85#{#csfbOXYF|p{S5*?|Ggs%IUkt73o!ClZ-ia=?V!O(!P8j}7O++x)oWZ^v zgYixk*%e8*9wc5Rk~B9a2zkP#eRwhCv323u8v6lk#5Tx&{4%<`3Nb%oRkEBA)nf!P ze^sAQn(}@4Y69}jctw&JOqWXdb~2Rks=YX;WawNHd3FVU(m4vooR0hns^FQG8iW+P zTF>2pTEzmEJs};#)&<4L*6wHFd{$WxC`+&FVufV3XK!oaMZlsDG?|)8KanT4(DO1v zexw6}j#t91?)I4Xe3hhRE6zKd$;=@i>?Y{5qMbv%i`- zGLeF%XqQ@{E`U_9b2xH5bqCGFcq0bU7@Q<7zpG2xVZeKI0j2#tmSfomoWsHE^o1`2 z%6^~u^7@4MmQt1d#%$qabz+}cTb^nHz!fLiJ%ZIe2_^`ChNs9&#Ds2$oj12qUNf5p zD;{_TC;aF`@niQj`}H4(0s84$D1Bg+;suzVlKn9Z{Fa_NS(utSJN>J;@%stO|CBa5 zQzq>Cf2-uCJR>DM3_?)bq69EnP+)GV-GWO@lh<96)f0gEZRf*)s#HXVn;jix7q%_m zId?D7uIJs%XCza6$`!W=o+_eIxo`74;jbHoX2zkmW;W%$wGrs($@I+&6#DEi@ z(mdrv<6tOWH5W`IbD5Z&m1rhkumcMZt))0Azc5G~+}NM7BP5LYocZW}yJ;qN)sAos zPd)56Oz_554fQ23dy#N+2eKuPF2rl{gqowRlxEm=#v+ys7NMtV}`bPMWgh>vTZJbF=~ZB8^97({^f!n4_;0!yhMf@ z`e>`m&G%?&^9y|^79|FjdSopTX`H&6N#}aW@zKKbcPI~;BwDhNGR??ox%>`59Fc}3 zN$yfC%NeLhu}b5DXAeA>xLYOpIF^@2p8}(aG`n{SKNgne{$vg`*0J;xnBLVM?LOFRgQN|Ne3|61i6GmVVbd)PqjT@JN)5*%fOR{l&H=`MxvIKcoWs$h^)(Kr3><1v_8KL zGP%%{5>?7Zaa>nNRQMdo#4ZQpDn#1$$|(0OBXI&vZxYS`<4L2btFJ+1|0SsEwqss_ zf8gbc98->l0(E@6f%`}~ic>3@)?heTK^L$fF&9B9fQ+@5(jLfRTd|aLKTA z+;M9t+oNzb4lq&Dfi>*RjfRJ4S0qY=H1Y|4a1F=JHx~1v3#*o`L5qvl{hD23dcPe;mn}V%_ z$Sou6WZ8vS5N1tMeM!9(;Hu4k=K5mOunoV^@;PoAKpY;ZaM$ip{oRkV1kd?R!nL96 z>4piQ4%oc$MRxW}Gf1-|cmebU^+IJod#daE5Vz1QIjnN(Kr&$OdKsh?WC$={dLSHu`e$_Dwt>x;iOf;BB38#@LMvNR0z~kEtL6 zA`Wn+dlz_7AwxNUjb}N;#Iw=F%qwjY^tYzF33~hFG6o>Baf>~rEV!Dt<78Jy(qCpT3}q}4U|`cQV9JNM%D7$!vN6*720fL0^VM}dOzfd7Sh&)8 zFU6zt=N7N74zF+_K}=lb3E0h7qh$Tct3hihpDyT!ZD!$$S_gm zr5W;;qZb436U5xZJr87Gq^#!z;u--*7o2CZ21Ag-1}mwgvK>Ay87F5>myj>)M!Pn6 z9z~Y9Ll5c%;%nll!f=i;)E!djmqs#H!W}SyaTbX%XV+2-)r6Bi(%NCJ9z~mse)_AB zA(e3?({UDXR8qnPLaH*#QXT$xo;8>bdj?bn?vLK%cvwGz1o`~x{-|R8?qD{F0IPjw zT3T_*^o<@wO0X3=MoC=wgpH z%Rj-zArCN=A_p7cf>ElVF^dCtG$AV5l5mo)85u!yt%#>ML)Hv187W8m=yn4A6-dDk zLfJ5qN9h^B)QjU!xBchMZu_}~&d3bnLGg{D64kOQsDqVk<{S}x3;Ns9bwR7HM;q$n+3!$NOw=N;^He!B3W#?nQon?MoG8&4HP%Sb zmN3OIVfYBsT%7umq!lGOJT)rSIxjii%t)7b0WRY zzP|O&cg2nD@`AcO0q$PZ^rm0BbBW%7vy%TTr}u{eu6=;%WfXaI%mr%Wyu8w&B*#mIHjL0v|v@mM=?M|!0^ z3+-E#ycWX9W>D0;&$lbB@^d9ZZz5p_GTPeCHdIj0^@z=buUr>6(+)Mdere3kLcv9R zwvZ_mUqKSs4@5I0s&?#p+)NpSRCb-iaTKNL(ok`9w%vbrS-a~Fk(0pOmpT%(1ZsY< z=~7E1p*QwOF((f(Cu2md+$jy05e+~JuXhO1BwewaX`31U1A-z7!l4{pm$s9OwZb+?n)a|u$EHFHYpFR1 z7rd}Foos?xRf~q@j0L99{R!)tLYrQ7+auU(3PpP6nQO<^q-mWP!l-W*!|uv>%(~f9 zA71>>%IC|bd$ZC7hf64vs~8Gz`=+(BHh1ty9QhGhi?dlhrc!~hXfD8g{|ZRA#`G>6 zy4V2UJbM(1;*!=LV;@rMF{q}!k>(uw7fT5Vu3)K)9TQ^e<;hE)z7Q%`nq*no45q~V zymTu_A~WoIGvSN7s0;lb_fWkachB47r@6x1SVBPo&)dS{uQnUQmTDW1-vKjkKc0K(?^D&<9t@hVN4Qsv$QPc%L=&_<5W5N2i0(>FBFOuES^j1r>Gat zChGZlM>uwoZzyK&>x_I*&-FD6S}w^qDdI6EBo|FXx+`b<{JKSQlP9qBKVubRm){m# zaOk=_mQZ?&;Q&6UO4vy+gvoM6hw^K(4+N$Y9)W9P4y<&(x;Z5DnjxX;_=u@@679o# zK1SlmlBFlbl8?6rbI;Rff~MgY+74^N+IFUkoOlY|1v9vGjtWFov zbCHw|8fJ7A7sHiC#XNI1)m9i}88q>+R!%8>xfA7mdm9!`~ zuuTcMI_JWG6C+g?In7v^#)}L-Doc|~O?tn-OM+V)u{yBhOHiIS6ED;H%8ViW)8Crc z*7jzUVcKIJgJ}YOy4pB(h>NL(N8CK!W|uPVh&4@LLz|57_%LOY+Ray8Zd^Z}c8K{c z_e;SHT5GH(juld{Lnb}*{L?yYs}f5XZSoNN>AO}jwkGfb$ZFqR76^uh7$iv?3C6*eBpkGY@&qr0z9_06GX|pCJxHDJ-dv zgwV5GYvOov8OgSq*XQ^B0P5DOY2Hn4{n7cBZ_YE8ryfp+^-hjgQ=3Om(b*qY>s;y< z?$U4*@7*K6-&=4jVvnS8S`T6Ad0&FycR|)5Q_4xdeBU9_A?Z&x)Rz*v{&Ob{4pA^B_H?&>f=C7?2VNi?H!z$j9r|Z?QQ?1kNdAs02s)#;{Qh<7WB2tn2LH< zOqzDR(VASQWz>Z-M)@`V41#vBXFpZsfnL(h*?Fewkm$QVrGp->?moLAb^vBclBfRu z=c$ZI=IelySfc1qT%x{x4<|2Ges1GF$ajR|!T0Y8MQSOE_2Bbb6^$y5=kZG2!%G3G z3lAzn)`Mk2&>1YQibKai%7bsamq;~P{eB7AD5b8x9o*}hEngTf$-b+{>&6HIyw{q! zC#0KcQ^`%g1){qRfg7?7*NZpnV8vB1MW24-9*}avSjwF-Lg5U#HrV!Yn37(TG+#s5 zXROn?2*{PEy7F8LxStK!CpnizFVoHPjOXyUk@#>cQ+{keR#LEHn`!_1H1t=w*6qkL zSpv|HaDhczu z55)FHV05n>d?&r}J&tIRG9)~LK_!8KPrbl2mX2nuaTS!o5pbk{rUIR{(D*suva+wk z0Fl5mb;Z}vGby0T_(O-U}cBIoByBcj<(;n60InL$RlE+Z^`H2^hcmB+k_TU@|8vHe$?D#6e z_aF3jny7ujc0n{E2ooV^a2(?0$FMu3vTkLiY8FXZY0@E8KfxcZd)Nq`e5D@kD|TQ` z6LQ=~{basI@@l~m|41}A!F@H#e5Jtk0DV-F;M93Fy?!mb z`)4;!g-B$E1L|Ssfo_cQS2s4ccQpO4AOG8nK|q34=d1wC=srZJM8UcHqYCZHas~a` z^#~bF@zF6|H1qP6>Z!p+^mp4AG79s~=ul7}yCsh{ykglqJkHslzy+wS55@VbVZkIc zzf9WcdFwNcp9BVv#vH8UreX01?}c{xaiUeDEDsd6AbP7I!?32$!f-OJW9y1qA~QJi zMWYzjwl;O|qkQ(2B*0SihIUp_C$fZ2kR{}n4=(0q!<3YvnNGI5aG{J33=Bn-gKs2U zxrM~*bK9LlXmboWRXZh^cD8v){1}<k9W3N~VJ% z%lqYrP;$im<5NE~DL!XjK8HVfX3oZq8a^DM6ExN4V$fx8;oWJ)kNWL+=s2{Ho1JGpQBymoxgwV<0(92ve1eI59|#9;EzlL|tp@A-E?2Av@O76^V%fsO5LZGp0T zr{DA6!OsA@1tFklGr>J)q0L$1L zh5?-x?!$1T_v&W!(N8|!4mJTzns>5|3fKhohJL*uE+$6#SR`JYnRXX!4ml@jvV|-r z*3PE}*N<~ttTOrch@<|lB(hyI62dzL=ooH3N%-E_nX|hLT2WLq)!BvdMv> zH1vBMpu%rH`oF`UbNwOpzyo)q)duPi~tLo>g zi*5IsU7gJ4k+v0rX<5;V3JAgx%xnNevdDX;{u7N7oB;YH75;jX=+9?{d?)x&wt~Kg zn}YEc)UTCYx3A|#L<<6kIW^l#Hx>68xo)K%!ykqiBkF@{x z(QAQrTqTKj(SY(TUMVKU6Hb(U2b$IpNL_F07X1|<2I_bPHz=~jUr7=TK%e||IN&r$V{qkni$ zMM?JW0Do7<{}rGM7`gtUmH*Z7?;7F18eRhHR{y(V_*a}?g`0^e2KHP{sLW4hnI)DW{Adu7l$PRur{dIBj zPt$(j8x26y|KC#OuYkXuF(;NhZ zm?kstVkKf literal 0 HcmV?d00001 diff --git a/vc_excel/federation-membership-with-required-empty.xlsx b/vc_excel/federation-membership-with-required-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5d099100d78f0251a96cb1d5d0c5129c9f6040e9 GIT binary patch literal 13819 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 Dbg&7V literal 0 HcmV?d00001 diff --git a/vc_excel/federation-membership-with-some-optional-empty.xlsx b/vc_excel/federation-membership-with-some-optional-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d4ec9b00f42dd684ede68cf3d3780de15f30f3f3 GIT binary patch literal 13828 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 Q*DpWGFUnD2`R&vH10DPO`~Uy| literal 0 HcmV?d00001 diff --git a/vc_excel/federation-membership-without-required-columns.xlsx b/vc_excel/federation-membership-without-required-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..829ec13b2130b55eb4c3267c6a009959a8dda7fa GIT binary patch literal 13532 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 T6&ef-I`l6ID%>N|U!VRDO`7k6 diff --git a/vc_excel/federation-membership2.xlsx b/vc_excel/federation-membership2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9d5acd8688099a876a16979daac1144d011c7ee5 GIT binary patch literal 13822 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 literal 0 HcmV?d00001 diff --git a/vc_excel/financial-vulnerability-empty887.xlsx b/vc_excel/financial-vulnerability-empty887.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ed6c91aa2f2e867a5067c16750fc9e07dc33e12e GIT binary patch literal 8290 zcmZ{J1yoeu`Zf(igACmz-O?d7bax0M9Yc3X3eqiI(nEKb()p8+kZz=rQ0g1?{;yZQ zduP@;`^>EMK5ORLZ$4X90UiMl1_lNNdWpdd4_h-j!@|HEAi}^rfqr8k>0s|_ZtrTW z>E&qd@`BA1Y*&#qqWpmaTl&gZdXrWDOYL)%XNN((xJ+uI-E)ckHn(vDes>~?A=&{8 zMGQ+H<%O@ZZ7mP}F|#c*!+>q56CkmGPYFm?wr(4oAGoFSdkFxUB$s4{W*)-KoB495 z9}B;fcoiwYZ2B!W^F2!s%4jCC0(U4HNXi=n?I_eR0`a7+XEj^Fl4dToe<3(pMuXvF zS;WwJifEHKoaSIcabvZ`mZGPzH6!)dd4tw#hCMzi8gq@{!b?vD#3%~7Y3^d!Vz;k# ztu#G`YF2>Zp=2sK&<|^Dl7$uG6OaK#eUKTwgfH;T0e|v%(D~pHzYs+o39_3rBGZK# zfXas7Zdk9;74{x$Y?NN&BHG)?fx7WNvl5oyiyEKU`? zB*xz&MLl~1-XX!LYAc?H$CH~hAe~Em15c-`!v`TCRy|X+X^V?MKb4bY#wAadFQN-8 z-Fz;ZGfhe+Z`2P$Hxy^G8H+0D}GgT?XSNE)+0 z9T$5H0v}6BG zk%xn`?JEZd+n-MSFS>ecpq?yse1}?drSFa_&lvB*7;3oq4L+p4QPED$s>%B93J0J> zhLVSz^D$~J4Y}>>*u-QcJpF! zcAR^&RhBx;Q++jcBQnX16f->n`=6a0`T}v6l+t9ij1GG>w&63mB5R~+owQfBz=Dd3 z=Lh}a4?~zrQ$)TP+qTaq_?R|5WPO~&GbP<@;(>-N3B|=s&P;=g9FYPh{1fXGgL2tp zZRjHcMBxLX?BC#=X0P^j>Sl$qCjA|UKl2u*E_896?XU0C{LPO?R6vm$l$$|h7#PCe z{QP9b#md~=)rI}n!ugY;!sPjw3=X{KD>uNwV~kW0wLz-|o~-(4O*cRHRk&FgP-CLv zeWwMMWI;>E|Q$&Pa zbU2anWmc6au}HkoU|cQo6$Lx*}z8L#bI|R+=G~loKv7a zbyAz9oqq^HmjJ{shANiybNC}$BkM#UxYY$q!oH+@WKCQ)?IwA$Emtyt+R@4(f_n zf86l@0yH{)#6I|EmAON;y~MzRwaI^8Aes*g-Wh#2pP*+N3^us&!evz-2u z^dfk{m=Yg&Ro?+I|C+0-t-f}I8-Cj8w}nyRr{0a{aW5wuOC1(cuy-13(stRIXoGE? zDxqp9*=ayuy`FVupbyTUYFVd^smpWOU64CinwX@Vw`OnP@WXVHcqgL5Bp-NT+VQUU zvzgi2?Y_u+;c3w@uar=D;cID%W4;c>*tOX#b)37Ro`uODnv0&*g`ab0N1C;82~nX`$9wY{YayF1uU z>i07z8}#`wRm~xT1ACw=VylB5gB~`BB(6x=Z;>9Hc&UqXfY8(rn#(K5@o%JJEv+v_ z6Goz&`;s;BI_Gt*EH8K{@H=W~1_HTFpq9}jm&SR*R)eN<@lFeilZNx$z|iZyp{1Cu zdIx2i1+1uCu(E(6A1;I%!Y~nYmMd<0AQ+g$ap)VBq~~UVNIRtmhhtcf(Ko;9I^`Ps zLszX^7LG!H!VqiW$`{3%(Kde$O({24Vj`nO2!US4JfSU>X-XPygy=ZajbN~?sBls# z&-S}i&wDe8JsQ3}`66rZ1(ljM!8`u3^=#VWSM6Me3jc(|hQb)l`ZPRA`*i{>%K7wp*2(xzLOCV-V#AqN; zB}|J03F3*M4e4$}DO*LIp;eWZEScRl5h2rDLn%pFMkxuJIiqhqs79?aRO+4a9@IJz z)Gz@?_n=09$05v(OpT~iRO;2djbW@$KMC~{dBgM?LF=D|u5Y1!eu%c|T?Fk^dPmms z_3K!94OR--_ppD5#3@rWWA@KP1g(eIzeB>*0StyVy)M7%U|;f>{nT^pfn(u58}`gy zdXZd|`O4?mC~%skYq0doP94?83q)Zd#g+&4$tBO>#Fv6AvQ!@K8!ek!`4Orvbq5P| zzi!P-Fh_xF*^EB_ICsCZD+F>%p@~YDU*O0Y^Qe^Zh6cpT$@vxNUyXhb<($4G3>a7M zXNYG@hGDU2;Y~sdDkP5&=G%$vb9vG&y`;(En1i~+mOlK&Kz4WAi-PntD-YGZ!M|mC zKdG^%!AMrDKbTg|t0jrVPsit^!N{6h`-f&yBt90yJY;K^W4!bQVw`5b)ZSGmSx=zhs?{kf;D zbnw_I^to2zdrJ#TOOdTxq3d;ox18#Q7Kx=y0d}sk1M(e*M)nk1J+B6dC;&_|@DMLQ z4K9UvnYYX{;q@x|bzn-u?2q^i++nFf@wbXHV_>+AX4tsZizU||xxwPJ zZ{81t>8Xp_tQo>>!xFI)Kj2I~EvPAYciX7ILoGl_BnVj+Qi&TS_ZzQm;KV4P&wQ{a za!FgwzKQ0E!{0?JwWEb&_8bOfXgeQQ4RSe}juV9X-V6`+v1LV8y?(^zBFiMY9+b(a z(8$2}7n`nLcILlm?9ft*g_ehoD;?cVOMvy0LSQvmCqlFIh1Np(G^7WK=sQ-WpCrVYFK|}Mx7)^%uRWc zDl)v@*W?}9vwD_dBaYH~6S+n=#z`>+vk8VkVu8C=)WOi^YqRlqI*ghWBDVkl@!`f~ zcM2YlYVK(>$?k9*)v_G{tUt_>Aqgr*nMEqk013{M=y0K@BUqaxvGq;rN0$!|)SUrD>O8+s@^oN?V zTSQZ-Fhrn-{$+vu9%w{lAs8WjT=F%FF@NsMb~+I}#moL+)K zuw9GoWa)MF!dIHUHMD!Bd!ti$qYREUj5M<*SV-&*V{!?=Mq z?DLKUB0mGO+|vUmeb=V>`TKr`VJd`>pjazO-g3Wg20; zcm0rr466^0T6rN@+~yP9{?7PbwNlhI7PQySrMkvrLMVq_q~%zCa_%pKPx!q%Z>s}V zZ%xj-z06@)#d*M$wR-axJ)qic#TnK{M+S zzv8BcFz!}g_FhS<|r7lBT50UG8>xEKn}s@|k_FL=5ReY(4`sDZD?vnziyNB9GzSq+tO)S-RePv)Sx(ACNu zZ2tTHtF#^JDa9^I5q6$4gF2gHo(PRqrdROJ7la-*LYC@F2HuL)6chQBrw!S=NFL$< z0BYC-wDzRfs-?-zNyc@m2-5q;s~0i}rxvwijgc@70<_tu=l-v+$#(V|kU1q~q-2K^ z8@CKA^}=aIv8-?#D};jY3say?t6Tt)itJ)KuJwz>AFE8unmBI(aA#8X>y1FhWc!82 zZzd!oBf@lmFCB+C4T6~^?yIL=Sc$eH4XH5cT%B0wN$Bdas+qG`gLXg$UOtt-qg+a?&OY{ zM5!raLLBG)kS8Fk&xJfq!0h8Z22DHS$t(*jK7+wXWss;E#F@4Ks%00R5{pfnN8Bbo z0p}9-bKj||Y9^pN1HslKg4LJ}Y+f7p4N*yJ@drbnDh}EpWJj#s`yQ{u`+jqCtu8T4 zEJxVe_3Y#+{2E4Ph~V1DvFO9s43)_ol`g;U*9zQ5``0V}x8FV+cXGfdWBQ)XB(CI$ zc%5EYzV>~XgIU4%Ect-ULyx;eJ+K=v@G?UjhA84(4V_w%8IK>X0CrA84bjs!A`S4F zN^55cI0>WJ{Wb9h_yUWDQ*9dNOY}ObW30>UTCdf(J-q^-WkQI>+N=BxOb$`5p`&b6 zutS0by~dLfdnqQHBkpisOgRa>;iFSdDx_MUB<-Ew72$? zgzH?-7*X;nuPu(*_8l!=bxFpQ$ugjfDzX3|&8LFd45TE_`Z=fK`D!8*<;j&pjh&h` zvG?LQV!UDFKS{Y5C^GLKz1o%PuRgA^Hk3w{9-!Y;8f}UBvbJF#vN2u4twc?BlSe8U z@v43zSq)%R5od?t)IBupxKb#URaJgG$-(th*4>hNxbnqb7pKy=O@EXGpZ`jf4gm^9ntR2n z;NgU+IYzy)qsHXeJ;a{}ssbjWe%MjvN-S}mmL(f&_w4ELn7h490W}}Uv9eww3U_6H zjjQ6hH~_YGl(#OTp2g%sSvTebLP0c`Pa1&A}mVJF9I=CDd{3(P{uU*L-MrQ2j zfE|9-lwG#z9_jA{UmvdeWE7g%o1mqU=68bs4lA!jo83*qW@G?-uqRg zvB)!=nms|CPuYYIsqmUSg&$E$?246SFr$oQYfU_omeEDw6RH1Ms68i!ed?H;TpALvev=W33hjv4UWFMYUEmS3kW z=O9Fhayu6Bc-nD!aMZw+k4P~&@5M_FOoM@Bg4(hyCm>rVyiWoPWg`<3adznapf7A0Sr?6N#xB@9fknGp7Ne6V-vfU@){+V&BG7!yEN-|8qcx zW7kUTC7;~zUF>-dmT}If63P105q8I6qJ;4(vmOa5p7<~n|wCqJT9Q*+(D7P${mJr3? zQKo-T&z~{M6GPmq{B5)m8+CM;Qm}}7{YL404t28f1=~zbQG6izb=@50uF4XL$bCf` z*_h{U7Nq8F5%NeDwU|Br6~tUyIb!I>gp&xr36h^$biv%{l>8b=dw}{uNf`E%Rm7UX zPTN^F`%tZM!7L%NWmslczZLon$?=|}gY|*v!-@Na4#UHv`R7KLKhhH#Tv+hGm4Scv zo+gftzg$Ya$9{tnIs!4X9AUU?R%qiCl_hA49F)Z;xKH54n&P2{r|HUdb$o=QlF zP4I{D)bLkPicYW!)pxm5?4W1*YTgC6VApTEw!`GH#O13~MY150$uO&3T9=;U!Z|B* zle8%F3YMT%;}B1znF+fJMJYx>eb?Nf0rWAM^o30GW7ND@jap^t_oOv-2Zrc#NCgZJ z*UbY+0jekQq^p`jecQ_T!IXivR20FqzGP0egK(YGw!l4#w~^NCRPY&QzJj_2zL6d+ zyX;>J9fF;${e7jnq82x7=YAwpH!Gf}<7I%POFqH%TgQfYD%a#6UW|ZR$TSJYu0UNk zP3I3OeZDEh+~v2ufcuN&E$D;*3x@~)zYi^;;s5Iu5cqTXFGrY<0UjTz{Wgbz2?%@- z-TwbLV0&!%_^j!V;Rk3g`rju{k8vKK$^60DfchR3=RXqrpOpR><*}sx2gL^I-zfhl zus=3_tPKA#UWJbT(4X+XbmGTAkM*=aK`Y#jMV}Qps{SQDn!7qUS zaD@L_;U5D&u8V&FTcC%3fBw?Hs^nwy$0_iSIRR&PsmB5DXWO7t3{vwE~(wbk2NZ6#J0QKE|)qJ<41L@&`6 z(R)dh>%R~8{@=r#IcH|hyv%$v-<(aNZH*`ZFuvOu{S6NX=LJ$0zy1yjeZ0bhy9SY-*+h`R^6GJRNR?dGCSzshUeOM45pYG^KS=eGnzxh^mt@No@ z(MVT`_7l36`ya%KV@p!I_xN=a$9S_VAC=7LN9+he3#+1a$Ugssf2sIIP*87N!ZC&^ z%jm#ys^bYM&1;Ps^XHpJZ!Gy}DEzoGO_z|b8>5=%NVOSbamLeCW>D^_D!vS7BrYGUD_X zWDVT|g<(R&=`%0_IUf5m{>4;nG?&Yfzw0Jx8zt?R*_9xo(?_V?FESk6|6N8WiZ= zzaT#ke(EVFgFQ&53{)wTg@v0)6jg4a^nhG&pU?6+733-j1XzI+P^lr|wzZn}(@_qr z0rcdGd)G*A>o#)n2@X<}gBGw~9d1c_H_aDFQF0d8ocpXIRfv1ZO=RPK5)e;?W0h6| z!9k}?2Kgf!K-|6+G`T=VdIeF)w??pSn?XyQrZACg@{W${@9MvP_dvU#nDv+noVx!o zJkDg#h$oZPo<84QS9;)dK^!N~4YXO)=YpOzMiZ5u1^T0C86PBDag8 zo_CGBA+($f>om+MYL&UM%8jFn)dqwmHzS5uNH7N-As=JGeOsjaJzkie$1IpC>=)1O z6O-TgBJ3+sRGt9+i4Pug#n3U<(sI%`pgW74ruM@>+y2S;aCcN|sXTjln6!V^w}s19 zUx=e2hB{bP3Dae^5kae`JYK_CEQqlOX1P!erl<3LQV4Yt#C8f|y$3lohn6pMw&4vBKQf%nH&*H3{jHP~{V5BP-%V_r!Vc88VtoKb#bfCRSLlA8R&v zo5(>=JZWj)v;ADA=~aOSMqYUOK7}B03bf4{W=;}p=jjN=wCsKS;wawXnbYBQ|OP?_%Q@*`kPI_$Fz2%e7^^CB|3R{>Rc z1K6pX87b~+S~VT82=Gcp0}8VSBlx%p0SxdpS2dB>`p((a*^Hj82EA+|BcnF~o8n7J1Glfoomt(yUw`ADqc`J!s$! zkrB~eG`nIMxK6mxRE-;gyd*iNKKnDU$N4_=FFRwnn`Gs{XJB(%M6i4Q{PEjVh6c%L zP3<(gOK!G}rpe7dqW}uslJ0@GjYiJ(8#_ZO_2DgaYhLQ9wF&0Wnt0xTwofzdHnflU zQpvAaVX28MpHh~RzV45BUmtG{)cr!(`=4MwwvW`kak!*4A#&q65Vd?T`v}cSfz?}x zfh2^wnxlPH1J{!0h{>xPc>1{ z<7~d6u<&J1)y(&|Jx5eG55Tt+|Il##!&ai|`vR+*mL<;v`6yHkm3K{_0o-JufRWO653Ul)G6^3?U!?iX4hG z9(`J7`_zdMi9`BPOwY|>ZEnimLly6pDWcYb4$SEYUh}%SSvV;>`R<1678cb#G%z`P z4T>lK6=BD1@P^mZ0an#uN8h;xu{(QcVkDdvnBIE`PSd6>=FmP7B5$-JyGPbXNkeL` zB)&FO7+O#FX4U!q4!2e547KZNkT6KN92Kqp*Z5EIlG%gCCZMrcd9kIjOmaVLg6~oY zu373I6GHjrji5W1x6O!s3n(@CsGTp}p@LawP4#agF;CJy0qn_d_)EXs-+qIMQpMZ3 z?Esa(h-l;G%89}>_cje;3IS&uXZ7it@Rr>%WaNOunz2P^5aS2em8L_V&cWauzzMp7 zf3yaTp!7X*RxG@1@ICX#RrmQpDQMoIcyAtWJs;%B;8^nW`{Rp56;T?6 zT@@y?DY-S#XDvB7S3L8x3R?~s*LBR6rm(W6yFk5nx8R2mAz&DE+9BeGmuR6G$C}*vT^QZQk8euOfLIvT>4EpraXt zKBq-4ckHLAy>S~~J2s+D{Q!m-ou#&b6}! zwcAFRt{&S22WjT^DwM=6SjG;4EOG}R5!8{%4ZG6yco2rVC9P)@*J zeBQT=D_09joWNx#8;k|FO$Kz-bI_H7nE zwLIfW9w(|mW3BJ`M6Fn zh-_|zF)S^6GO}piuQ?<7*|+r`Jk8 zX`x6jF+mR_HB$(t{GEj;8nET-Gjlb0`RckWug_b#c#@H!hcBcBCQ90V_Chl&L=Xvm zy|@3%>YDN=QiOvZnFXe*U*ms>|1U92EG*9SKQVE4#Axq0Hoqo5-OsG+k&hYQN(pbp4{06 mqy(6g>AzEcCuI!oy5AN33vZAWX65g`-NjTR+(Z_yoX zNQmBvC||y;d)GSm?jQU4vG>nsJ>{j{yln*n40h)oAL}Osf%GvlU|s-8E|9<~*dL?V zxOGQ!zNa4=ZT<|Ov%{c2c@w&&m@firmLQZJ&gvW7Ep7Nbw?-&`zodO^?zVh?U~;yeI8bY>M=9_I0%DNq&O|t>zRW+@lBo@sD8@NDlaCUz}HZH^b$$PwCeV4MF#o_P)P29p`>%* z;jQ`{Y%$iCF7q|0av7cNK^@w6j|v$Iqpmw;4e#b=>e7U2!Y%i#+d-n+)`zxnyuP(-jZbBg3 zl*NT^EGo|sz!Yf4vS4JX@kknF1}$+DX)@6iv4w)ZR3;(yF{Ys>{&h#!^^y%rG#B@` z5@YI)EcTc)->tfaQ#r)Q@g=%r;7W_KfiAThTwO?zRZZc$(-oNc`HY$Yt zqet4BkFGnuwFxdmp6w`9lDNq;#m0T^d2RjNdu;O=P{wf+v>_Ye2a#!>>goj()-fN) zT$wga2azBIU(z9kFgu^@3hdd#V7kh!Kinu;EoDXV`m>YS*TUhtmaQd0ABWb)|p+38&yRg2(007AvXW1rG>y@10Zm z1*>~Y%lHNK#C*PE%-Nz?nrC1jIaos19-*?BH}EXF-~sn93UOp}BYLQuPLOVcR(6u@ zDu3tEglyJ>h}{Pui~$V;kmtGajP^H~uZck*1`r4o;12U~wnaHQ82O@HJfHZ826(s! z8*6#a!y%9A6!*BCmwIX3`@jxG*J6rcGf&;7fA|T%5_!w;;c&IHMTd6OXw8nJKm?Mc z%=FOv_WIH7CH~gHGBsaSkNT9=dSEP`C$-4V>UQ@*-Ox^t0sAe0G9_G}uIB)(6KoV5 z@P^Hvr$5b!-E2x?8fn*0;Ra{MDj|EVf3OO3oZLYqsN1|(uBp`!ecmkgA$&keFb(6! zP8mT|6p1X_znlK5Is;=!B>h_oY>S^qqh2szO{Sg5P<+4!OF+yKRHG%U#Ia*lO-awnB;^jK|@4{DJZ*$ zzkU!!5Lp4j&+X&n&%vfhme0JMhr88pe8l_JEwYL__BimR0Z375;|#F3FtieNnYKiC z0Wbo8SVJ=L>4Mh`<4VI1EO^bqA#F>1J3z%anYH3tgr1}lR_4SbyGCcO!`S2wqVtpe z-<8O(*C(<);fi(IkBn|7DH3lt4Sd_ZTwNn>)xL#}(6S<)y1Q z*KM`IW+qttor=^Jzy>PCmpuNI)Rd;sL*Y4iyJ~hsRR$-EOOigobIH@I!st^31*K?S z8&)K6zn1wRHaMM1%VHrQ$KkkH#l)X%%ltl3%oO~a#@*n8E!C9+_U;j)etSc^;zL7y z-eUfaQNtCT^15}U^;lSyc zIx}hfJmMLl|1Kpk8MK8}zGHvzg1B7sXAA&Mzc;r=%+xBn=_z2H`lx3@IGyk!{cU8$ ziQ%cC04ZWph^UA?Qrni}iJnSK66aStw~`Se`A0sb@$;7FDx;=;*A;EGmiJ)?;$MY> z38TlRzsUyxHwJ(0tCeI4t-U_4=I_6s!CUML7XBl`T+yO3-7< z;YnzY_~0ilJsI?NfUZ#Ase7V>{9?*>9#VlMC44Cwa8NYwpnBW)3uAR9C6gkzqfsRp zx-XVxT~hD&E|bt+3JSedZ5MDPG8~TK5eN8e2?Vz-71m$Xqkxy0t9NHG7L=59f7C zBiy0VrK^W`I+CoAldTS>OT_0>OTuM?{8Y2nZ&Z#T*Hq@0r2kdsD!O@Mnva)ZObNf0 zS^6&!hy{ds17ii=rFxXlaWV8P!DjuP1H3FBp19gKTR08w#`6x`er%*EQkhD+kF_{m z@ZTtmA25_HWRE;t1(t!vz?K*7fsUF!7Tx4c3Mg}=WB-84%a)LZ5!2qW=u`m#hdw)B zM^<^SrIy*8BALw`#44y@0@0uFfqUeu*b}s~nQ3WcrZym`M0IIGre_wHTw@KTfbCxu z@sYy}erFGs=)rrsv%2FLn<5vkIL6Mf(A*b7lu9Ri;rHVndc|*e6&mP3ubvC7Mm5-nW~uCRl~8^V#LLd zx;M8}-Pr)=#)ikvO-Sj05vOnb>0KKfuM|X+>J}!3uZL$XmX0}8QedSv6Yv=#o*pJ$ z?r&oX=Y%RPk2V)RElfupA*I1%+s(qE`x9%RFo00ULR~lN7OB~;Ak`&=EI#zGS`M(e zOky)9EUZPoJ#MtmQeJ2)^RziDssdGx%An^j$b6Euc&cZ;LL#QVyHbWR?W^-%JGBg{fYsO-psE;!jrEpK zjUv6>Szl0D?}yg{yaPcKF(Fa1ujhxCa!5LEa3yADM_#|3|K{e;N}aOwjDSN(Mn7@E z@@?#`8I=UX<>uA6;wH*#C=BL+-4+%+%VWL5HCSAtaNzDBH1KBZSus{xTrKqS^7IvD zcjh!89us*V}zG@;mj?Sx4PEckh)?@~<7W z)Usuqd86{oTa=n}{2b#rlaQGz&b)~m*VWA!D}pQ2@Tl}rbBdQYK=1>bLQ45qFJgq_ zNla;Zc>LdlW&zvDZp-Xd{9r;`VKAYKF}*>qpC}%hfLB#d`di0}$UzO#>#hSK_fUao zcx=%TeAp2)&_l;D+svcc)9-6NZ*`p~iW>F3s{&*LanaZVA4Nce2 znQJE1`s~-YO|Xhvf)KMl)q*%@<=(}H>d#+YzFcMBh*`{th_zbhf-g9$LFDg|QOy4p zS${~57E0u*KfH?q-%D{xF9Mgz;aPJS(aZfjf@&o;4Jr}`e9@w6^(#Io0r1k;Hl7s$xw75>$bVTZm?W;6`zD^! zxD<>NHRFygwbgU2B`i`bXcmnx1>XaUM3TTfLIsOKkp4 zY;H*Gx%KdceUQ2|w>ElZ$e@GDhb$KyuWP>?tt(|M z6+onJE?Smb&U^52X)VDRh9de|!tZ&+s^N;fml%2VeK3PVpjO66;*(^o;zxF>2^)d6 zjxTVagYI1Bvi6RNXp;DNfvsN8Q&>aoX55owx3>GpeCSm%_PDJQf_S5^=%r};A-g%GO>(WJHPkmDE;$y9_~z{ z3DMf$rUt=xWGdLg8PuTmqi$mwBcwmuBGBa4;Zfp-S%P6p1!%YiPS2_E={Kb+!1}}j za5ck!T+byv?77N`Lj=IQXJpG&CV5Nw$Tzz+(0R+8dA%&seX#IkYZd+5Z1{I(pM#^f zhG)KpPo1X6rix9K><6R5=2pI54na?(x)Clg;wIc73c4O1NXxc7@X6!)JUbgZJ% zO$zONzrxh7@SYY7jzOX7D<7|wSqgXa6*On{HNxkQ0SzLnaz$q%j1n=Uv@LW!ym1Qm$>)p?~v#n}FTY4|N1 z|1+$Z7*Rg9Kk<+V1Y%+Vf!O}{^am|5eWDr!TNpZ+3_&?Y2PVPxe=Y9c&)t|jm>NMW yW(}rDAc^6HD-uLvoZvicf9U+( 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 JWccmV{{ur4J39aX literal 0 HcmV?d00001 diff --git a/vc_excel/membership-card-with-alien-columns.xlsx b/vc_excel/membership-card-with-alien-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ded2752e2d54fbf4f86a72dae456f48765d8f8c9 GIT binary patch literal 12930 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 G+5ZC`mmoX< literal 0 HcmV?d00001 diff --git a/vc_excel/membership-card-with-required-empty.xlsx b/vc_excel/membership-card-with-required-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5d34d8bb3c5f316c3d2f31cfea0307f6bc0379fb GIT binary patch literal 12501 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 literal 0 HcmV?d00001 diff --git a/vc_excel/membership-card-with-some-optional-empty.xlsx b/vc_excel/membership-card-with-some-optional-empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..095c9d537902258dee2c83227fea39ff92e2d18f GIT binary patch literal 12783 zcmeHt1zQ|hw{_zLZ8W&MHSX^27BmD8?h@RCdx8ZE5*&g<2=4Cg?ydp8p3J;=W-@cX zKXBjbr|YSDs`jexQ)};Y_TEcb4hk9*01JQz005)_OKRlmAP4~92nGPa0Kh})irLvZ zo7y@Xs(aX*I_WdH+gOw2Kts}G0U*Km|9AU8JOU+&1BxBYK#3daA7Yz~vWr#1@Ek`0 z?dWtWf~~U&RBwO8_IN)EVBCXJYMe{N~}Wnja%;BFa%Yi4YRo^{Bf{TBBh0Yipy(@f(nBO;c}n0 zj99r!z!NtPzk{U$0AqaAqT%Ik;Y%JF)|G$u!XQ`KGBuuVTwWD z6%={^TH}UHJ)DdK-YU0Q!dGA2zn7la+SUy<^PyFqsoFvaoZ{NJVP&)@3cb302>?7l zLjjck=DZjNEvArQ=UoB&CL-8*4INFboj^>#?f>hv|A#&GFMquxUO^6u1sHM?@Ju@R zjc1Gp6n(cCr_4ROQ367Fchtlo-WY$Fo#aC=mbX(c8SAyXs>p4M8l+S)RE>fCZ0Rjzr zmfYG&jyO7(vZzIrdP!S^AuD*wL+o9{((rsvP&tCP&3Db5Tngou1D6AIOZMh^TcQGj~s{##B`$DT7m?GPdsyxnZiCKT9}a z_%5bMdhIYbv!WJg+k*OXZdfV>jEA*GxX_1}tM0+0@K2ZV7fk$c0lv}*b{RYXJcPS7 z=y$Jivvah1V`pde+l==g4}t(sdtmqazrB^HD#&#*1HU0Yg)+OPxniNsIfKX!H4aeW z`>JUds7Tp-E?4mB8uhiOt&As#0~J+3z#DCj}TE(oiG{%<9iuCVRCQZ(oo`t=H`=$Up9<~u)iH$yQ};TkqGz=L?~0{4XsKe7j4Yu&7UV{o38tdjzFB!x$X64c73 z#cPf&|BWPnGChxKV{tnkx`jAC{XL`|8rdT*5=Ul45URTBR&#|eaES7&@QO(eJF?Cv zFIXn?`v$si;#-u$gF%?CYJqPOsmDxIXok$t+YKhvs;5s8*Oa_*0?erG32l-h#OZUl zuc5R0k}p+$Oj0Md$hF;b!)1!S#Tfd~K4m{58)|5RbzIpFg>&^iN>W6pMw3i>`Q@16 z%_8KYKqg`zaqYN72}Aj-V>(Kf_`z8tItC?UFW7vYvyMPc$woR5J!zZV7h-4Tz2hyf zT$TQvl6Y4HQQK7`qfwNA(Nbum%gyj6_14>RXB%@R~AdmAM;^xUwi@m_MsE%DTaWd; zfL^93jgC}0Lg8c@^wdqjfO&Sa(d#z7sbQ(Od4}#b%h_cie5cA@KbAbg8=}h?W9$vL zNLXD-@_K%*W@GVXS3t-6;P}T0&J8esC%%(~k)x@JnzN&&t+~^0q0%eS&@PP` zvulO=h>v7h3muXo#ji|3hju(!Lbgd@r5%RBDD6&ZW^>}C%3|K+YZ&$M+12CSt+3BS z_roeyl9?*z+7B~qSQ@%lY-8AK7ZV$y8aNhEIUxoJ4DA^Er?pOosz>G0$zoFR)rq;s4#JA*%BW3k8(}D3sp}Q!9I3y4DhjivH1cw> z3UBHMMhip+WKUK@#=}yeZcbp{oMVk(eY?5t^XEypmDY$kfvwtv^4%BY!d}QE27|^U z8K%j3mdQ5yYbyTSOtut)94vqp-qXr;n8@g(A@3;;95rpZ)@BclpJU6L&hz~v;HO(Azdr8-u=W}&6F_r)+pXZK zt!ve>Zk}10m*@UD@A`tqtxz=C@-2-7#8$&uf|4Z?ndzJfi@e|~Iq|zy;qk0C%)=0I zY}V%xR%ug@q!SO^$s-TjBh1%cQS&ya%d^o+vunkdvwve3F;%HF$?4e>P3YsE`7jie z%yYJS9Y@JaS$5FQooAi$mNm8Y)-C3JkY;CTX`*~3&xU-tOn-b(IEoJQuyLO$+Ij>` zb76#!Lb`6GwI^O&Y(RVSJ6&@e1bWP=6nT<+i@Ys0#VC$KjE@%vv&9ECRS56pH_793 z6t@hohwC^OeS6t&70u0t2gWP?> z-esy|nf0RCJzs2-@x5&47lsn!-Xk)%NeRW59@hfLIi!nlkKxwz0S)wFJFw#dP4DY- zYTC`ZVPD1BojYiPI0A<@IfRp5@U28f_2O9Meia&q-Tp@M02gqm_~VfRwNCnzZQNmo zj37+B|4Q;EgffygRNwJKf?gVb?BUI-LoY-92KdpT`m($_2gn|s+5N(u`VO-inj7FwD7 zyuaN6)y&v8!E|op<`5+4;lOvYtNnS0_I}&~Z3EBp!yAJ{0V#wPcv$v@SE9QDqYunje zDt>Cu$mMCjd;Nmp`;aP-RER(Pn~GgEyGS^{YJwnFl*ABQ89nufn$g(dz+Ou&L2QzA zMZJQd{wM}{*|nRgjUUBYm`t+9ldohpRKwe}p&imN^!efMVtNNv585p99Il2uI*};+ zE92y-l5+iDthUNRZ-1VuZ;LF$;&@BBop_|{U;&-XpFva*D~nioHR>}XdGPXX|8X!R zwva|zY!%0xT4iaYbo16)*&_0Li{AGx@-Esul`jRXNvp97jzx=|Pq z{Y@ofyOm>8Y2w;C_quN$2$_Y2Pb}Chub3?CFqh$s*ysI9I@k^5G=$6d?`-(%a@fs2 zPue?%+tzLy4iI|Hs9F{7urtvtOZ%r}yL~rq#_%Ml{@OXEYau1z?NDmkV_-7qHVxX> zLBejA(D0kfZ7y7ZbrMWwqLEfm#A#w{`=L*ip{5q?32^r4keNUk1jdgeFR)os+iQ;4 zH2SzE1iJCnKI>g@sHE6DP6sF986bVl8`@%iZrzo%e{+xhx(dIA=8H_((Ui#nWK^z| zF=6l>3hT|I5wC)W;Bw!Ob6S{D%%-CqvQSfeY2xA|Tq&U826Xg>DRn{0zRr(<7f(jJ z<>%*1vr?1LLFQlXpc@(@<+DE#x$+UC4d{j0KUDKO)vAu!RZQvW@&IF6$ss<8rfy3@ z=2`M7t9`0?n_jhpum-4vbJ0UH_b}>1b|#uSRe>R{Klyk->hSD0U4(;$Dj?9h-P@9hroiNV{<*~5>xw7^Hj#^ict2zl4bZ(QG0PiBbi4-4E zRaW24)eyTU(0=mxy63WKssb#_PuQ|alpsGG!#DI7L@(sli)G)17`vhQu;kQjOXuDYxS(%k*j;FXs>)Z?B^!L>H8`S`_Lp0ywm8O z%a4j=Uug4Ia=hM1L9dpPHK1>j$yuBM;&STk?V2qBd@d0Pxk^Kz_Rcy(6TaN)zHHMi zV-Zlg^HP#s8_f2%51=nM=Sy2OB1!#6|=2NZm8-6&?(NK?7qcHkMFwm&IbmIyR>lFqxe>jfsQrjDb?9W1mA9e~#2T)br%!t3kHt z8uQ$9Ol!4src`ff>57j{{ZHL%C3f4NveQOlq1gNc$=2t(=cGLD#ZJd ze1j=BJ!F$<6rb${?ZZ(5x;u`VuWMaPuT?zoi;QS5PWaj0IlpJjXiNU&IKia&qmLOS zRE6J`Q>gFa-D=afHuC!Y{9;e#r}N+gzLL6Y<*cO2=?-jO3p)Xa)+jp zscdb9(>Utn*DDh^RVS^$%5akIrV5o&tV+ zHG-V+`TleD@RPWS$xF5Y!azyG;8TEv>&qhKc=fja5jh;$ar%X@%AQ_(o&gM$} zQMpCNhJ5aOuw@g1cJl=V?${m$+~-AzmFq!v7*>ijY0});He_2tmG6v#g8Q6$#QRkV`bzLTwk)1p)pZlT$Rioz5bW93cuFeL1}tkGY7LWxfqV z@&ztiD)7AAs>~=rt;oRrxaG67o) zmIvvG8>{=vJhU=8#?w|>%mCdE@-oa8^x!Q#>;Zx2aTZcr zz%-38c>;+>7Y7|}B*RI-8_4ZDyU@na(F8zYu2hk3*yPe;k~+IDXm^P9ietf1D#M$Gr*`+N&h z&ukLA&}wW><`%lKbbD(|F#Yeu>yS^mXpLUI8Y9o97Ddil}xLK?zC88(8=S@5HnWX!pZ6zETl(Q^!E>*MYh{9_j z(6c^V&eSW6D_804K>hYuu#vV!L z6v5`?Oz0)61!1yc{;2-8?Xpvj4JxwC3Q&pb(7nsJQ5Mq5E3rWZ#k&Ya$@E*Vjk^m6 z{B(;x8^EW`&RB;vJ>0ge)#r>k((%b>K@I9aoD!dR2znGkc2=mLW?>}`QPbGy(XU;3 zVW?3bG9DhJD7AoAm|laIJsCUt^hvjbh|VyDb}$Tm;<=3x zG%ZIgu!XM=SdSDN49XgAAs>?{Q__xHo0bPnE5(s}eM%YEX8NP%&8FJ$W4mTPoYq{M z6-?Nl!kU~#QF__c%oR4cLxtli^vGEpjT(Ro1Vbaa7p~i904?J*xD zev}J&oezv;KKREfAig*7xx1{}Q8M(o+B;bhIBVsCA;MhqP6fWVO%SW@!5AIF=}t;V z>b!HkG?vdGh6m;ROW zr2*99WHSQxvC??&h@O0Sy+9EMe2}sIq;Z6v9$LVbqry3U6L}NXtsgG^*7PUzE)4YmCz}-W3j|C>=05u9A_G zGGD;2P!FSm6tf~ zf|i=3t;|HI9Cu`hfHr$aKnl?gln!>sO!K3geO#*t_kZix@06=YcOVqns1m4Qjy0I zL3;#($kF^TLzYhRUbO__K?Rfeb((RYeV@$ z4D|N&Z;o0%SE#|Ul1^bKS0W={(4ayjr;@Jp8kPpW0?9()@7a-d_2WTztWd$sj=3=6 zMoAZj4>Of~)Ak>XXnpY2%nAuP%oiIuH?WX2MC_Os%%vAO7F9QGK; z0u3Myml-E_af9l3CCpQ-*QjE4SU(zS>W~xdZYM3#xcO+v_Z!C2bum9>e#sfZsE^jh zeTy1opT@vEem9R$ugnrkm)OOA_@Z8%tp+Lwrp#xJ1sZG7GVM8lVE37GhXFZZnpvYr z0FP8;jbF8r#N=gv{QDNQFpcxC1Mwz2q!=nN4yI;ZM6poq_l>Zemvcl}IHF7H3C&12 zi)Xh^zB{<=Va^E`N=IJSteJHJqf7oam4{Dk*JL%KV;}+;g_AjR&ms>V_l`E7;oND> z63QrW2a~u4SC5YL5pGzBPE=AJ=K!i^UjSr0t1DhSI|4x;v?*_`d&I4w8HH=0O2p zNdteu@*D^gJ7Z->J9{UPv5S+loy{Neod5PI!4r9UtiDnpGfwb{!Vgr16FEd!LTGIQ z>lv!yrPMOa!fawo#73OwCR0VXldZIi?LH61%BNWJj}0!O#pvB={(kiNy4m;WEr)Iv zF#Z?nHO`aaA5J?7^|b1^x)P>BbV2n{5ZQV!;7$~xD~+K(OiGYylI~R}O@>ZfYrAE< zZXUCa*YijRI>yXxHYfM~SX)H}Wj^}Gm72-%xy@$E7wTfYynW$39#I>Vsi4E9Agh{a z{S~i^Vma%O>7B5Ngmjh6zW#OnV?Zmz$P4K3{;Vf2Y{dGxom>yMWzC2x#Niymd}EWs zeI9|d;lrycsAN5&j+Q{?FqH*KJH=v1LtL1rQZ208#JQnLC2dWwQ3ySgXG}fF z&w6*QO3K≷xv~KRwS>qnNGc?kv%oy)JF(-YtO`E}x8<{w$omwvHBgMNr7tLWs;u zxx<>oQ)hwFcP{fmc37>3W7R%GY8RFuJN^Xb%8$9k4vI5QQ=r_Foj_IOTFYRyhQ~}6*FILE52r~w{ZdZ4e3FcnHU&n_0cmI6!&>NIi>9|N&z||Cu;T{0gZUik zqXlQ|Epg`n&si_?nIiWM+)jR+Q}bDu$0+gi!KlP(!6LWRN~v#NK|P{d>uv4OK+b$^ zY{f9K{ql7~7STCb0>1n-5$9?t-(57-&L0b}?7%PNpENE? z>VqHzx1+YeG)DU?jg9RbP5;Z||F9SU2vXCJSYQTvfi8vMzh7>l&&ddtQH_Z>5iqh} zlF%}Gt9@1|`NV)I!;^V3<3`z|ScZuJOMY}Xcs%^p;X>W&9DcaCo8jx5RCDM^i_ff~ zrq|x@xEhATP#2}k@Sz4upfZ;#X3DYKlXD#GPw)_#XilM1B0<6WW*YFdpC=;_-X0f( zG2<+9m2E@B91AnPMEwD9PTo1OMD~{>;*JW!;A1tTmZg=Hedo-JCM_Z&hD_zIBai6W z4QpTXY%UtEM`DG=8zGR<|7|ll2Q_+^x?J-0LhXd>r~cM^#CxYlmjs;*8Vqwv5@ST# z{;UAl+7Qpsi_%0&`s2-j=(w=6o+Ue=zYRUf6)r7MrWq#t+M#+8X!_Yx{k-=IUx|4D zvA|k*MtWnEb;g3Qz`veU35a^E@?ub`7X|51<5b+k7h1+u-$VjbuQI}quApWqCQ`}0 z<`>#s2|B-UkZR$v9*663fkbJme}Ot$6P57kD%mg&P&38fiq)3+Le{D!>qDzF$jCaN zGzT+zsz^ERfk}N9hY3k$T;>Fwkb~pKC@LZxDn669cA3KeyR8aU!*X4~k6q)rCP8tZ zL9M!lrpTf5xdj=)w9T0Xe$d1XJ;L|in3n68S2FkCBQIoFR zcVZj7t`SrzyY-25sqGv*Lhu1%ZIyDDuN=PZX;IfOhWvQCTsNu``d6Pi(&kP_1N)Q< z+;3CEPj!p2osA7x0_^lN8E)2Ch@Jq;Tcp;B8HC!z4xC>V70Fhu=ZI2jyVDS_@+Ney z%9-#{!W?~PQ%q%gBeGvqsJY3_Htar}5;2jcNM8lDlgELZp@1RV3a=}zW_meb#_>vd z9f}J^Yg$7`B&3IBY)T!5nWV~SJ1pM$hB5mcBAjVe z?gJa#e2cKTszgYlTdpQE6jxSOv5UmI?AqZN#N>iQ8eaP|k^9(~P9U7Aq~Q<^Zf$8q zBw0htHZs9zDI63C8OYE;*0SUS zgBErfL~ba14uH9163bw94$l^|K8+#Vy$uYX*-`W7!RVnZoIS)RsinZX#4gTF9(vEb zl8$=OMgCe=O&IQ@c*NYs#^V`$bg$rW9<&?Tu-nc?a|`A$%SV>H8G+FXYP(VkW4H*F zr*~zUy`2viDefM$RJIErhsigeN4oC4n6^LApX-)Akj1QV@mHff=mkziFQKM=xl<_4 zYMc@1SU8-e&V1&R>z3qRMBMl=^5+5-0+JD|2l;me`JXZ9_oIK&lPk;p9pLXO*1rOL z1IPKlXj*?Y{JWO#uZE}K0?+@h?E4kxSAo}`NaQbm;`~+a^{er(BAGvp3BWB}@Q?V1 zWad|dU!@d(B5HJapYlJQON`40)*AAo=MQhr7GwOIEj${E2=lwV7CzXJR{fBMrL0LTP)&i*Bv`W4{s zE9bugY*YRP;E#3muhxHGu>94!l;$ti|5?8LYW{0%{u2O#;pgA~TclQ&g8|bX06+nM NQox=g%=FvY{{!A-*TDb) literal 0 HcmV?d00001 diff --git a/vc_excel/membership-card-without-required-columns.xlsx b/vc_excel/membership-card-without-required-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6191cf1c4b025a9cda39bc63783b4e2bff5cafba GIT binary patch literal 12556 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 diff --git a/vc_excel/membership-card2.xlsx b/vc_excel/membership-card2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0ed0137a3e6d22d9669071c6511ee3634c644aaf GIT binary patch literal 12797 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 P0sp0fJx7k|w@?2M2{7MT literal 0 HcmV?d00001