diff options
Diffstat (limited to 'server/tests')
-rw-r--r-- | server/tests/cli/index.ts | 2 | ||||
-rw-r--r-- | server/tests/cli/reset-password.ts | 45 | ||||
-rw-r--r-- | server/tests/cli/update-host.ts | 71 | ||||
-rw-r--r-- | server/tests/index.ts | 1 | ||||
-rw-r--r-- | server/tests/utils/cli.ts | 24 | ||||
-rw-r--r-- | server/tests/utils/index.ts | 1 | ||||
-rw-r--r-- | server/tests/utils/servers.ts | 9 | ||||
-rw-r--r-- | server/tests/utils/videos.ts | 17 |
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 | ||
2 | import './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 @@ | |||
1 | import 'mocha' | ||
2 | |||
3 | import { | ||
4 | createUser, | ||
5 | execCLI, | ||
6 | flushTests, | ||
7 | getEnvCli, | ||
8 | killallServers, | ||
9 | login, | ||
10 | runServer, | ||
11 | ServerInfo, | ||
12 | setAccessTokensToServers | ||
13 | } from '../utils' | ||
14 | |||
15 | describe('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 @@ | |||
1 | import 'mocha' | ||
2 | import * as chai from 'chai' | ||
3 | const expect = chai.expect | ||
4 | |||
5 | import { | ||
6 | execCLI, | ||
7 | flushTests, | ||
8 | getEnvCli, | ||
9 | getVideosList, | ||
10 | killallServers, | ||
11 | parseTorrentVideo, | ||
12 | runServer, | ||
13 | ServerInfo, | ||
14 | setAccessTokensToServers, | ||
15 | uploadVideo | ||
16 | } from '../utils' | ||
17 | |||
18 | describe('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 |
2 | import './client' | 2 | import './client' |
3 | import './api/' | 3 | import './api/' |
4 | import './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 @@ | |||
1 | import { exec } from 'child_process' | ||
2 | |||
3 | import { ServerInfo } from './servers' | ||
4 | |||
5 | function getEnvCli (server?: ServerInfo) { | ||
6 | return `NODE_ENV=test NODE_APP_INSTANCE=${server.serverNumber}` | ||
7 | } | ||
8 | |||
9 | async 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 | |||
21 | export { | ||
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 @@ | |||
1 | export * from './cli' | ||
1 | export * from './clients' | 2 | export * from './clients' |
2 | export * from './config' | 3 | export * from './config' |
3 | export * from './login' | 4 | export * 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 | ||
68 | function runServer (serverNumber: number) { | 69 | function 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 @@ | |||
1 | import { readFile } from 'fs' | ||
1 | import * as request from 'supertest' | 2 | import * as request from 'supertest' |
2 | import { join, isAbsolute } from 'path' | 3 | import { join, isAbsolute } from 'path' |
4 | import * as parseTorrent from 'parse-torrent' | ||
3 | 5 | ||
4 | import { makeGetRequest } from './requests' | 6 | import { makeGetRequest } from './requests' |
5 | import { readFilePromise } from './miscs' | 7 | import { readFilePromise } from './miscs' |
8 | import { ServerInfo } from './servers' | ||
6 | 9 | ||
7 | type VideoAttributes = { | 10 | type 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 | ||
238 | function 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 | ||
237 | export { | 251 | export { |
@@ -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 | } |