forked from simov/grant
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresponse.js
More file actions
87 lines (81 loc) · 2.4 KB
/
response.js
File metadata and controls
87 lines (81 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var t = require('assert')
var qs = require('qs')
var Grant = require('../').express()
var response = require('../lib/response')
var sign = (...args) => args.map((arg, index) => index < 2
? Buffer.from(JSON.stringify(arg)).toString('base64')
.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_')
: arg).join('.')
describe('response', () => {
var grant
before(() => {
grant = Grant({
defaults: {protocol: 'http', host: 'localhost:5000', callback: '/'},
concur: {}, facebook: {}, getpocket: {}, twitter: {}, yammer: {}
})
})
it('concur', () => {
var body =
'<Access_Token>\r\n' +
' <Instance_Url>https://www.concursolutions.com/</Instance_Url>\r\n' +
' <Token>q962LLopjMgTOeTn3fRN+5uABCg=</Token>\r\n' +
' <Expiration_date>9/25/2016 1:36:50 PM</Expiration_date>\r\n' +
' <Refresh_Token>AXvRqWeb77Lq9F2WK6TXLCSTuxpwZO6</Refresh_Token>\r\n' +
'</Access_Token>'
var str = response(grant.config.concur, body)
t.deepEqual(qs.parse(str), {
access_token: 'q962LLopjMgTOeTn3fRN+5uABCg=',
refresh_token: 'AXvRqWeb77Lq9F2WK6TXLCSTuxpwZO6',
raw: body
})
})
it('getpocket', () => {
t.deepEqual(
response(
grant.config.getpocket,
{access_token: 'token'}
),
{access_token: 'token', raw: {access_token: 'token'}}
)
})
it('yammer', () => {
t.deepEqual(
response(
grant.config.yammer,
{access_token: {token: 'token'}}
),
{access_token: 'token', raw: {access_token: {token: 'token'}}}
)
})
it('oauth1', () => {
t.deepEqual(
response(grant.config.twitter,
{oauth_token: 'token', oauth_token_secret: 'secret'}
),
{
access_token: 'token', access_secret: 'secret',
raw: {oauth_token: 'token', oauth_token_secret: 'secret'}
}
)
})
it('oauth2', () => {
t.deepEqual(
response(grant.config.facebook, {
id_token: sign({typ: 'JWT'}, {hey: 'hi'}, 'signature'),
access_token: 'token', refresh_token: 'refresh'
}),
{
id_token: {
header: {typ: 'JWT'}, payload: {hey: 'hi'}, signature: 'signature'
},
access_token: 'token',
refresh_token: 'refresh',
raw: {
id_token: 'eyJ0eXAiOiJKV1QifQ.eyJoZXkiOiJoaSJ9.signature',
access_token: 'token',
refresh_token: 'refresh'
}
}
)
})
})