1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /* global jest:false, test:false, expect:false, describe:false */
- jest.mock('../../src/server/helpers/oauth-state', () => require('../mockoauthstate')())
- const request = require('supertest')
- const tokenService = require('../../src/server/helpers/jwt')
- const { getServer } = require('../mockserver')
- const authServer = getServer()
- const authData = {
- dropbox: 'token value',
- drive: 'token value'
- }
- const token = tokenService.generateEncryptedToken(authData, process.env.COMPANION_SECRET)
- describe('test authentication callback', () => {
- test('authentication callback redirects to send-token url', () => {
- return request(authServer)
- .get('/drive/callback')
- .expect(302)
- .expect((res) => {
- expect(res.header.location).toContain('http://localhost:3020/drive/send-token?uppyAuthToken=')
- })
- })
- test('the token gets sent via cookie and html', () => {
- // see mock ../../src/server/helpers/oauth-state above for state values
- return request(authServer)
- .get(`/dropbox/send-token?uppyAuthToken=${token}&state=state-with-newer-version`)
- .expect(200)
- .expect((res) => {
- const authToken = res.header['set-cookie'][0].split(';')[0].split('uppyAuthToken--dropbox=')[1]
- expect(authToken).toEqual(token)
- const body = `
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <script>
- window.opener.postMessage(JSON.stringify({token: "${token}"}), "http://localhost:3020")
- window.close()
- </script>
- </head>
- <body></body>
- </html>`
- expect(res.text).toBe(body)
- })
- })
- test('the token gets to older clients without stringify', () => {
- // see mock ../../src/server/helpers/oauth-state above for state values
- return request(authServer)
- .get(`/drive/send-token?uppyAuthToken=${token}&state=state-with-older-version`)
- .expect(200)
- .expect((res) => {
- const body = `
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <script>
- window.opener.postMessage({token: "${token}"}, "http://localhost:3020")
- window.close()
- </script>
- </head>
- <body></body>
- </html>`
- expect(res.text).toBe(body)
- })
- })
- test('the token gets sent to newer clients with old version style', () => {
- // see mock ../../src/server/helpers/oauth-state above for state values
- return request(authServer)
- .get(`/drive/send-token?uppyAuthToken=${token}&state=state-with-newer-version-old-style`)
- .expect(200)
- .expect((res) => {
- const body = `
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <script>
- window.opener.postMessage(JSON.stringify({token: "${token}"}), "http://localhost:3020")
- window.close()
- </script>
- </head>
- <body></body>
- </html>`
- expect(res.text).toBe(body)
- })
- })
- })
|