Skip to content

Commit

Permalink
Secret parsing tests (#347)
Browse files Browse the repository at this point in the history
* Secret parsing tests

* Remove old argument

* Prettier

* Add space tests to seed phrases
  • Loading branch information
Duddino committed Apr 18, 2024
1 parent 76a6dfa commit 1dc969e
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 0 deletions.
78 changes: 78 additions & 0 deletions tests/unit/parsed_secret.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
[
{
"secret": "xprv9s21ZrQH143K4842CrnVAqMTubBcVBjFghHFiNfb2tbceBcn5ac3HaKRLL1yFbFxD9V7KbHRGjnnbDaZRAn1zKSPNmZzCu2gVGoCVsmpcUd",
"password": "",
"expected": {
"xpriv": "xprv9s21ZrQH143K4842CrnVAqMTubBcVBjFghHFiNfb2tbceBcn5ac3HaKRLL1yFbFxD9V7KbHRGjnnbDaZRAn1zKSPNmZzCu2gVGoCVsmpcUd"
}
},
{
"secret": [
"display item diagram flip slogan firm illness measure staff shrimp absent abandon",
"display item diagram flip slogan firm illness measure staff shrimp absent abandon ",
" display item diagram flip slogan firm illness measure staff shrimp absent abandon",
" \ndisplay item diagram flip \tslogan firm illness \tmeasure staff shrimp absent abandon\n\t"
],
"password": "",
"expected": {
"xpriv": "xprv9s21ZrQH143K35E747GySrQzeXGAS1rsfCyfMjEyFAczB4Xwy6phKaE5ps9FxcswDAaFqamX3BEAR6CePBKZqHGK5mtjUtMJ3EzevA773h6",
"seed": "2e92a1b65e77b6f1e5a77b9a5bab3be47e47cc8286a04f863d9d7829300b4f944037b9472c9b8d578dc966c30f3d7ac81021b6cbb783f1453612d8ebccd6c4ed"
}
},
{
"secret": "display item diagram flip slogan firm illness measure staff shrimp absent abandon",
"password": "123456",
"expected": {
"xpriv": "xprv9s21ZrQH143K2LMsnBWQyzuwJWqeTagZ8i3hDwRNhYPVauTTmw3gmqDYDaZSthdLJ6HhvKrp6qAP4xEC3SvzofZmV4XSUPo3B7WE1JWEt8Y",
"seed": "9e867a891a3420fbf2e2ee5c760cea1b27f5d920a009b6ae7582466f2b6149537be6e7f87489f11bd929e284c49e4ca98c592a8c84147f203e75ce71a0be80df"
}
},
{
"secret": "xpub6CsavE7yYKNdVzdFk8uJZtMhzVcb2EjAeen6RV6BySjbWHjy53bziWd7RYpGoydH2F7azeQfxfLoZMyqK89vXgNsJtP6TcpzMZ1pey2HnAE",
"password": "",
"expected": {
"xpub": "xpub6CsavE7yYKNdVzdFk8uJZtMhzVcb2EjAeen6RV6BySjbWHjy53bziWd7RYpGoydH2F7azeQfxfLoZMyqK89vXgNsJtP6TcpzMZ1pey2HnAE"
}
},
{
"secret": "DLabsktzGMnsK5K9uRTMCF6NoYNY6ET4Bb",
"password": "",
"expected": {
"xpub": "DLabsktzGMnsK5K9uRTMCF6NoYNY6ET4Bb"
}
},
{
"secret": "YVgYP7qfwtBGmtRb8radKwdVh8VxwHH1GNFTTMJxr8LyaEZDrtw3",
"password": "",
"expected": {
"xpriv": "YVgYP7qfwtBGmtRb8radKwdVh8VxwHH1GNFTTMJxr8LyaEZDrtw3"
}
},
{
"secret": "{\"mk\":\"YVgYP7qfwtBGmtRb8radKwdVh8VxwHH1GNFTTMJxr8LyaEZDrtw3\"}",
"password": "",
"expected": {
"xpriv": "YVgYP7qfwtBGmtRb8radKwdVh8VxwHH1GNFTTMJxr8LyaEZDrtw3"
}
},
{
"secret": "{\"mk\":\"xprv9s21ZrQH143K4NxC78XEV4KUNRkiKyCgqbZotxoTVFPYNQtTjamRHcJde9uN34evLyATmEJZNUPF7wRLbHimH3cnAdc42EvRkQMczGVdVeV\",\"shield\":\"p-secret-spending-key-main1qwynqcz3qqqqpqrsy02v0pn4068y5j2586zzr35pjvhlmfhg6s6h400s9wgyw6kzhnkg8urj7t0l7qap56glm8gaj9zlvxv64nvw86eveg37mfnvrw4qp86hm66v4pqq8mw620wx426zf9halmk2g248t8l7gy0mxphgg4sxefwfqyhfxpkwwrcr9f5psj87h2hgq5fqlg2hnfwztnnheq6cx5txm5sxx7hqze0me2qlfcrakkq9xeywf62dcg7hfhdqetelggugzzcnz6703\"}",
"password": "",
"expected": {
"xpriv": "xprv9s21ZrQH143K4NxC78XEV4KUNRkiKyCgqbZotxoTVFPYNQtTjamRHcJde9uN34evLyATmEJZNUPF7wRLbHimH3cnAdc42EvRkQMczGVdVeV",
"extsk": "p-secret-spending-key-main1qwynqcz3qqqqpqrsy02v0pn4068y5j2586zzr35pjvhlmfhg6s6h400s9wgyw6kzhnkg8urj7t0l7qap56glm8gaj9zlvxv64nvw86eveg37mfnvrw4qp86hm66v4pqq8mw620wx426zf9halmk2g248t8l7gy0mxphgg4sxefwfqyhfxpkwwrcr9f5psj87h2hgq5fqlg2hnfwztnnheq6cx5txm5sxx7hqze0me2qlfcrakkq9xeywf62dcg7hfhdqetelggugzzcnz6703"
}
},
{
"secret": "XHfwRfUnF+bRBZD3HuJSrK3cGFGv83TZzcTzuBPDYjrC+FYpDaSUaxToNgo+uDoBOgZkNyWeNcYJcgZ1hyNHZp2LRqBChAixevvj0yB6vr5m1pNkLeLAoJHpXSj/G7Kfhx7i3EkN7Q2U6V42hHc6LnSvBAnWcJFfZ+S3X8pzaFXmkouvXJoNDUyarI8le7sUmNWBD59YH8u9vKl6toVVRT6fUX26LG49axZg8gOpa7bAIkDa+7cEciJfAjoX9SnacV0ucayReksT1cOcyMAe8wp5atr+GOmd8f7816i92jCzCafnqRGieCIWaYxplMZJyMky7m7S+9q6cEi2L2Rtijua2YA1aVLljtcOXnG0d/Ka4E0f2xntnW3MDeFCheqkKOINGAtQtUDiAKw6FjOjpN7PpkviDMIian+Nhpz4q0mgzdG1aWczpjmTu+NC2x5YmzT0y2cqwolx0yOEm2Fd4nMYWk5culv5jVRE6UJ8+dZCn3VbQW+lE5KuAcW2dqojrpdzPZNx7hFi8rH+ICVMHnugnaFLxk7+T9Bb/Vn0bFTJt/9iCylFvu+59bUpMO741wj7gYXLT97dTYs3OSOGSIvjf9YLb9b3sKuoZR1UMHt66TmhIOh4mGPj5XTKIWfs",
"password": "654321",
"expected": {
"xpriv": "xprv9s21ZrQH143K4NxC78XEV4KUNRkiKyCgqbZotxoTVFPYNQtTjamRHcJde9uN34evLyATmEJZNUPF7wRLbHimH3cnAdc42EvRkQMczGVdVeV",
"extsk": "p-secret-spending-key-main1qwynqcz3qqqqpqrsy02v0pn4068y5j2586zzr35pjvhlmfhg6s6h400s9wgyw6kzhnkg8urj7t0l7qap56glm8gaj9zlvxv64nvw86eveg37mfnvrw4qp86hm66v4pqq8mw620wx426zf9halmk2g248t8l7gy0mxphgg4sxefwfqyhfxpkwwrcr9f5psj87h2hgq5fqlg2hnfwztnnheq6cx5txm5sxx7hqze0me2qlfcrakkq9xeywf62dcg7hfhdqetelggugzzcnz6703"
}
},
{
"secret": ["invalidsecret", "{\"invalid\":\"secret\"}"],
"expected": {}
}
]
53 changes: 53 additions & 0 deletions tests/unit/parsed_secret.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { describe, it, vi, beforeEach, afterAll } from 'vitest';
import { ParsedSecret } from '../../scripts/parsed_secret.js';
import secretTestCases from './parsed_secret.json';
import * as pivxShield from 'pivx-shield';
import { bytesToHex } from '../../scripts/utils.js';

vi.mock('pivx-shield', () => {
return {
PIVXShield: {
create: vi.fn(),
},
};
});

describe('Parsed secret tests', () => {
beforeEach(() => {
pivxShield.PIVXShield.create = vi.fn();
});
it.each(secretTestCases)(
'parses secret $secret',
async ({ secret: secrets, password, expected }) => {
if (!Array.isArray(secrets)) {
secrets = [secrets];
}
for (const secret of secrets) {
const parsedSecret = await ParsedSecret.parse(secret, password);
if (expected.xpriv)
expect(parsedSecret.masterKey?.keyToBackup ?? null).toBe(
expected.xpriv
);
if (expected.xpub)
expect(
parsedSecret.masterKey?.getKeyToExport(0) ?? null
).toBe(expected.xpub);
const { seed, extendedSpendingKey: extsk } =
pivxShield.PIVXShield.create.mock.calls.at(-1)?.at(0) ?? {};

if (seed) expect(bytesToHex(seed)).toBe(expected.seed);
else {
expect(expected.seed).toBeUndefined();
}
if (extsk) expect(extsk).toBe(expected.extsk);
else {
expect(expected.extsk).toBeUndefined();
}
}
}
);
afterAll(() => {
vi.clearAllMocks();
vi.resetAllMocks();
});
});

0 comments on commit 1dc969e

Please sign in to comment.