Skip to content

Commit

Permalink
test: add e2e test
Browse files Browse the repository at this point in the history
  • Loading branch information
viceice committed Apr 23, 2024
1 parent 02e640a commit 994115c
Show file tree
Hide file tree
Showing 4 changed files with 177 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ jobs:
- name: Test
run: pnpm test

- name: Test e2e
run: pnpm test:e2e

# Catch-all required check for test matrix
test-success:
needs:
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
"packageManager": "pnpm@9.0.5",
"scripts": {
"build": "make build",
"test": "iced test/run.iced"
"test": "iced test/run.iced",
"test:e2e": "node --test test/e2e/"
}
}
66 changes: 66 additions & 0 deletions test/e2e/decrypt.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
const { describe, it } = require('node:test');
const fs = require('node:fs/promises');
const assert = require('node:assert');
const kbpgp = require('../..');

describe('decrypt', () => {
it('works', async () => {
const key = await fs.readFile(`${__dirname}/private-pgp.pem`, {
encoding: 'utf-8',
});

const msg =
'wcFMAw+4H7SgaqGOAQ//Yk4RTQoLEhO0TKxN2IUBrCi88ts+CG1SXKeL06sJ2qikN/3n2JYAGGKgkHRICfu5dOnsjyFdLJ1XWUrbsM3XgVWikMbrmzD1Xe7N5DsoZXlt4Wa9pZ+IkZuE6XcKKu9whIJ22ciEwCzFwDmk/CBshdCCVVQ3IYuM6uibEHn/AHQ8K15XhraiSzF6DbJpevs5Cy7b5YHFyE936H25CVnouUQnMPsirpQq3pYeMq/oOtV/m4mfRUUQ7MUxvtrwE4lq4hLjFu5n9rwlcqaFPl7I7BEM++1c9LFpYsP5mTS7hHCZ9wXBqER8fa3fKYx0bK1ihCpjP4zUkR7P/uhWDArXamv7gHX2Kj/Qsbegn7KjTdZlggAmaJl/CuSgCbhySy+E55g3Z1QFajiLRpQ5+RsWFDbbI08YEgzyQ0yNCaRvrkgo7kZ1D95rEGRfY96duOQbjzOEqtvYmFChdemZ2+f9Kh/JH1+X9ynxY/zYe/0p/U7WD3QNTYN18loc4aXiB1adXD5Ka2QfNroLudQBmLaJpJB6wASFfuxddsD5yRnO32NSdRaqIWC1x6ti3ZYJZ2RsNwJExPDzjpQTuMOH2jtpu3q7NHmW3snRKy2YAL2UjI0YdeKIlhc/qLCJt9MRcOxWYvujTMD/yGprhG44qf0jjMkJBu7NjuVIMONujabl9b7SUQGfO/t+3rMuC68bQdCGLlO8gf3hvtD99utzXphi6idjC0HKSW/9KzuMkm+syGmIAYq/0L3EFvpZ38uq7z8KzwFFQHI3sBA34bNEr5zpU5OMWg';
// This test passes because it does not throw an exception.
assert.strictEqual(1, 1);

const pk = await new Promise((resolve, reject) => {
kbpgp.KeyManager.import_from_armored_pgp(
{
armored: key.replace(/\n[ \t]+/g, '\n'),
},
(err, pk) => {
if (err) {
reject(err);
} else {
resolve(pk);
}
},
);
});

assert.ok(pk);

const ring = new kbpgp.keyring.KeyRing();
ring.add_key_manager(pk);

const startBlock = '-----BEGIN PGP MESSAGE-----\n\n';
const endBlock = '\n-----END PGP MESSAGE-----';

let armoredMessage = msg.trim();
if (!armoredMessage.startsWith(startBlock)) {
armoredMessage = `${startBlock}${armoredMessage}`;
}
if (!armoredMessage.endsWith(endBlock)) {
armoredMessage = `${armoredMessage}${endBlock}`;
}

const data = await new Promise((resolve, reject) => {
kbpgp.unbox(
{
keyfetch: ring,
armored: armoredMessage,
},
(err, literals) => {
if (err) {
reject(err);
} else {
resolve(literals[0].toString());
}
},
);
});

assert.equal(data, '{"o":"abc,def","r":"","v":"123"}');
});
});
106 changes: 106 additions & 0 deletions test/e2e/private-pgp.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
mJ4R+EnCuazu
=UnDn
-----END PGP PRIVATE KEY BLOCK-----

0 comments on commit 994115c

Please sign in to comment.