forked from FoundKeyGang/FoundKey
Johann150
38786b6999
This allows to get rid of the special loader for ts files. There is no need for the test files to be written in TypeScript, plain JavaScript should be fine for this purpose.
55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
import * as assert from 'assert';
|
|
import httpSignature from '@peertube/http-signature';
|
|
import { genRsaKeyPair } from '../built/misc/gen-key-pair.js';
|
|
import { createSignedPost, createSignedGet } from '../built/remote/activitypub/ap-request.js';
|
|
|
|
export const buildParsedSignature = (signingString, signature, algorithm) => {
|
|
return {
|
|
scheme: 'Signature',
|
|
params: {
|
|
keyId: 'KeyID', // dummy, not used for verify
|
|
algorithm: algorithm,
|
|
headers: [ '(request-target)', 'date', 'host', 'digest' ], // dummy, not used for verify
|
|
signature: signature,
|
|
},
|
|
signingString: signingString,
|
|
algorithm: algorithm.toUpperCase(),
|
|
keyId: 'KeyID', // dummy, not used for verify
|
|
};
|
|
};
|
|
|
|
describe('ap-request', () => {
|
|
it('createSignedPost with verify', async () => {
|
|
const keypair = await genRsaKeyPair();
|
|
const key = { keyId: 'x', 'privateKeyPem': keypair.privateKey };
|
|
const url = 'https://example.com/inbox';
|
|
const activity = { a: 1 };
|
|
const body = JSON.stringify(activity);
|
|
const headers = {
|
|
'User-Agent': 'UA',
|
|
};
|
|
|
|
const req = createSignedPost({ key, url, body, additionalHeaders: headers });
|
|
|
|
const parsed = buildParsedSignature(req.signingString, req.signature, 'rsa-sha256');
|
|
|
|
const result = httpSignature.verifySignature(parsed, keypair.publicKey);
|
|
assert.deepStrictEqual(result, true);
|
|
});
|
|
|
|
it('createSignedGet with verify', async () => {
|
|
const keypair = await genRsaKeyPair();
|
|
const key = { keyId: 'x', 'privateKeyPem': keypair.privateKey };
|
|
const url = 'https://example.com/outbox';
|
|
const headers = {
|
|
'User-Agent': 'UA',
|
|
};
|
|
|
|
const req = createSignedGet({ key, url, additionalHeaders: headers });
|
|
|
|
const parsed = buildParsedSignature(req.signingString, req.signature, 'rsa-sha256');
|
|
|
|
const result = httpSignature.verifySignature(parsed, keypair.publicKey);
|
|
assert.deepStrictEqual(result, true);
|
|
});
|
|
});
|