From 9497079b1757cc8ed880b34cb726132738aff938 Mon Sep 17 00:00:00 2001 From: philc Date: Wed, 3 Jul 2024 12:13:08 +0200 Subject: [PATCH] modification Pagansunittest for Peter --- models/unittest/Pagansunittest.js | 327 ++++++++++++++++++------------ 1 file changed, 192 insertions(+), 135 deletions(-) diff --git a/models/unittest/Pagansunittest.js b/models/unittest/Pagansunittest.js index a88460e..ccd7ed3 100644 --- a/models/unittest/Pagansunittest.js +++ b/models/unittest/Pagansunittest.js @@ -1,180 +1,237 @@ -const assert = require('assert'); -const openpgp = require('openpgp'); -const dayjs = require('dayjs'); +const assert = require("assert"); +const openpgp = require("openpgp"); +const dayjs = require("dayjs"); -const ut = { name: 'Pagans' }; +const ut = { name: "Pagans" }; const apx = {}; apx.generateKey = async (alias, passphrase) => { - try { - console.log(`\nGenerating keys for alias: ${alias}`); - const pgpParams = { - type: 'ecc', - curve: 'curve25519', - userIDs: [{ name: alias }], - passphrase: passphrase, - format: 'armored' - }; + try { + console.log(`\nGenerating keys for alias: ${alias}`); + const pgpParams = { + type: "ecc", + curve: "curve25519", + userIDs: [{ name: alias }], + passphrase: passphrase, + format: "armored", + }; - const key = await openpgp.generateKey(pgpParams); - console.log(`Keys generated successfully for alias: ${alias}`); + const key = await openpgp.generateKey(pgpParams); + console.log(`Keys generated successfully for alias: ${alias}`); - return { - alias, - passphrase, - privatekey: key.privateKey, - publickey: key.publicKey - }; - } catch (error) { - console.error(`Error generating keys for alias: ${alias}`, error); - return {}; - } + return { + alias, + passphrase, + privatekey: key.privateKey, + publickey: key.publicKey, + }; + } catch (error) { + console.error(`Error generating keys for alias: ${alias}`, error); + return {}; + } }; apx.createIdentity = async (alias, passphrase) => { - try { - const { privatekey, publickey } = await apx.generateKey(alias, passphrase); - console.log(`Identity created successfully for alias: ${alias}`); - return { alias, privatekey, publickey }; - } catch (error) { - console.error(`Error creating identity for alias: ${alias}`, error); - } + try { + const { privatekey, publickey } = await apx.generateKey(alias, passphrase); + console.log(`Identity created successfully for alias: ${alias}`); + return { alias, privatekey, publickey }; + } catch (error) { + console.error(`Error creating identity for alias: ${alias}`, error); + } }; apx.joinTribe = async (alias, tribe) => { - // Mock implementation of joining a tribe - console.log(`Alias ${alias} joined tribe ${tribe}`); - return true; + // Mock implementation of joining a tribe + console.log(`Alias ${alias} joined tribe ${tribe}`); + return true; }; apx.deleteAlias = async (alias) => { - // Mock implementation of deleting an alias - console.log(`Alias ${alias} deleted`); - return true; + // Mock implementation of deleting an alias + console.log(`Alias ${alias} deleted`); + return true; }; const personData = {}; const apxFunctions = { - modifyPersonData(alias, newFirstName) { - if (!personData[alias]) { - personData[alias] = {}; - } - personData[alias].firstName = newFirstName; - return personData[alias]; - }, - - checkPersonData(alias, expectedFirstName) { - return personData[alias] && personData[alias].firstName === expectedFirstName; - }, - - removePersonModification(alias, originalFirstName) { - if (personData[alias]) { - personData[alias].firstName = originalFirstName; - } - return personData[alias]; - }, - - deleteAlias(alias) { - delete personData[alias]; - return !personData[alias]; + modifyPersonData(alias, newFirstName) { + if (!personData[alias]) { + personData[alias] = {}; } + personData[alias].firstName = newFirstName; + return personData[alias]; + }, + + checkPersonData(alias, expectedFirstName) { + return ( + personData[alias] && personData[alias].firstName === expectedFirstName + ); + }, + + removePersonModification(alias, originalFirstName) { + if (personData[alias]) { + personData[alias].firstName = originalFirstName; + } + return personData[alias]; + }, + + deleteAlias(alias) { + delete personData[alias]; + return !personData[alias]; + }, }; -const pagans = { - adminsmatchits: { alias: 'adminsmatchit', passphrase: 'adminsmatchitPass' }, - recruiters: { alias: 'recruiter', passphrase: 'recruiterPass' }, - seekers: { alias: 'seeker', passphrase: 'seekerPass' }, - adminrecruiters: { alias: 'adminrecruiter', passphrase: 'adminrecruiterPass' } +ut.test = { + tribe: "smatchit", + pagans: [ + { + alias: "unittestadminsmatchit", + passphrase: "adminsmatchitPass", + persons: { firstname: "toto", lastname: "titi", profils: ["anonymous"] }, + testprofil: "adminrecruiter", + }, + { + alias: "unittestseeker", + passphrase: "", + persons: { firstname: "toto", lastname: "titi", profils: ["anonymous"] }, + testprofil: "seeker", + }, + ], }; -Object.keys(pagans).forEach(key => { - pagans[key].headers = { - xtrkversion: 1, - xalias: 'anonymous', - xapp: 'smatchapp', - xdays: 0, - xhash: 'anonymous', - xlang: 'fr', - xprofils: 'anonymous', - xtribe: 'smatchit', - xuuid: '0' - }; + +ut.createpersons=()=>{ + let msg = ""; + ut.test.pagans.forEach((t) => { + //test if alias does not already exist + const pagan={} + const getalias= Pagans.getalias(t.alias); + if (getalias.status!=404) then alias already exist + else {delete} + + const keys = apx.generatekey(t.alias, t.passphrase) + pagans.public key + + + schema.properties = t.properties; + + + + const res = Checkjson.schema.data(schema, t.data); + if (res.status != t.status) { + msg = msg == "" ? "Unconsistent testproperties() name list: " : `${msg},`; + if (options.verbose) { + console.log(t); + console.log(res); + } + msg += res.err.map((e) => ` ${t.name} ${e.info}`); + } + }); + return assert.deepEqual(msg, "", msg); +} + + +Object.keys(pagans).forEach((key) => { + pagans[key].headers = { + xtrkversion: 1, + xalias: "anonymous", + xapp: "smatchapp", + xdays: 0, + xhash: "anonymous", + xlang: "fr", + xprofils: "anonymous", + xtribe: "smatchit", + xuuid: "0", + }; }); const testCases = [ - { - name: 'Create Identity', - async run(user) { - const identity = await apx.createIdentity(user.alias, user.passphrase); - if (identity) { - user.privateKey = identity.privatekey; - user.publicKey = identity.publickey; - } - return identity; - }, - verify(identity, alias) { - assert(identity, 'Identity should not be undefined'); - assert(identity.alias === alias, 'Alias should match'); - assert(identity.privatekey && identity.privatekey.includes('BEGIN PGP PRIVATE KEY BLOCK'), 'Private key is not valid'); - assert(identity.publickey && identity.publickey.includes('BEGIN PGP PUBLIC KEY BLOCK'), 'Public key is not valid'); - } + { + name: "Create Identity", + async run(user) { + const identity = await apx.createIdentity(user.alias, user.passphrase); + if (identity) { + user.privateKey = identity.privatekey; + user.publicKey = identity.publickey; + } + return identity; }, - { - name: 'Join Tribe', - async run(user) { - return await apx.joinTribe(user.alias, 'smatchit'); - }, - verify(result) { - assert(result, 'Joining tribe should return true'); - } + verify(identity, alias) { + assert(identity, "Identity should not be undefined"); + assert(identity.alias === alias, "Alias should match"); + assert( + identity.privatekey && + identity.privatekey.includes("BEGIN PGP PRIVATE KEY BLOCK"), + "Private key is not valid" + ); + assert( + identity.publickey && + identity.publickey.includes("BEGIN PGP PUBLIC KEY BLOCK"), + "Public key is not valid" + ); }, - { - name: 'Delete Alias', - async run(user) { - return await apx.deleteAlias(user.alias); - }, - verify(result) { - assert(result, 'Deleting alias should return true'); - } - } + }, + { + name: "Join Tribe", + async run(user) { + return await apx.joinTribe(user.alias, "smatchit"); + }, + verify(result) { + assert(result, "Joining tribe should return true"); + }, + }, + { + name: "Delete Alias", + async run(user) { + return await apx.deleteAlias(user.alias); + }, + verify(result) { + assert(result, "Deleting alias should return true"); + }, + }, ]; ut.run = async (options) => { - console.log('Test Pagans Registration and Authentication'); + console.log("Test Pagans Registration and Authentication"); - // Create and test identities for all users - for (const userKey of Object.keys(pagans)) { - const user = pagans[userKey]; - console.log(`\n--- Creating and testing identity for ${user.alias} ---`); + // Create and test identities for all users + for (const userKey of Object.keys(pagans)) { + const user = pagans[userKey]; + console.log(`\n--- Creating and testing identity for ${user.alias} ---`); - for (const testCase of testCases) { - console.log(`Running test case: ${testCase.name} for ${user.alias}`); - try { - const result = await testCase.run(user); - if (result) { - testCase.verify(result, user.alias); - console.log(`Test case ${testCase.name} for ${user.alias} passed`); - } else { - console.error(`Test case ${testCase.name} for ${user.alias} failed: No result returned`); - } - } catch (error) { - console.error(`Test case ${testCase.name} for ${user.alias} failed:`, error); - } + for (const testCase of testCases) { + console.log(`Running test case: ${testCase.name} for ${user.alias}`); + try { + const result = await testCase.run(user); + if (result) { + testCase.verify(result, user.alias); + console.log(`Test case ${testCase.name} for ${user.alias} passed`); + } else { + console.error( + `Test case ${testCase.name} for ${user.alias} failed: No result returned` + ); } - - console.log(`--- Finished testing for ${user.alias} ---\n`); + } catch (error) { + console.error( + `Test case ${testCase.name} for ${user.alias} failed:`, + error + ); + } } - console.log('All test cases ran successfully'); + console.log(`--- Finished testing for ${user.alias} ---\n`); + } + + console.log("All test cases ran successfully"); }; module.exports = ut; - if (require.main === module) { - ut.run({ verbose: true }).catch(err => { - console.error('Test case failed:', err); - }); + ut.run({ verbose: true }).catch((err) => { + console.error("Test case failed:", err); + }); }