-/* 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'
+import { buildRequestStub } from '../../../../shared/extra-utils/miscs/stubs'
import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto'
import { cloneDeep } from 'lodash'
import { buildSignedActivity } from '../../../helpers/activitypub'
+import { buildAbsoluteFixturePath } from '@shared/extra-utils'
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)
})
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)
})
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)
})
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)
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)
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)
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)
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 {
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
}
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)