aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests')
-rw-r--r--server/tests/fixtures/peertube-plugin-test-external-auth-three/main.js53
-rw-r--r--server/tests/fixtures/peertube-plugin-test-external-auth-three/package.json20
-rw-r--r--server/tests/plugins/external-auth.ts34
3 files changed, 103 insertions, 4 deletions
diff --git a/server/tests/fixtures/peertube-plugin-test-external-auth-three/main.js b/server/tests/fixtures/peertube-plugin-test-external-auth-three/main.js
new file mode 100644
index 000000000..30cedccc6
--- /dev/null
+++ b/server/tests/fixtures/peertube-plugin-test-external-auth-three/main.js
@@ -0,0 +1,53 @@
1async function register ({
2 registerExternalAuth,
3 peertubeHelpers
4}) {
5 {
6 const result = registerExternalAuth({
7 authName: 'external-auth-7',
8 authDisplayName: () => 'External Auth 7',
9 onAuthRequest: (req, res) => {
10 result.userAuthenticated({
11 req,
12 res,
13 username: 'cid',
14 email: 'cid@example.com',
15 displayName: 'Cid Marquez'
16 })
17 },
18 onLogout: (user, req) => {
19 return 'https://example.com/redirectUrl'
20 }
21 })
22 }
23
24 {
25 const result = registerExternalAuth({
26 authName: 'external-auth-8',
27 authDisplayName: () => 'External Auth 8',
28 onAuthRequest: (req, res) => {
29 result.userAuthenticated({
30 req,
31 res,
32 username: 'cid',
33 email: 'cid@example.com',
34 displayName: 'Cid Marquez'
35 })
36 },
37 onLogout: (user, req) => {
38 return 'https://example.com/redirectUrl?access_token=' + req.headers['authorization'].split(' ')[1]
39 }
40 })
41 }
42}
43
44async function unregister () {
45
46}
47
48module.exports = {
49 register,
50 unregister
51}
52
53// ###########################################################################
diff --git a/server/tests/fixtures/peertube-plugin-test-external-auth-three/package.json b/server/tests/fixtures/peertube-plugin-test-external-auth-three/package.json
new file mode 100644
index 000000000..f323d189d
--- /dev/null
+++ b/server/tests/fixtures/peertube-plugin-test-external-auth-three/package.json
@@ -0,0 +1,20 @@
1{
2 "name": "peertube-plugin-test-external-auth-three",
3 "version": "0.0.1",
4 "description": "External auth three",
5 "engine": {
6 "peertube": ">=1.3.0"
7 },
8 "keywords": [
9 "peertube",
10 "plugin"
11 ],
12 "homepage": "https://github.com/Chocobozzz/PeerTube",
13 "author": "Chocobozzz",
14 "bugs": "https://github.com/Chocobozzz/PeerTube/issues",
15 "library": "./main.js",
16 "staticDirs": {},
17 "css": [],
18 "clientScripts": [],
19 "translations": {}
20}
diff --git a/server/tests/plugins/external-auth.ts b/server/tests/plugins/external-auth.ts
index 57361be05..6d907cc51 100644
--- a/server/tests/plugins/external-auth.ts
+++ b/server/tests/plugins/external-auth.ts
@@ -73,7 +73,7 @@ describe('Test external auth plugins', function () {
73 server = await flushAndRunServer(1) 73 server = await flushAndRunServer(1)
74 await setAccessTokensToServers([ server ]) 74 await setAccessTokensToServers([ server ])
75 75
76 for (const suffix of [ 'one', 'two' ]) { 76 for (const suffix of [ 'one', 'two', 'three' ]) {
77 await installPlugin({ 77 await installPlugin({
78 url: server.url, 78 url: server.url,
79 accessToken: server.accessToken, 79 accessToken: server.accessToken,
@@ -88,7 +88,7 @@ describe('Test external auth plugins', function () {
88 const config: ServerConfig = res.body 88 const config: ServerConfig = res.body
89 89
90 const auths = config.plugin.registeredExternalAuths 90 const auths = config.plugin.registeredExternalAuths
91 expect(auths).to.have.lengthOf(6) 91 expect(auths).to.have.lengthOf(8)
92 92
93 const auth2 = auths.find((a) => a.authName === 'external-auth-2') 93 const auth2 = auths.find((a) => a.authName === 'external-auth-2')
94 expect(auth2).to.exist 94 expect(auth2).to.exist
@@ -301,7 +301,7 @@ describe('Test external auth plugins', function () {
301 const config: ServerConfig = res.body 301 const config: ServerConfig = res.body
302 302
303 const auths = config.plugin.registeredExternalAuths 303 const auths = config.plugin.registeredExternalAuths
304 expect(auths).to.have.lengthOf(5) 304 expect(auths).to.have.lengthOf(7)
305 305
306 const auth1 = auths.find(a => a.authName === 'external-auth-2') 306 const auth1 = auths.find(a => a.authName === 'external-auth-2')
307 expect(auth1).to.not.exist 307 expect(auth1).to.not.exist
@@ -371,7 +371,7 @@ describe('Test external auth plugins', function () {
371 const config: ServerConfig = res.body 371 const config: ServerConfig = res.body
372 372
373 const auths = config.plugin.registeredExternalAuths 373 const auths = config.plugin.registeredExternalAuths
374 expect(auths).to.have.lengthOf(4) 374 expect(auths).to.have.lengthOf(6)
375 375
376 const auth2 = auths.find((a) => a.authName === 'external-auth-2') 376 const auth2 = auths.find((a) => a.authName === 'external-auth-2')
377 expect(auth2).to.not.exist 377 expect(auth2).to.not.exist
@@ -380,4 +380,30 @@ describe('Test external auth plugins', function () {
380 after(async function () { 380 after(async function () {
381 await cleanupTests([ server ]) 381 await cleanupTests([ server ])
382 }) 382 })
383
384 it('Should forward the redirectUrl if the plugin returns one', async function () {
385 const resLogin = await loginExternal({
386 server,
387 npmName: 'test-external-auth-three',
388 authName: 'external-auth-7',
389 username: 'cid'
390 })
391
392 const resLogout = await logout(server.url, resLogin.access_token)
393
394 expect(resLogout.body.redirectUrl).to.equal('https://example.com/redirectUrl')
395 })
396
397 it('Should call the plugin\'s onLogout method with the request', async function () {
398 const resLogin = await loginExternal({
399 server,
400 npmName: 'test-external-auth-three',
401 authName: 'external-auth-8',
402 username: 'cid'
403 })
404
405 const resLogout = await logout(server.url, resLogin.access_token)
406
407 expect(resLogout.body.redirectUrl).to.equal('https://example.com/redirectUrl?access_token=' + resLogin.access_token)
408 })
383}) 409})