From 4e873f1ad46e34978b535312550ff28e0c8938a7 Mon Sep 17 00:00:00 2001 From: simov Date: Tue, 8 Mar 2022 16:41:27 +0200 Subject: [PATCH] Add tests for tiktok --- test/flow/oauth2.js | 34 ++++++++++++++++++++++++++++++++++ test/handler/profile.js | 4 +++- test/util/provider.js | 16 +++++++++++++--- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/test/flow/oauth2.js b/test/flow/oauth2.js index 1970bde..1c54ab9 100644 --- a/test/flow/oauth2.js +++ b/test/flow/oauth2.js @@ -206,6 +206,23 @@ describe('oauth2', () => { }) }) + it('authorize - client_key/client_id - tiktok', async () => { + provider.on.authorize = ({query}) => { + t.equal(query.client_id, undefined) + t.equal(query.client_key, 'key') + } + var {body: {response}} = await request({ + url: client.url('/connect/tiktok'), + qs: {key: 'key'}, + cookie: {}, + }) + t.deepEqual(response, { + access_token: 'token', + refresh_token: 'refresh', + raw: {access_token: 'token', refresh_token: 'refresh', expires_in: '3600', open_id: 'id'} + }) + }) + it('authorize - response_type - visualstudio', async () => { provider.on.authorize = ({url, headers, query}) => { t.equal(query.response_type, 'Assertion') @@ -374,6 +391,23 @@ describe('oauth2', () => { }) }) + it('access - client_key/client_id - tiktok', async () => { + provider.on.access = ({form}) => { + t.equal(form.client_id, undefined) + t.equal(form.client_key, 'key') + } + var {body: {response}} = await request({ + url: client.url('/connect/tiktok'), + qs: {key: 'key'}, + cookie: {}, + }) + t.deepEqual(response, { + access_token: 'token', + refresh_token: 'refresh', + raw: {access_token: 'token', refresh_token: 'refresh', expires_in: '3600', open_id: 'id'} + }) + }) + it('access - basic auth', async () => { provider.on.access = ({provider, url, headers, query, form}) => { t.deepEqual( diff --git a/test/handler/profile.js b/test/handler/profile.js index 2bb23f6..adbf38d 100644 --- a/test/handler/profile.js +++ b/test/handler/profile.js @@ -138,6 +138,7 @@ describe('profile', () => { 'soundcloud', 'stackexchange', 'stocktwits', + 'tiktok', 'tumblr', 'vk', 'wechat', @@ -146,7 +147,7 @@ describe('profile', () => { ] for (var name of providers) { var version = oauth[name].oauth - provider[`oauth${version}`].on.profile = ({method, query, headers}) => { + provider[`oauth${version}`].on.profile = ({method, query, headers, form}) => { 'arcgis' === name ? t.equal(query.f, 'json') : 'constantcontact' === name ? t.equal(query.api_key, 'key') : 'baidu' === name ? t.equal(query.access_token, 'token') : @@ -166,6 +167,7 @@ describe('profile', () => { 'soundcloud' === name ? t.equal(query.oauth_token, 'token') : 'stackexchange' === name ? t.equal(query.key, 'token') : 'stocktwits' === name ? t.equal(query.access_token, 'token') : + 'tiktok' === name ? (t.equal(method, 'POST'), t.deepEqual(form, {access_token: 'token', open_id: 'id', fields: ['open_id', 'union_id', 'avatar_url', 'display_name']})) : 'tumblr' === name ? t.equal(query.api_key, 'token') : 'vk' === name ? t.deepEqual(query, {access_token: 'token', v: '5.103'}) : 'wechat' === name ? t.deepEqual(query, {access_token: 'token', openid: 'openid', lang: 'zh_CN'}) : diff --git a/test/util/provider.js b/test/util/provider.js index 276f226..3515f36 100644 --- a/test/util/provider.js +++ b/test/util/provider.js @@ -180,6 +180,7 @@ var oauth2 = (port) => new Promise((resolve) => { : res.end(JSON.stringify({ access_token: 'token', refresh_token: 'refresh', expires_in: 3600, id_token: openid ? sign({typ: 'JWT'}, {nonce: 'whatever'}, 'signature') : undefined, + open_id: provider === 'tiktok' ? 'id' : undefined, uid: provider === 'weibo' ? 'id' : undefined, openid: provider === 'wechat' ? 'openid' : undefined, })) @@ -242,9 +243,18 @@ var oauth2 = (port) => new Promise((resolve) => { }) } else if (/profile_url/.test(req.url)) { - on.profile({method, url, query, headers}) - res.writeHead(200, {'content-type': 'application/json'}) - res.end(JSON.stringify({user: 'simov'})) + if (method === 'POST') { + buffer(req, (form) => { + on.profile({method, url, query, headers, form}) + res.writeHead(200, {'content-type': 'application/json'}) + res.end(JSON.stringify({user: 'simov'})) + }) + } + else { + on.profile({method, url, query, headers}) + res.writeHead(200, {'content-type': 'application/json'}) + res.end(JSON.stringify({user: 'simov'})) + } } else if (/profile_error/.test(req.url)) { on.profile({method, url, query, headers})