preauth.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* global jest:false, test:false, expect:false, describe:false */
  2. jest.mock('../../src/server/helpers/jwt', () => {
  3. return {
  4. generateToken: (payload, secret) => {},
  5. verifyToken: (token, secret) => {},
  6. generateEncryptedToken: (payload, secret) => {
  7. return 'dummy token'
  8. },
  9. verifyEncryptedToken: (token, secret) => {
  10. return { payload: '' }
  11. },
  12. addToCookies: (res, token, companionOptions, authProvider) => {},
  13. removeFromCookies: (res, companionOptions, authProvider) => {}
  14. }
  15. })
  16. const request = require('supertest')
  17. const { getServer } = require('../mockserver')
  18. // the order in which getServer is called matters because, once an env is passed,
  19. // it won't be overridden when you call getServer without an argument
  20. const serverWithFixedOauth = getServer()
  21. const serverWithDynamicOauth = getServer({ COMPANION_DROPBOX_KEYS_ENDPOINT: 'http://localhost:1000/endpoint' })
  22. describe('handle preauth endpoint', () => {
  23. test('happy path', () => {
  24. return request(serverWithDynamicOauth)
  25. .post('/dropbox/preauth')
  26. .set('Content-Type', 'application/json')
  27. .send({
  28. params: 'param value'
  29. })
  30. .expect(200)
  31. // see jwt.generateEncryptedToken mock above
  32. .then((res) => expect(res.body.token).toBe('dummy token'))
  33. })
  34. test('preauth request without params in body', () => {
  35. return request(serverWithDynamicOauth)
  36. .post('/dropbox/preauth')
  37. .set('Content-Type', 'application/json')
  38. .send({
  39. notParams: 'value'
  40. })
  41. .expect(400)
  42. })
  43. test('providers with dynamic credentials disabled', () => {
  44. return request(serverWithDynamicOauth)
  45. .post('/drive/preauth')
  46. .set('Content-Type', 'application/json')
  47. .send({
  48. params: 'param value'
  49. })
  50. .expect(501)
  51. })
  52. test('server with dynamic credentials disabled', () => {
  53. return request(serverWithFixedOauth)
  54. .post('/dropbox/preauth')
  55. .set('Content-Type', 'application/json')
  56. .send({
  57. params: 'param value'
  58. })
  59. .expect(501)
  60. })
  61. })