aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-09-07 15:27:35 +0200
committerChocobozzz <florian.bigard@gmail.com>2017-09-07 15:54:34 +0200
commitfdbda9e3d6564ec908733c7019305f6a3c363a9f (patch)
treec596034156f167e7cfafe41c4a3fc6adda488a0d /server/tests
parent04de542abd940f9d2ca213fba3c68580c6c9b78a (diff)
downloadPeerTube-fdbda9e3d6564ec908733c7019305f6a3c363a9f.tar.gz
PeerTube-fdbda9e3d6564ec908733c7019305f6a3c363a9f.tar.zst
PeerTube-fdbda9e3d6564ec908733c7019305f6a3c363a9f.zip
Add tests for npm run scripts
Diffstat (limited to 'server/tests')
-rw-r--r--server/tests/cli/index.ts2
-rw-r--r--server/tests/cli/reset-password.ts45
-rw-r--r--server/tests/cli/update-host.ts71
-rw-r--r--server/tests/index.ts1
-rw-r--r--server/tests/utils/cli.ts24
-rw-r--r--server/tests/utils/index.ts1
-rw-r--r--server/tests/utils/servers.ts9
-rw-r--r--server/tests/utils/videos.ts17
8 files changed, 168 insertions, 2 deletions
diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts
new file mode 100644
index 000000000..e5a19ff10
--- /dev/null
+++ b/server/tests/cli/index.ts
@@ -0,0 +1,2 @@
1// Order of the tests we want to execute
2import './reset-password'
diff --git a/server/tests/cli/reset-password.ts b/server/tests/cli/reset-password.ts
new file mode 100644
index 000000000..bbf0b3d11
--- /dev/null
+++ b/server/tests/cli/reset-password.ts
@@ -0,0 +1,45 @@
1import 'mocha'
2
3import {
4 createUser,
5 execCLI,
6 flushTests,
7 getEnvCli,
8 killallServers,
9 login,
10 runServer,
11 ServerInfo,
12 setAccessTokensToServers
13} from '../utils'
14
15describe('Test reset password scripts', function () {
16 let server: ServerInfo
17
18 before(async function () {
19 this.timeout(30000)
20
21 await flushTests()
22 server = await runServer(1)
23 await setAccessTokensToServers([ server ])
24
25 await createUser(server.url, server.accessToken, 'user_1', 'super password')
26 })
27
28 it('Should change the user password from CLI', async function () {
29 this.timeout(20000)
30
31 const env = getEnvCli(server)
32 await execCLI(`echo coucou | ${env} npm run reset-password -- -u user_1`)
33
34 await login(server.url, server.client, { username: 'user_1', password: 'coucou' }, 200)
35 })
36
37 after(async function () {
38 killallServers([ server ])
39
40 // Keep the logs if the test failed
41 if (this['ok']) {
42 await flushTests()
43 }
44 })
45})
diff --git a/server/tests/cli/update-host.ts b/server/tests/cli/update-host.ts
new file mode 100644
index 000000000..af9703b32
--- /dev/null
+++ b/server/tests/cli/update-host.ts
@@ -0,0 +1,71 @@
1import 'mocha'
2import * as chai from 'chai'
3const expect = chai.expect
4
5import {
6 execCLI,
7 flushTests,
8 getEnvCli,
9 getVideosList,
10 killallServers,
11 parseTorrentVideo,
12 runServer,
13 ServerInfo,
14 setAccessTokensToServers,
15 uploadVideo
16} from '../utils'
17
18describe('Test update host scripts', function () {
19 let server: ServerInfo
20
21 before(async function () {
22 this.timeout(30000)
23
24 await flushTests()
25
26 const overrideConfig = {
27 webserver: {
28 port: 9256
29 }
30 }
31 server = await runServer(1, overrideConfig)
32 await setAccessTokensToServers([ server ])
33
34 // Upload two videos for our needs
35 const videoAttributes = {}
36 await uploadVideo(server.url, server.accessToken, videoAttributes)
37 await uploadVideo(server.url, server.accessToken, videoAttributes)
38 })
39
40 it('Should update torrent hosts', async function () {
41 this.timeout(20000)
42
43 killallServers([ server ])
44 server = await runServer(1)
45
46 const env = getEnvCli(server)
47 await execCLI(`${env} npm run update-host`)
48
49 const res = await getVideosList(server.url)
50 const videos = res.body.data
51
52 expect(videos[0].files[0].magnetUri).to.contain('localhost%3A9001%2Ftracker%2Fsocket')
53 expect(videos[0].files[0].magnetUri).to.contain('localhost%3A9001%2Fstatic%2Fwebseed%2F')
54
55 expect(videos[1].files[0].magnetUri).to.contain('localhost%3A9001%2Ftracker%2Fsocket')
56 expect(videos[1].files[0].magnetUri).to.contain('localhost%3A9001%2Fstatic%2Fwebseed%2F')
57
58 const torrent = await parseTorrentVideo(server, videos[0].uuid)
59 expect(torrent.announce[0]).to.equal('ws://localhost:9001/tracker/socket')
60 expect(torrent.urlList[0]).to.contain('http://localhost:9001/static/webseed')
61 })
62
63 after(async function () {
64 killallServers([ server ])
65
66 // Keep the logs if the test failed
67 if (this['ok']) {
68 await flushTests()
69 }
70 })
71})
diff --git a/server/tests/index.ts b/server/tests/index.ts
index 26f0816b7..a7dd0d824 100644
--- a/server/tests/index.ts
+++ b/server/tests/index.ts
@@ -1,3 +1,4 @@
1// Order of the tests we want to execute 1// Order of the tests we want to execute
2import './client' 2import './client'
3import './api/' 3import './api/'
4import './cli/'
diff --git a/server/tests/utils/cli.ts b/server/tests/utils/cli.ts
new file mode 100644
index 000000000..5f07a832e
--- /dev/null
+++ b/server/tests/utils/cli.ts
@@ -0,0 +1,24 @@
1import { exec } from 'child_process'
2
3import { ServerInfo } from './servers'
4
5function getEnvCli (server?: ServerInfo) {
6 return `NODE_ENV=test NODE_APP_INSTANCE=${server.serverNumber}`
7}
8
9async function execCLI (command: string) {
10 return new Promise((res, rej) => {
11 exec(command, (err, stdout, stderr) => {
12 if (err) return rej(err)
13
14 return res(stdout)
15 })
16 })
17}
18
19// ---------------------------------------------------------------------------
20
21export {
22 execCLI,
23 getEnvCli
24}
diff --git a/server/tests/utils/index.ts b/server/tests/utils/index.ts
index 9077b0568..0fa28f2af 100644
--- a/server/tests/utils/index.ts
+++ b/server/tests/utils/index.ts
@@ -1,3 +1,4 @@
1export * from './cli'
1export * from './clients' 2export * from './clients'
2export * from './config' 3export * from './config'
3export * from './login' 4export * from './login'
diff --git a/server/tests/utils/servers.ts b/server/tests/utils/servers.ts
index 272a8935e..88027f74e 100644
--- a/server/tests/utils/servers.ts
+++ b/server/tests/utils/servers.ts
@@ -5,6 +5,7 @@ interface ServerInfo {
5 app: ChildProcess, 5 app: ChildProcess,
6 url: string 6 url: string
7 host: string 7 host: string
8 serverNumber: number
8 9
9 client: { 10 client: {
10 id: string, 11 id: string,
@@ -65,9 +66,10 @@ function flushTests () {
65 }) 66 })
66} 67}
67 68
68function runServer (serverNumber: number) { 69function runServer (serverNumber: number, configOverride?: Object) {
69 const server: ServerInfo = { 70 const server: ServerInfo = {
70 app: null, 71 app: null,
72 serverNumber: serverNumber,
71 url: `http://localhost:${9000 + serverNumber}`, 73 url: `http://localhost:${9000 + serverNumber}`,
72 host: `localhost:${9000 + serverNumber}`, 74 host: `localhost:${9000 + serverNumber}`,
73 client: { 75 client: {
@@ -98,6 +100,11 @@ function runServer (serverNumber: number) {
98 const env = Object.create(process.env) 100 const env = Object.create(process.env)
99 env['NODE_ENV'] = 'test' 101 env['NODE_ENV'] = 'test'
100 env['NODE_APP_INSTANCE'] = serverNumber.toString() 102 env['NODE_APP_INSTANCE'] = serverNumber.toString()
103
104 if (configOverride !== undefined) {
105 env['NODE_CONFIG'] = JSON.stringify(configOverride)
106 }
107
101 const options = { 108 const options = {
102 silent: true, 109 silent: true,
103 env: env, 110 env: env,
diff --git a/server/tests/utils/videos.ts b/server/tests/utils/videos.ts
index 42b7dd05a..509a2430a 100644
--- a/server/tests/utils/videos.ts
+++ b/server/tests/utils/videos.ts
@@ -1,8 +1,11 @@
1import { readFile } from 'fs'
1import * as request from 'supertest' 2import * as request from 'supertest'
2import { join, isAbsolute } from 'path' 3import { join, isAbsolute } from 'path'
4import * as parseTorrent from 'parse-torrent'
3 5
4import { makeGetRequest } from './requests' 6import { makeGetRequest } from './requests'
5import { readFilePromise } from './miscs' 7import { readFilePromise } from './miscs'
8import { ServerInfo } from './servers'
6 9
7type VideoAttributes = { 10type VideoAttributes = {
8 name?: string 11 name?: string
@@ -232,6 +235,17 @@ function rateVideo (url: string, accessToken: string, id: number, rating: string
232 .expect(specialStatus) 235 .expect(specialStatus)
233} 236}
234 237
238function parseTorrentVideo (server: ServerInfo, videoUUID: string) {
239 return new Promise<any>((res, rej) => {
240 const torrentPath = join(__dirname, '..', '..', '..', 'test' + server.serverNumber, 'torrents', videoUUID + '.torrent')
241 readFile(torrentPath, (err, data) => {
242 if (err) return rej(err)
243
244 return res(parseTorrent(data))
245 })
246 })
247}
248
235// --------------------------------------------------------------------------- 249// ---------------------------------------------------------------------------
236 250
237export { 251export {
@@ -250,5 +264,6 @@ export {
250 testVideoImage, 264 testVideoImage,
251 uploadVideo, 265 uploadVideo,
252 updateVideo, 266 updateVideo,
253 rateVideo 267 rateVideo,
268 parseTorrentVideo
254} 269}