X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Factivitypub%2Fhelpers.ts;h=e516cf49e8ce03c1f21c5b849cf8e646c0f0b468;hb=7e98a7df7d04e19ba67163a86c7b876d78d76839;hp=4c42f3d67e6754dcc01c14ae1a598d5de1c7eb79;hpb=bc22d60899e14631cba0fb6450f4e85fc9528293;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/activitypub/helpers.ts b/server/tests/api/activitypub/helpers.ts index 4c42f3d67..e516cf49e 100644 --- a/server/tests/api/activitypub/helpers.ts +++ b/server/tests/api/activitypub/helpers.ts @@ -1,18 +1,19 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ import 'mocha' import { expect } from 'chai' -import { buildRequestStub } from '../../utils/miscs/stubs' -import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto' import { cloneDeep } from 'lodash' -import { buildSignedActivity } from '../../../helpers/activitypub' +import { buildRequestStub } from '@server/tests/shared' +import { buildAbsoluteFixturePath } from '@shared/core-utils' +import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto' +import { buildSignedActivity } from '../../../lib/activitypub/activity' describe('Test activity pub helpers', function () { describe('When checking the Linked Signature', function () { it('Should fail with an invalid Mastodon signature', async function () { - const body = require('./json/mastodon/create-bad-signature.json') - const publicKey = require('./json/mastodon/public-key.json').publicKey + const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create-bad-signature.json')) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } const result = await isJsonLDSignatureVerified(fromActor as any, body) @@ -21,8 +22,8 @@ describe('Test activity pub helpers', function () { }) it('Should fail with an invalid public key', async function () { - const body = require('./json/mastodon/create.json') - const publicKey = require('./json/mastodon/bad-public-key.json').publicKey + const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json')) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } const result = await isJsonLDSignatureVerified(fromActor as any, body) @@ -31,8 +32,8 @@ describe('Test activity pub helpers', function () { }) it('Should succeed with a valid Mastodon signature', async function () { - const body = require('./json/mastodon/create.json') - const publicKey = require('./json/mastodon/public-key.json').publicKey + const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json')) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } const result = await isJsonLDSignatureVerified(fromActor as any, body) @@ -41,8 +42,8 @@ describe('Test activity pub helpers', function () { }) it('Should fail with an invalid PeerTube signature', async function () { - const keys = require('./json/peertube/invalid-keys.json') - const body = require('./json/peertube/announce-without-context.json') + const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/invalid-keys.json')) + const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json')) const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } const signedBody = await buildSignedActivity(actorSignature as any, body) @@ -53,22 +54,9 @@ describe('Test activity pub helpers', function () { expect(result).to.be.false }) - it('Should fail with an invalid PeerTube URL', async function () { - const keys = require('./json/peertube/keys.json') - const body = require('./json/peertube/announce-without-context.json') - - const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } - const signedBody = await buildSignedActivity(actorSignature as any, body) - - const fromActor = { publicKey: keys.publicKey, url: 'http://localhost:9003/accounts/peertube' } - const result = await isJsonLDSignatureVerified(fromActor as any, signedBody) - - expect(result).to.be.false - }) - it('Should succeed with a valid PeerTube signature', async function () { - const keys = require('./json/peertube/keys.json') - const body = require('./json/peertube/announce-without-context.json') + const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/keys.json')) + const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json')) const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } const signedBody = await buildSignedActivity(actorSignature as any, body) @@ -86,13 +74,12 @@ describe('Test activity pub helpers', function () { req.method = 'POST' req.url = '/accounts/ronan/inbox' - const mastodonObject = cloneDeep(require('./json/mastodon/bad-http-signature.json')) + const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-http-signature.json'))) req.body = mastodonObject.body req.headers = mastodonObject.headers - req.headers.signature = 'Signature ' + req.headers.signature - const parsed = parseHTTPSignature(req, 3600 * 365 * 3) - const publicKey = require('./json/mastodon/public-key.json').publicKey + const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey const actor = { publicKey } const verified = isHTTPSignatureVerified(parsed, actor as any) @@ -105,13 +92,12 @@ describe('Test activity pub helpers', function () { req.method = 'POST' req.url = '/accounts/ronan/inbox' - const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) + const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) req.body = mastodonObject.body req.headers = mastodonObject.headers - req.headers.signature = 'Signature ' + req.headers.signature - const parsed = parseHTTPSignature(req, 3600 * 365 * 3) - const publicKey = require('./json/mastodon/bad-public-key.json').publicKey + const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey const actor = { publicKey } const verified = isHTTPSignatureVerified(parsed, actor as any) @@ -124,10 +110,9 @@ describe('Test activity pub helpers', function () { req.method = 'POST' req.url = '/accounts/ronan/inbox' - const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) + const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) req.body = mastodonObject.body req.headers = mastodonObject.headers - req.headers.signature = 'Signature ' + req.headers.signature let errored = false try { @@ -139,18 +124,19 @@ describe('Test activity pub helpers', function () { expect(errored).to.be.true }) - it('Should fail without scheme', async function () { + it('Should with a scheme', async function () { const req = buildRequestStub() req.method = 'POST' req.url = '/accounts/ronan/inbox' - const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) + const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) req.body = mastodonObject.body req.headers = mastodonObject.headers + req.headers = 'Signature ' + mastodonObject.headers let errored = false try { - parseHTTPSignature(req, 3600 * 365 * 3) + parseHTTPSignature(req, 3600 * 1000 * 365 * 10) } catch { errored = true } @@ -163,13 +149,12 @@ describe('Test activity pub helpers', function () { req.method = 'POST' req.url = '/accounts/ronan/inbox' - const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) + const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) req.body = mastodonObject.body req.headers = mastodonObject.headers - req.headers.signature = 'Signature ' + req.headers.signature - const parsed = parseHTTPSignature(req, 3600 * 365 * 3) - const publicKey = require('./json/mastodon/public-key.json').publicKey + const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) + const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey const actor = { publicKey } const verified = isHTTPSignatureVerified(parsed, actor as any)