Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81145 views
1
var oauth = require('./index')
2
, hmacsign = oauth.hmacsign
3
, assert = require('assert')
4
, qs = require('querystring')
5
;
6
7
// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth
8
9
var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token',
10
{ oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11'
11
, oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
12
, oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk'
13
, oauth_signature_method: 'HMAC-SHA1'
14
, oauth_timestamp: '1272323042'
15
, oauth_version: '1.0'
16
}, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98")
17
18
console.log(reqsign)
19
console.log('8wUi7m5HFQy76nowoCThusfgB+Q=')
20
assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=')
21
22
var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token',
23
{ oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
24
, oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8'
25
, oauth_signature_method: 'HMAC-SHA1'
26
, oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc'
27
, oauth_timestamp: '1272323047'
28
, oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY'
29
, oauth_version: '1.0'
30
}, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA")
31
32
console.log(accsign)
33
console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
34
assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
35
36
var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json',
37
{ oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
38
, oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
39
, oauth_signature_method: "HMAC-SHA1"
40
, oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
41
, oauth_timestamp: "1272325550"
42
, oauth_version: "1.0"
43
, status: 'setting up my twitter 私のさえずりを設定する'
44
}, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
45
46
console.log(upsign)
47
console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=')
48
assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=')
49
50
// handle objects in params (useful for Wordpress REST API)
51
var upsign = hmacsign('POST', 'http://wordpress.com/wp-json',
52
{ oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
53
, oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
54
, oauth_signature_method: "HMAC-SHA1"
55
, oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
56
, oauth_timestamp: "1272325550"
57
, oauth_version: "1.0"
58
, filter: { number: "-1" }
59
}, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
60
61
console.log(upsign)
62
console.log('YrJFBdwnjuIitGpKrxLUplcuuUQ=')
63
assert.equal(upsign, 'YrJFBdwnjuIitGpKrxLUplcuuUQ=')
64
65
// example in rfc5849
66
var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q')
67
params.oauth_consumer_key = '9djdj82h48djs9d2'
68
params.oauth_token = 'kkk9d7dh3k39sjv7'
69
params.oauth_nonce = '7d8f3e4a'
70
params.oauth_signature_method = 'HMAC-SHA1'
71
params.oauth_timestamp = '137131201'
72
73
var rfc5849sign = hmacsign('POST', 'http://example.com/request',
74
params, "j49sk3j29djd", "dh893hdasih9")
75
76
console.log(rfc5849sign)
77
console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=')
78
assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=')
79
80
81
// PLAINTEXT
82
83
var plainSign = oauth.sign('PLAINTEXT', 'GET', 'http://dummy.com', {}, 'consumer_secret', 'token_secret')
84
console.log(plainSign)
85
assert.equal(plainSign, 'consumer_secret&token_secret')
86
87
plainSign = oauth.plaintext('consumer_secret', 'token_secret')
88
console.log(plainSign)
89
assert.equal(plainSign, 'consumer_secret&token_secret')
90
91