|
|
|
|
@@ -1454,7 +1454,6 @@ describe('oauth2 auth adapter', () => {
|
|
|
|
|
describe('apple signin auth adapter', () => {
|
|
|
|
|
const apple = require('../lib/Adapters/Auth/apple');
|
|
|
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
|
const util = require('util');
|
|
|
|
|
const authUtils = require('../lib/Adapters/Auth/utils');
|
|
|
|
|
|
|
|
|
|
it('(using client id as string) should throw error with missing id_token', async () => {
|
|
|
|
|
@@ -1512,12 +1511,10 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken.header);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
|
|
|
|
|
const result = await apple.validateAuthData(
|
|
|
|
|
{ id: 'the_user_id', token: 'the_token' },
|
|
|
|
|
@@ -1529,11 +1526,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
|
|
|
|
|
it('should not verify invalid id_token', async () => {
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
await apple.validateAuthData(
|
|
|
|
|
@@ -1566,11 +1561,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await apple.validateAuthData(
|
|
|
|
|
@@ -1588,11 +1581,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await apple.validateAuthData(
|
|
|
|
|
@@ -1610,11 +1601,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await apple.validateAuthData(
|
|
|
|
|
@@ -1630,11 +1619,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -1658,11 +1645,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -1687,11 +1672,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -1759,11 +1742,9 @@ describe('apple signin auth adapter', () => {
|
|
|
|
|
sub: 'a_different_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -2025,7 +2006,6 @@ describe('microsoft graph auth adapter', () => {
|
|
|
|
|
describe('facebook limited auth adapter', () => {
|
|
|
|
|
const facebook = require('../lib/Adapters/Auth/facebook');
|
|
|
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
|
const util = require('util');
|
|
|
|
|
const authUtils = require('../lib/Adapters/Auth/utils');
|
|
|
|
|
|
|
|
|
|
// TODO: figure out a way to run this test alongside facebook classic tests
|
|
|
|
|
@@ -2086,18 +2066,11 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
exp: Date.now(),
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken.header);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
|
|
|
|
|
const result = await facebook.validateAuthData(
|
|
|
|
|
{ id: 'the_user_id', token: 'the_token' },
|
|
|
|
|
@@ -2108,17 +2081,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should not verify invalid id_token', async () => {
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
await facebook.validateAuthData(
|
|
|
|
|
@@ -2150,17 +2116,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
exp: Date.now(),
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await facebook.validateAuthData(
|
|
|
|
|
@@ -2177,17 +2136,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
exp: Date.now(),
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await facebook.validateAuthData(
|
|
|
|
|
@@ -2204,17 +2156,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
exp: Date.now(),
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
const result = await facebook.validateAuthData(
|
|
|
|
|
@@ -2229,17 +2174,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
iss: 'https://not.facebook.com',
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -2262,17 +2200,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
iss: 'https://not.facebook.com',
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -2296,17 +2227,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
iss: 'https://not.facebook.com',
|
|
|
|
|
sub: 'the_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -2382,17 +2306,10 @@ describe('facebook limited auth adapter', () => {
|
|
|
|
|
aud: 'invalid_client_id',
|
|
|
|
|
sub: 'a_different_user_id',
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = {
|
|
|
|
|
header: { kid: '123', alg: 'RS256' },
|
|
|
|
|
};
|
|
|
|
|
const fakeDecodedToken = { header: { kid: '123', alg: 'RS256' } };
|
|
|
|
|
const fakeSigningKey = { kid: '123', rsaPublicKey: 'the_rsa_public_key' };
|
|
|
|
|
spyOn(authUtils, 'getHeaderFromToken').and.callFake(() => fakeDecodedToken);
|
|
|
|
|
const fakeGetSigningKeyAsyncFunction = () => {
|
|
|
|
|
return {
|
|
|
|
|
kid: '123',
|
|
|
|
|
rsaPublicKey: 'the_rsa_public_key',
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
spyOn(util, 'promisify').and.callFake(() => fakeGetSigningKeyAsyncFunction);
|
|
|
|
|
spyOn(authUtils, 'getSigningKey').and.resolveTo(fakeSigningKey);
|
|
|
|
|
spyOn(jwt, 'verify').and.callFake(() => fakeClaim);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|