Skip to content

Commit 4bef2bb

Browse files
committed
Improve custom parameters tests and custom scope handling
1 parent 28e7a20 commit 4bef2bb

4 files changed

Lines changed: 60 additions & 52 deletions

File tree

‎lib/flow/oauth1.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ exports.authorize = (provider, req) => new Promise((resolve, reject) => {
5757
params[key] = provider.custom_params[key]
5858
}
5959
}
60-
if (provider.flickr) {
60+
if (provider.flickr && provider.scope) {
6161
params.perms = provider.scope
6262
}
6363
if (provider.getpocket) {

‎lib/flow/oauth2.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ exports.authorize = (provider) => new Promise((resolve) => {
2323
if (provider.basecamp) {
2424
params.type = 'web_server'
2525
}
26-
if (provider.optimizely) {
26+
if (provider.freelancer && params.scope) {
27+
params.advanced_scopes = params.scope
28+
delete params.scope
29+
}
30+
if (provider.optimizely && params.scope) {
2731
params.scopes = params.scope
2832
delete params.scope
2933
}

‎test/flow/oauth1.js‎

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ var express = require('express')
66
var bodyParser = require('body-parser')
77
var Grant = require('../../').express()
88
var oauth1 = require('../../lib/flow/oauth1')
9+
var oauth = require('../../config/oauth')
10+
var reserved = require('../../config/reserved')
911

1012

1113
describe('oauth1', () => {
@@ -266,75 +268,74 @@ describe('oauth1', () => {
266268
})
267269

268270
describe('authorize', () => {
269-
var grant
270-
271-
before(() => {
272-
var config = {
273-
flickr: {}, freshbooks: {}, getpocket: {}, ravelry: {}, trello: {},
274-
tripit: {}
275-
}
276-
grant = Grant(config)
277-
})
278-
279271
describe('custom_parameters', () => {
280-
it('trello', async () => {
281-
grant.config.trello.custom_params = {expiration: 'never', name: 'Grant'}
282-
var url = await oauth1.authorize(grant.config.trello, {oauth_token: 'token'})
283-
var query = qs.parse(url.split('?')[1])
284-
t.deepEqual(
285-
query,
286-
{oauth_token: 'token', expiration: 'never', name: 'Grant'}
287-
)
272+
var config = {}
273+
for (var key in oauth) {
274+
var provider = oauth[key]
275+
if (provider.oauth === 1 && provider.custom_parameters) {
276+
config[key] = {}
277+
provider.custom_parameters.forEach((param, index) => {
278+
if (reserved.includes(param)) {
279+
config[key].custom_params = config[key].custom_params || {}
280+
config[key].custom_params[param] = index.toString()
281+
}
282+
else {
283+
config[key][param] = index.toString()
284+
}
285+
})
286+
}
287+
}
288+
var grant = Grant(config)
289+
290+
Object.keys(config).forEach((key) => {
291+
it(key, async () => {
292+
var url = await oauth1.authorize(grant.config[key], {oauth_token: 'token'})
293+
var query = qs.parse(url.split('?')[1])
294+
delete query.oauth_token
295+
if (config[key].custom_params) {
296+
Object.assign(config[key], config[key].custom_params)
297+
delete config[key].custom_params
298+
}
299+
t.deepEqual(query, config[key])
300+
})
288301
})
289302
})
290303

291304
describe('scope', () => {
305+
var grant = Grant({
306+
flickr: {scope: ['1', '2']},
307+
ravelry: {scope: ['1', '2']},
308+
trello: {scope: ['1', '2']},
309+
})
292310
it('flickr', async () => {
293-
grant.config.flickr.scope = ['read', 'write']
294311
var url = await oauth1.authorize(grant.config.flickr, {oauth_token: 'token'})
295312
var query = qs.parse(url.split('?')[1])
296-
t.deepEqual(
297-
query,
298-
{oauth_token: 'token', perms: ['read', 'write']}
299-
)
313+
t.equal(query.perms, '1,2')
300314
})
301-
302315
it('ravelry', async () => {
303-
grant.config.ravelry.scope = ['read', 'write']
304316
var url = await oauth1.authorize(grant.config.ravelry, {oauth_token: 'token'})
305317
var query = qs.parse(url.split('?')[1])
306-
t.deepEqual(
307-
query,
308-
{oauth_token: 'token', scope: ['read', 'write']}
309-
)
318+
t.equal(query.scope, '1 2')
310319
})
311-
312320
it('trello', async () => {
313-
grant.config.trello.custom_params = {expiration: 'never', name: 'Grant'}
314-
grant.config.trello.scope = ['read', 'write']
315321
var url = await oauth1.authorize(grant.config.trello, {oauth_token: 'token'})
316322
var query = qs.parse(url.split('?')[1])
317-
t.deepEqual(
318-
query,
319-
{oauth_token: 'token', scope: ['read', 'write'], expiration: 'never', name: 'Grant'}
320-
)
323+
t.equal(query.scope, '1,2')
321324
})
322325
})
323326

324327
describe('oauth_callback', () => {
325328
it('tripit', async () => {
326-
grant.config.tripit.redirect_uri = url('/connect/tripit/callback')
329+
var grant = Grant({tripit: {redirect_uri: url('/connect/tripit/callback')}})
327330
var uri = await oauth1.authorize(grant.config.tripit, {oauth_token: 'token'})
328331
var query = qs.parse(uri.split('?')[1])
329-
t.deepEqual(
330-
query,
331-
{oauth_token: 'token', oauth_callback: url('/connect/tripit/callback')}
332-
)
332+
t.equal(query.oauth_callback, url('/connect/tripit/callback'))
333333
})
334334
})
335335

336336
describe('getpocket', () => {
337337
it('authorize', async () => {
338+
var grant = Grant({getpocket: {}})
338339
var url = await oauth1.authorize(grant.config.getpocket, {code: 'code'})
339340
var query = qs.parse(url.split('?')[1])
340341
t.deepEqual(query, {request_token: 'code'})
@@ -343,7 +344,7 @@ describe('oauth1', () => {
343344

344345
describe('subdomain', () => {
345346
it('freshbooks', async () => {
346-
grant.config.freshbooks.subdomain = 'grant'
347+
var grant = Grant({freshbooks: {subdomain: 'grant'}})
347348
var url = await oauth1.authorize(grant.config.freshbooks, {oauth_token: 'token'})
348349
t.equal(url.indexOf('https://grant.freshbooks.com'), 0)
349350
})

‎test/flow/oauth2.js‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,14 @@ describe('oauth2', () => {
177177
}
178178
}
179179
var grant = Grant(config)
180-
delete config.server
181180

182181
Object.keys(config).forEach((key) => {
183182
it(key, async () => {
184183
var url = await oauth2.authorize(grant.config[key])
185184
var query = qs.parse(url.split('?')[1])
186185
delete query.response_type
187186
delete query.redirect_uri
188-
;(key === 'optimizely')
189-
? t.deepEqual(query, {})
190-
: t.deepEqual(query, config[key])
187+
t.deepEqual(query, config[key])
191188
})
192189
})
193190
})
@@ -201,7 +198,6 @@ describe('oauth2', () => {
201198
}
202199
}
203200
var grant = Grant(config)
204-
delete config.server
205201

206202
Object.keys(config).forEach((key) => {
207203
it(key, async () => {
@@ -224,12 +220,19 @@ describe('oauth2', () => {
224220
})
225221

226222
describe('scopes', () => {
227-
var config = {optimizely: {scope: ['all']}}
228-
var grant = Grant(config)
223+
var grant = Grant({
224+
freelancer: {scope: ['1', '2']},
225+
optimizely: {scope: ['1', '2']}
226+
})
227+
it('freelancer', async () => {
228+
var url = await oauth2.authorize(grant.config.freelancer)
229+
var query = qs.parse(url.split('?')[1])
230+
t.equal(query.advanced_scopes, '1 2')
231+
})
229232
it('optimizely', async () => {
230233
var url = await oauth2.authorize(grant.config.optimizely)
231234
var query = qs.parse(url.split('?')[1])
232-
t.equal(query.scopes, 'all')
235+
t.equal(query.scopes, '1,2')
233236
})
234237
})
235238

0 commit comments

Comments
 (0)