add cli option to run without client
authorRigel Kent <sendmemail@rigelk.eu>
Wed, 14 Nov 2018 14:27:47 +0000 (15:27 +0100)
committerRigel Kent <par@rigelk.eu>
Wed, 14 Nov 2018 14:59:56 +0000 (15:59 +0100)
package.json
server.ts
server/tests/api/server/index.ts
server/tests/api/server/no-client.ts [new file with mode: 0644]
server/tests/utils/server/servers.ts

index 3c77b93cbf8fc056e51de5a576a0e61e05810f90..3d25a9ab82ba4b4b88d7c3b96722dbef2619abda 100644 (file)
@@ -43,6 +43,7 @@
     "dev:server": "scripty",
     "dev:client": "scripty",
     "start": "node dist/server",
+    "start:server": "node dist/server --no-client",
     "update-host": "node ./dist/scripts/update-host.js",
     "create-transcoding-job": "node ./dist/scripts/create-transcoding-job.js",
     "create-import-video-file-job": "node ./dist/scripts/create-import-video-file-job.js",
index 59fb820b47a1be95d0d7d2bbdae6dc76b0a5aa9f..51aa6763896a74086e64713a0b82261ac4e128e7 100644 (file)
--- a/server.ts
+++ b/server.ts
@@ -16,6 +16,7 @@ import * as cookieParser from 'cookie-parser'
 import * as helmet from 'helmet'
 import * as useragent from 'useragent'
 import * as anonymize from 'ip-anonymize'
+import * as cli from 'commander'
 
 process.title = 'peertube'
 
@@ -98,6 +99,10 @@ import { VideosRedundancyScheduler } from './server/lib/schedulers/videos-redund
 
 // ----------- Command line -----------
 
+cli
+  .option('--no-client', 'Start PeerTube without client interface')
+  .parse(process.argv)
+
 // ----------- App -----------
 
 // Enable CORS for develop
@@ -151,7 +156,7 @@ app.use('/', trackerRouter)
 app.use('/', staticRouter)
 
 // Client files, last valid routes!
-app.use('/', clientsRouter)
+if (cli.client) app.use('/', clientsRouter)
 
 // ----------- Errors -----------
 
index eeb8b7a28ef5fd0990624b7da860cbcb86e0557e..78ab7e18bc30616d5657fc19573295ca9b76a971 100644 (file)
@@ -6,3 +6,4 @@ import './jobs'
 import './reverse-proxy'
 import './stats'
 import './tracker'
+import './no-client'
diff --git a/server/tests/api/server/no-client.ts b/server/tests/api/server/no-client.ts
new file mode 100644 (file)
index 0000000..6d6ce85
--- /dev/null
@@ -0,0 +1,36 @@
+import 'mocha'
+import * as request from 'supertest'
+import {
+  flushTests,
+  killallServers,
+  ServerInfo
+} from '../../utils/index'
+import { runServer } from '../../utils/server/servers'
+
+describe('Start and stop server without web client routes', function () {
+  let server: ServerInfo
+
+  before(async function () {
+    this.timeout(30000)
+
+    await flushTests()
+
+    server = await runServer(1, {}, ['--no-client'])
+  })
+
+  it('Should fail getting the client', function () {
+    const req = request(server.url)
+      .get('/')
+
+    return req.expect(404)
+  })
+
+  after(async function () {
+    killallServers([ server ])
+
+    // Keep the logs if the test failed
+    if (this['ok']) {
+      await flushTests()
+    }
+  })
+})
index 3c946db273d6014bb90c790c9c6d193b79b8143d..f358a21f13f37dddb2d2a5244fc76de7c8a09e20 100644 (file)
@@ -69,7 +69,7 @@ function flushTests () {
   })
 }
 
-function runServer (serverNumber: number, configOverride?: Object) {
+function runServer (serverNumber: number, configOverride?: Object, args = []) {
   const server: ServerInfo = {
     app: null,
     serverNumber: serverNumber,
@@ -115,7 +115,7 @@ function runServer (serverNumber: number, configOverride?: Object) {
   }
 
   return new Promise<ServerInfo>(res => {
-    server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), [], options)
+    server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), args, options)
     server.app.stdout.on('data', function onStdout (data) {
       let dontContinue = false