Нет описания

oauth1.spec.ts 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import OAuth1 from '../src/oauth1';
  2. import Config from '../src/config';
  3. import Shared from '../src/shared';
  4. import Storage from '../src/storage';
  5. import Popup from '../src/popup';
  6. let httpBackend;
  7. let config;
  8. let storage;
  9. let shared;
  10. let popup;
  11. let oauth1;
  12. describe('OAuth1', () => {
  13. beforeEach(angular.mock.inject(($q, $http, $window, $interval, $log, $httpBackend) => {
  14. httpBackend = $httpBackend;
  15. config = new Config();
  16. storage = new Storage($window, config);
  17. shared = new Shared($q, $window, $log, config, storage);
  18. popup = new Popup($interval, $window, $q);
  19. oauth1 = new OAuth1($http, $window, config, popup);
  20. }));
  21. afterEach(() => {
  22. httpBackend.verifyNoOutstandingExpectation();
  23. httpBackend.verifyNoOutstandingRequest();
  24. });
  25. describe('init()', () => {
  26. it('should be defined', () => {
  27. expect(oauth1.init).toBeDefined();
  28. });
  29. it('should work with a web browser', () => {
  30. let result = null;
  31. httpBackend.expectPOST('/auth/twitter').respond(200);
  32. oauth1.init(config.providers.twitter).then((response) => {
  33. result = response;
  34. });
  35. httpBackend.flush();
  36. });
  37. });
  38. describe('getRequestToken()', () => {
  39. it('should be defined', () => {
  40. expect(oauth1.getRequestToken).toBeDefined();
  41. });
  42. it('should get request token to initiate oauth 1.0 flow', () => {
  43. let result = null;
  44. Object.assign(oauth1.defaults, config.providers.twitter);
  45. httpBackend.expectPOST('/auth/twitter').respond(200, { request_token: 'qwerty' });
  46. oauth1.getRequestToken().then((response) => {
  47. result = response.data.request_token;
  48. });
  49. httpBackend.flush();
  50. expect(result).toBe('qwerty');
  51. });
  52. });
  53. describe('exchangeForToken()', () => {
  54. it('should be defined', () => {
  55. expect(oauth1.exchangeForToken).toBeDefined();
  56. });
  57. it('should exchange oauth_token and oauth_verifier for JWT token', () => {
  58. Object.assign(oauth1.defaults, config.providers.twitter);
  59. let result = null;
  60. const oauthData = {
  61. oauth_token: 'foo',
  62. oauth_verifier: 'bar'
  63. };
  64. httpBackend.expectPOST('/auth/twitter').respond(200, { token: 'jwt token' });
  65. oauth1.exchangeForToken(oauthData).then((response) => {
  66. result = response.data.token;
  67. });
  68. httpBackend.flush();
  69. expect(result).toBe('jwt token');
  70. });
  71. });
  72. describe('buildQueryString()', () => {
  73. it('should be defined', () => {
  74. expect(oauth1.buildQueryString).toBeDefined();
  75. });
  76. it('should build a query', () => {
  77. const querystring = oauth1.buildQueryString({ code: 'test1', client_id: 'test2', redirect_uri: 'test3' });
  78. expect(querystring).toBe('code=test1&client_id=test2&redirect_uri=test3');
  79. });
  80. });
  81. });