Johann150
38786b6999
Some checks failed
ci/woodpecker/push/build Pipeline failed
ci/woodpecker/push/lint-foundkey-js Pipeline failed
ci/woodpecker/push/test unknown status
ci/woodpecker/push/lint-backend Pipeline failed
ci/woodpecker/push/lint-client Pipeline failed
ci/woodpecker/push/lint-sw Pipeline failed
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);
|
|
});
|
|
});
|