UNPKG

@ariyana/appauth

Version:

A general purpose OAuth client.

77 lines 13.7 kB
"use strict"; /* * Copyright 2017 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); var authorization_service_configuration_1 = require("./authorization_service_configuration"); var xhr_1 = require("./xhr"); describe('Authorization Service Configuration Tests', function () { var authorizationEndpoint = 'authorization://endpoint'; var tokenEndpoint = 'token://endpoint'; var revocationEndpoint = 'revocation://endpoint'; var userInfoEndpoint = 'userInfo://endpoint'; var endSessionEndpoint = 'endSession://endpoint'; var configuration = new authorization_service_configuration_1.AuthorizationServiceConfiguration({ authorization_endpoint: authorizationEndpoint, token_endpoint: tokenEndpoint, revocation_endpoint: revocationEndpoint, userinfo_endpoint: userInfoEndpoint, end_session_endpoint: endSessionEndpoint, }); it('Initialization should work', function () { expect(configuration).toBeTruthy(); expect(configuration.authorizationEndpoint).toBe(authorizationEndpoint); expect(configuration.tokenEndpoint).toBe(tokenEndpoint); expect(configuration.revocationEndpoint).toBe(revocationEndpoint); expect(configuration.endSessionEndpoint).toBe(endSessionEndpoint); expect(configuration.userInfoEndpoint).toBe(userInfoEndpoint); }); it('Conversion to Json and back should work', function () { var json = configuration.toJson(); var newConfiguration = new authorization_service_configuration_1.AuthorizationServiceConfiguration(json); expect(newConfiguration).toBeTruthy(); expect(newConfiguration.authorizationEndpoint).toBe(configuration.authorizationEndpoint); expect(newConfiguration.tokenEndpoint).toBe(configuration.tokenEndpoint); expect(newConfiguration.revocationEndpoint).toBe(configuration.revocationEndpoint); expect(configuration.endSessionEndpoint).toBe(endSessionEndpoint); expect(configuration.userInfoEndpoint).toBe(userInfoEndpoint); }); describe('Tests with dependencies', function () { it('Fetch from issuer tests should work', function (done) { var promise = Promise.resolve(configuration.toJson()); var requestor = new xhr_1.TestRequestor(promise); authorization_service_configuration_1.AuthorizationServiceConfiguration.fetchFromIssuer('some://endpoint', requestor) .then(function (result) { expect(result).toBeTruthy(); expect(result.authorizationEndpoint).toBe(configuration.authorizationEndpoint); expect(result.tokenEndpoint).toBe(configuration.tokenEndpoint); expect(result.revocationEndpoint).toBe(configuration.revocationEndpoint); expect(configuration.endSessionEndpoint).toBe(endSessionEndpoint); expect(configuration.userInfoEndpoint).toBe(userInfoEndpoint); done(); }); }); it('Fetch from issuer tests should work', function (done) { var promise = Promise.reject(new Error('Something bad happened.')); var requestor = new xhr_1.TestRequestor(promise); authorization_service_configuration_1.AuthorizationServiceConfiguration.fetchFromIssuer('some://endpoint', requestor) .catch(function (result) { expect(result).toBeTruthy(); var error = result; expect(error.message).toBe('Something bad happened.'); done(); }); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbl9zZXJ2aWNlX2NvbmZpZ3VyYXRpb25fdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hdXRob3JpemF0aW9uX3NlcnZpY2VfY29uZmlndXJhdGlvbl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7O0FBRUgsNkZBQStIO0FBRS9ILDZCQUFvQztBQUVwQyxRQUFRLENBQUMsMkNBQTJDLEVBQUU7SUFDcEQsSUFBTSxxQkFBcUIsR0FBRywwQkFBMEIsQ0FBQztJQUN6RCxJQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztJQUN6QyxJQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDO0lBQ25ELElBQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUM7SUFDL0MsSUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztJQUVuRCxJQUFJLGFBQWEsR0FBRyxJQUFJLHVFQUFpQyxDQUFDO1FBQ3hELHNCQUFzQixFQUFFLHFCQUFxQjtRQUM3QyxjQUFjLEVBQUUsYUFBYTtRQUM3QixtQkFBbUIsRUFBRSxrQkFBa0I7UUFDdkMsaUJBQWlCLEVBQUUsZ0JBQWdCO1FBQ25DLG9CQUFvQixFQUFFLGtCQUFrQjtLQUN6QyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUU7UUFDL0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxr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TSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0XHJcbiAqIGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZVxyXG4gKiBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlclxyXG4gKiBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24sIEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbkpzb259IGZyb20gJy4vYXV0aG9yaXphdGlvbl9zZXJ2aWNlX2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQge0FwcEF1dGhFcnJvcn0gZnJvbSAnLi9lcnJvcnMnO1xyXG5pbXBvcnQge1Rlc3RSZXF1ZXN0b3J9IGZyb20gJy4veGhyJztcclxuXHJcbmRlc2NyaWJlKCdBdXRob3JpemF0aW9uIFNlcnZpY2UgQ29uZmlndXJhdGlvbiBUZXN0cycsICgpID0+IHtcclxuICBjb25zdCBhdXRob3JpemF0aW9uRW5kcG9pbnQgPSAnYXV0aG9yaXphdGlvbjovL2VuZHBvaW50JztcclxuICBjb25zdCB0b2tlbkVuZHBvaW50ID0gJ3Rva2VuOi8vZW5kcG9pbnQnO1xyXG4gIGNvbnN0IHJldm9jYXRpb25FbmRwb2ludCA9ICdyZXZvY2F0aW9uOi8vZW5kcG9pbnQnO1xyXG4gIGNvbnN0IHVzZXJJbmZvRW5kcG9pbnQgPSAndXNlckluZm86Ly9lbmRwb2ludCc7XHJcbiAgY29uc3QgZW5kU2Vzc2lvbkVuZHBvaW50ID0gJ2VuZFNlc3Npb246Ly9lbmRwb2ludCc7XHJcblxyXG4gIGxldCBjb25maWd1cmF0aW9uID0gbmV3IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbih7XHJcbiAgICBhdXRob3JpemF0aW9uX2VuZHBvaW50OiBhdXRob3JpemF0aW9uRW5kcG9pbnQsXHJcbiAgICB0b2tlbl9lbmRwb2ludDogdG9rZW5FbmRwb2ludCxcclxuICAgIHJldm9jYXRpb25fZW5kcG9pbnQ6IHJldm9jYXRpb25FbmRwb2ludCxcclxuICAgIHVzZXJpbmZvX2VuZHBvaW50OiB1c2VySW5mb0VuZHBvaW50LFxyXG4gICAgZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IGVuZFNlc3Npb25FbmRwb2ludCxcclxuICB9KTtcclxuXHJcbiAgaXQoJ0luaXRpYWxpemF0aW9uIHNob3VsZCB3b3JrJywgKCkgPT4ge1xyXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24pLnRvQmVUcnV0aHkoKTtcclxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmF1dGhvcml6YXRpb25FbmRwb2ludCkudG9CZShhdXRob3JpemF0aW9uRW5kcG9pbnQpO1xyXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24udG9rZW5FbmRwb2ludCkudG9CZSh0b2tlbkVuZHBvaW50KTtcclxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLnJldm9jYXRpb25FbmRwb2ludCkudG9CZShyZXZvY2F0aW9uRW5kcG9pbnQpO1xyXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uZW5kU2Vzc2lvbkVuZHBvaW50KS50b0JlKGVuZFNlc3Npb25FbmRwb2ludCk7XHJcbiAgICBleHBlY3QoY29uZmlndXJhdGlvbi51c2VySW5mb0VuZHBvaW50KS50b0JlKHVzZXJJbmZvRW5kcG9pbnQpO1xyXG4gIH0pO1xyXG5cclxuICBpdCgnQ29udmVyc2lvbiB0byBKc29uIGFuZCBiYWNrIHNob3VsZCB3b3JrJywgKCkgPT4ge1xyXG4gICAgbGV0IGpzb24gPSBjb25maWd1cmF0aW9uLnRvSnNvbigpO1xyXG4gICAgbGV0IG5ld0NvbmZpZ3VyYXRpb24gPSBuZXcgQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uKGpzb24pO1xyXG4gICAgZXhwZWN0KG5ld0NvbmZpZ3VyYXRpb24pLnRvQmVUcnV0aHkoKTtcclxuICAgIGV4cGVjdChuZXdDb25maWd1cmF0aW9uLmF1dGhvcml6YXRpb25FbmRwb2ludCkudG9CZShjb25maWd1cmF0aW9uLmF1dGhvcml6YXRpb25FbmRwb2ludCk7XHJcbiAgICBleHBlY3QobmV3Q29uZmlndXJhdGlvbi50b2tlbkVuZHBvaW50KS50b0JlKGNvbmZpZ3VyYXRpb24udG9rZW5FbmRwb2ludCk7XHJcbiAgICBleHBlY3QobmV3Q29uZmlndXJhdGlvbi5yZXZvY2F0aW9uRW5kcG9pbnQpLnRvQmUoY29uZmlndXJhdGlvbi5yZXZvY2F0aW9uRW5kcG9pbnQpO1xyXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uZW5kU2Vzc2lvbkVuZHBvaW50KS50b0JlKGVuZFNlc3Npb25FbmRwb2ludCk7XHJcbiAgICBleHBlY3QoY29uZmlndXJhdGlvbi51c2VySW5mb0VuZHBvaW50KS50b0JlKHVzZXJJbmZvRW5kcG9pbnQpO1xyXG4gIH0pO1xyXG5cclxuICBkZXNjcmliZSgnVGVzdHMgd2l0aCBkZXBlbmRlbmNpZXMnLCAoKSA9PiB7XHJcbiAgICBpdCgnRmV0Y2ggZnJvbSBpc3N1ZXIgdGVzdHMgc2hvdWxkIHdvcmsnLCAoZG9uZTogRG9uZUZuKSA9PiB7XHJcbiAgICAgIGxldCBwcm9taXNlOiBQcm9taXNlPEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbkpzb24+ID1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShjb25maWd1cmF0aW9uLnRvSnNvbigpKTtcclxuICAgICAgbGV0IHJlcXVlc3RvciA9IG5ldyBUZXN0UmVxdWVzdG9yKHByb21pc2UpO1xyXG4gICAgICBBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24uZmV0Y2hGcm9tSXNzdWVyKCdzb21lOi8vZW5kcG9pbnQnLCByZXF1ZXN0b3IpXHJcbiAgICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlVHJ1dGh5KCk7XHJcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQuYXV0aG9yaXphdGlvbkVuZHBvaW50KS50b0JlKGNvbmZpZ3VyYXRpb24uYXV0aG9yaXphdGlvbkVuZHBvaW50KTtcclxuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC50b2tlbkVuZHBvaW50KS50b0JlKGNvbmZpZ3VyYXRpb24udG9rZW5FbmRwb2ludCk7XHJcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmV2b2NhdGlvbkVuZHBvaW50KS50b0JlKGNvbmZpZ3VyYXRpb24ucmV2b2NhdGlvbkVuZHBvaW50KTtcclxuICAgICAgICAgICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uZW5kU2Vzc2lvbkVuZHBvaW50KS50b0JlKGVuZFNlc3Npb25FbmRwb2ludCk7XHJcbiAgICAgICAgICAgIGV4cGVjdChjb25maWd1cmF0aW9uLnVzZXJJbmZvRW5kcG9pbnQpLnRvQmUodXNlckluZm9FbmRwb2ludCk7XHJcbiAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoJ0ZldGNoIGZyb20gaXNzdWVyIHRlc3RzIHNob3VsZCB3b3JrJywgKGRvbmU6IERvbmVGbikgPT4ge1xyXG4gICAgICBsZXQgcHJvbWlzZTogUHJvbWlzZTxBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb25Kc29uPiA9XHJcbiAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1NvbWV0aGluZyBiYWQgaGFwcGVuZWQuJykpO1xyXG4gICAgICBsZXQgcmVxdWVzdG9yID0gbmV3IFRlc3RSZXF1ZXN0b3IocHJvbWlzZSk7XHJcblxyXG4gICAgICBBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24uZmV0Y2hGcm9tSXNzdWVyKCdzb21lOi8vZW5kcG9pbnQnLCByZXF1ZXN0b3IpXHJcbiAgICAgICAgICAuY2F0Y2gocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZVRydXRoeSgpO1xyXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSByZXN1bHQgYXMgQXBwQXV0aEVycm9yO1xyXG4gICAgICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZSgnU29tZXRoaW5nIGJhZCBoYXBwZW5lZC4nKTtcclxuICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufSk7XHJcbiJdfQ==