// TODO move to a test / lint suite? oauth3._lintPromise = function (PromiseA) { var promise; var x = 1; // tests that this promise has all of the necessary api promise = new PromiseA(function (resolve, reject) { //console.log('x [2]', x); if (x !== 1) { throw new Error("bad promise, create not Synchronous [0]"); } PromiseA.resolve().then(function () { var promise2; //console.log('x resolve', x); if (x !== 2) { throw new Error("bad promise, resolve not Asynchronous [1]"); } promise2 = PromiseA.reject().then(reject, function () { //console.log('x reject', x); if (x !== 4) { throw new Error("bad promise, reject not Asynchronous [2]"); } if ('undefined' === typeof angular) { throw new Error("[NOT AN ERROR] Dear angular users: ignore this error-handling test"); } else { return PromiseA.reject(new Error("[NOT AN ERROR] ignore this error-handling test")); } }); x = 4; return promise2; }).catch(function (e) { if (e.message.match('NOT AN ERROR')) { resolve({ success: true }); } else { reject(e); } }); x = 3; }); x = 2; return promise; }; oauth3._lintDirectives = function (providerUri, directives) { var params = { directives: directives }; console.log('DEBUG oauth3._discoverHelper', directives); var err; if (!params.directives) { err = new Error(params.error_description || "Unknown error when discoving provider '" + providerUri + "'"); err.code = params.error || "E_UNKNOWN_ERROR"; return OAUTH3.PromiseA.reject(err); } try { directives = JSON.parse(atob(params.directives)); console.log('DEBUG oauth3._discoverHelper directives', directives); } catch(e) { err = new Error(params.error_description || "could not parse directives for provider '" + providerUri + "'"); err.code = params.error || "E_PARSE_DIRECTIVE"; return OAUTH3.PromiseA.reject(err); } if ( (directives.authorization_dialog && directives.authorization_dialog.url) || (directives.access_token && directives.access_token.url) ) { // TODO lint directives // TODO self-reference in directive for providerUri? directives.provider_uri = providerUri; localStorage.setItem('oauth3.' + providerUri + '.directives', JSON.stringify(directives)); localStorage.setItem('oauth3.' + providerUri + '.directives.updated_at', new Date().toISOString()); return OAUTH3.PromiseA.resolve(directives); } else { // ignore console.error("the directives provided by '" + providerUri + "' were invalid."); params.error = params.error || "E_INVALID_DIRECTIVE"; params.error_description = params.error_description || "directives did not include authorization_dialog.url"; err = new Error(params.error_description || "Unknown error when discoving provider '" + providerUri + "'"); err.code = params.error; return OAUTH3.PromiseA.reject(err); } };