X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fmisc-endpoints.ts;h=f9cf2b717cd6ec974aee35331e0fb9774154fbc1;hb=cffef25313bdf7a6c435f56ac6715fdd91acf7b3;hp=876546d89783c7dd0384a38f89109bb8d53ce44d;hpb=c3edc5b074aa4bb1861ed0a94d3713808e87170f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/misc-endpoints.ts b/server/tests/misc-endpoints.ts index 876546d89..f9cf2b717 100644 --- a/server/tests/misc-endpoints.ts +++ b/server/tests/misc-endpoints.ts @@ -1,20 +1,24 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import 'mocha' -import * as chai from 'chai' -import { cleanupTests, createSingleServer, makeGetRequest, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands' +import { expect } from 'chai' +import { writeJson } from 'fs-extra' +import { join } from 'path' import { HttpStatusCode, VideoPrivacy } from '@shared/models' - -const expect = chai.expect +import { cleanupTests, createSingleServer, makeGetRequest, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands' +import { expectLogDoesNotContain } from './shared' describe('Test misc endpoints', function () { let server: PeerTubeServer + let wellKnownPath: string before(async function () { this.timeout(120000) server = await createSingleServer(1) + await setAccessTokensToServers([ server ]) + + wellKnownPath = server.getDirectoryPath('well-known') }) describe('Test a well known endpoints', function () { @@ -95,6 +99,28 @@ describe('Test misc endpoints', function () { expect(remoteInteract).to.exist expect(remoteInteract.template).to.equal(server.url + '/remote-interaction?uri={uri}') }) + + it('Should return 404 for non-existing files in /.well-known', async function () { + await makeGetRequest({ + url: server.url, + path: '/.well-known/non-existing-file', + expectedStatus: HttpStatusCode.NOT_FOUND_404 + }) + }) + + it('Should return custom file from /.well-known', async function () { + const filename = 'existing-file.json' + + await writeJson(join(wellKnownPath, filename), { iThink: 'therefore I am' }) + + const { body } = await makeGetRequest({ + url: server.url, + path: '/.well-known/' + filename, + expectedStatus: HttpStatusCode.OK_200 + }) + + expect(body.iThink).to.equal('therefore I am') + }) }) describe('Test classic static endpoints', function () { @@ -140,7 +166,7 @@ describe('Test misc endpoints', function () { }) expect(res.text).to.contain('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"') - expect(res.text).to.contain('http://localhost:' + server.port + '/about/instance') + expect(res.text).to.contain('' + server.url + '/about/instance') }) it('Should get the empty cached sitemap', async function () { @@ -151,7 +177,7 @@ describe('Test misc endpoints', function () { }) expect(res.text).to.contain('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"') - expect(res.text).to.contain('http://localhost:' + server.port + '/about/instance') + expect(res.text).to.contain('' + server.url + '/about/instance') }) it('Should add videos, channel and accounts and get sitemap', async function () { @@ -174,17 +200,34 @@ describe('Test misc endpoints', function () { }) expect(res.text).to.contain('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"') - expect(res.text).to.contain('http://localhost:' + server.port + '/about/instance') + expect(res.text).to.contain('' + server.url + '/about/instance') expect(res.text).to.contain('video 1') expect(res.text).to.contain('video 2') expect(res.text).to.not.contain('video 3') - expect(res.text).to.contain('http://localhost:' + server.port + '/video-channels/channel1') - expect(res.text).to.contain('http://localhost:' + server.port + '/video-channels/channel2') + expect(res.text).to.contain('' + server.url + '/video-channels/channel1') + expect(res.text).to.contain('' + server.url + '/video-channels/channel2') + + expect(res.text).to.contain('' + server.url + '/accounts/user1') + expect(res.text).to.contain('' + server.url + '/accounts/user2') + }) + + it('Should not fail with big title/description videos', async function () { + const name = 'v'.repeat(115) + + await server.videos.upload({ attributes: { name, description: 'd'.repeat(2500), nsfw: false } }) + + const res = await makeGetRequest({ + url: server.url, + path: '/sitemap.xml?t=2', // avoid using cache + expectedStatus: HttpStatusCode.OK_200 + }) + + await expectLogDoesNotContain(server, 'Warning in sitemap generation') + await expectLogDoesNotContain(server, 'Error in sitemap generation') - expect(res.text).to.contain('http://localhost:' + server.port + '/accounts/user1') - expect(res.text).to.contain('http://localhost:' + server.port + '/accounts/user2') + expect(res.text).to.contain(`${'v'.repeat(97)}...`) }) })