provider-manager.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /* global jest:false, test:false, expect:false, describe:false, beforeEach:false */
  2. const providerManager = require('../../src/server/provider')
  3. let grantConfig
  4. let companionOptions
  5. describe('Test Provider options', () => {
  6. beforeEach(() => {
  7. grantConfig = require('../../src/config/grant')()
  8. companionOptions = require('../../src/standalone/helper').getCompanionOptions()
  9. })
  10. test('adds provider options', () => {
  11. providerManager.addProviderOptions(companionOptions, grantConfig)
  12. expect(grantConfig.dropbox.key).toBe('dropbox_key')
  13. expect(grantConfig.dropbox.secret).toBe('dropbox_secret')
  14. expect(grantConfig.google.key).toBe('google_key')
  15. expect(grantConfig.google.secret).toBe('google_secret')
  16. expect(grantConfig.instagram.key).toBe('instagram_key')
  17. expect(grantConfig.instagram.secret).toBe('instagram_secret')
  18. })
  19. test('adds provider options for secret files', () => {
  20. process.env.COMPANION_DROPBOX_SECRET_FILE = process.env.PWD + '/test/resources/dropbox_secret_file'
  21. process.env.COMPANION_GOOGLE_SECRET_FILE = process.env.PWD + '/test/resources/google_secret_file'
  22. process.env.COMPANION_INSTAGRAM_SECRET_FILE = process.env.PWD + '/test/resources/instagram_secret_file'
  23. companionOptions = require('../../src/standalone/helper').getCompanionOptions()
  24. providerManager.addProviderOptions(companionOptions, grantConfig)
  25. expect(grantConfig.dropbox.secret).toBe('xobpord')
  26. expect(grantConfig.google.secret).toBe('elgoog')
  27. expect(grantConfig.instagram.secret).toBe('margatsni')
  28. })
  29. test('does not add provider options if protocol and host are not set', () => {
  30. delete companionOptions.server.host
  31. delete companionOptions.server.protocol
  32. providerManager.addProviderOptions(companionOptions, grantConfig)
  33. expect(grantConfig.dropbox.key).toBeUndefined()
  34. expect(grantConfig.dropbox.secret).toBeUndefined()
  35. expect(grantConfig.google.key).toBeUndefined()
  36. expect(grantConfig.google.secret).toBeUndefined()
  37. expect(grantConfig.instagram.key).toBeUndefined()
  38. expect(grantConfig.instagram.secret).toBeUndefined()
  39. })
  40. test('sets a master redirect uri, if oauthDomain is set', () => {
  41. companionOptions.server.oauthDomain = 'domain.com'
  42. providerManager.addProviderOptions(companionOptions, grantConfig)
  43. expect(grantConfig.dropbox.redirect_uri).toBe('http://domain.com/dropbox/redirect')
  44. expect(grantConfig.google.redirect_uri).toBe('http://domain.com/drive/redirect')
  45. expect(grantConfig.instagram.redirect_uri).toBe('http://domain.com/instagram/redirect')
  46. })
  47. })
  48. describe('Test Custom Provider options', () => {
  49. test('adds custom provider options', () => {
  50. const providers = providerManager.getDefaultProviders()
  51. providerManager.addCustomProviders({
  52. foo: {
  53. config: {
  54. key: 'foo_key',
  55. secret: 'foo_secret'
  56. },
  57. module: jest.mock()
  58. }
  59. }, providers, grantConfig)
  60. expect(grantConfig.foo.key).toBe('foo_key')
  61. expect(grantConfig.foo.secret).toBe('foo_secret')
  62. expect(providers.foo).toBeTruthy()
  63. })
  64. })