From 23687332e6d7972c6a0eee30ce9056e45dec022b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 21 Jun 2018 18:29:28 +0200 Subject: Improve update host script and add warning if AP urls are invalid --- server/initializers/checker.ts | 25 +++++++++++++++- server/tests/cli/update-host.ts | 65 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 86 insertions(+), 4 deletions(-) (limited to 'server') diff --git a/server/initializers/checker.ts b/server/initializers/checker.ts index 6259c7b6c..d5402098f 100644 --- a/server/initializers/checker.ts +++ b/server/initializers/checker.ts @@ -3,6 +3,28 @@ import { promisify0 } from '../helpers/core-utils' import { UserModel } from '../models/account/user' import { ApplicationModel } from '../models/application/application' import { OAuthClientModel } from '../models/oauth/oauth-client' +import { parse } from 'url' +import { CONFIG } from './constants' +import { logger } from '../helpers/logger' +import { getServerActor } from '../helpers/utils' + +async function checkActivityPubUrls () { + const actor = await getServerActor() + + const parsed = parse(actor.url) + if (CONFIG.WEBSERVER.HOST !== parsed.host) { + const NODE_ENV = config.util.getEnv('NODE_ENV') + const NODE_CONFIG_DIR = config.util.getEnv('NODE_CONFIG_DIR') + + logger.warn( + 'It seems PeerTube was started (and created some data) with another domain name. ' + + 'This means you will not be able to federate! ' + + 'Please use %s %s npm run update-host to fix this.', + NODE_CONFIG_DIR ? `NODE_CONFIG_DIR=${NODE_CONFIG_DIR}` : '', + NODE_ENV ? `NODE_ENV=${NODE_ENV}` : '' + ) + } +} // Some checks on configuration files // Return an error message, or null if everything is okay @@ -95,5 +117,6 @@ export { checkMissedConfig, clientsExist, usersExist, - applicationExist + applicationExist, + checkActivityPubUrls } diff --git a/server/tests/cli/update-host.ts b/server/tests/cli/update-host.ts index d0c6d2042..968b7bd7f 100644 --- a/server/tests/cli/update-host.ts +++ b/server/tests/cli/update-host.ts @@ -3,20 +3,26 @@ import 'mocha' import * as chai from 'chai' import { VideoDetails } from '../../../shared/models/videos' +import { waitJobs } from '../utils/server/jobs' +import { addVideoCommentThread } from '../utils/videos/video-comments' import { + addVideoChannel, + createUser, execCLI, flushTests, getEnvCli, getVideo, + getVideoChannelsList, getVideosList, killallServers, + makeActivityPubGetRequest, parseTorrentVideo, runServer, ServerInfo, setAccessTokensToServers, uploadVideo } from '../utils' -import { waitJobs } from '../utils/server/jobs' +import { getAccountsList } from '../utils/users/accounts' const expect = chai.expect @@ -39,13 +45,28 @@ describe('Test update host scripts', function () { // Upload two videos for our needs const videoAttributes = {} + const resVideo1 = await uploadVideo(server.url, server.accessToken, videoAttributes) + const video1UUID = resVideo1.body.video.uuid await uploadVideo(server.url, server.accessToken, videoAttributes) - await uploadVideo(server.url, server.accessToken, videoAttributes) + + // Create a user + await createUser(server.url, server.accessToken, 'toto', 'coucou') + + // Create channel + const videoChannel = { + displayName: 'second video channel', + description: 'super video channel description' + } + await addVideoChannel(server.url, server.accessToken, videoChannel) + + // Create comments + const text = 'my super first comment' + await addVideoCommentThread(server.url, server.accessToken, video1UUID, text) await waitJobs(server) }) - it('Should update torrent hosts', async function () { + it('Should run update host', async function () { this.timeout(30000) killallServers([ server ]) @@ -54,6 +75,44 @@ describe('Test update host scripts', function () { const env = getEnvCli(server) await execCLI(`${env} npm run update-host`) + }) + + it('Should have updated videos url', async function () { + const res = await getVideosList(server.url) + expect(res.body.total).to.equal(2) + + for (const video of res.body.data) { + const { body } = await makeActivityPubGetRequest(server.url, '/videos/watch/' + video.uuid) + + expect(body.id).to.equal('http://localhost:9002/videos/watch/' + video.uuid) + } + }) + + it('Should have updated video channels url', async function () { + const res = await getVideoChannelsList(server.url, 0, 5, '-name') + expect(res.body.total).to.equal(3) + + for (const channel of res.body.data) { + const { body } = await makeActivityPubGetRequest(server.url, '/video-channels/' + channel.uuid) + + expect(body.id).to.equal('http://localhost:9002/video-channels/' + channel.uuid) + } + }) + + it('Should have update accounts url', async function () { + const res = await getAccountsList(server.url) + expect(res.body.total).to.equal(3) + + for (const account of res.body.data) { + const usernameWithDomain = account.name + const { body } = await makeActivityPubGetRequest(server.url, '/accounts/' + usernameWithDomain) + + expect(body.id).to.equal('http://localhost:9002/accounts/' + usernameWithDomain) + } + }) + + it('Should update torrent hosts', async function () { + this.timeout(30000) const res = await getVideosList(server.url) const videos = res.body.data -- cgit v1.2.3