1 | var hmacsign = require('oauth-sign').hmacsign |
---|
2 | , assert = require('assert') |
---|
3 | , qs = require('querystring') |
---|
4 | , request = require('../index') |
---|
5 | ; |
---|
6 | |
---|
7 | function getsignature (r) { |
---|
8 | var sign |
---|
9 | r.headers.Authorization.slice('OAuth '.length).replace(/,\ /g, ',').split(',').forEach(function (v) { |
---|
10 | if (v.slice(0, 'oauth_signature="'.length) === 'oauth_signature="') sign = v.slice('oauth_signature="'.length, -1) |
---|
11 | }) |
---|
12 | return decodeURIComponent(sign) |
---|
13 | } |
---|
14 | |
---|
15 | // Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth |
---|
16 | |
---|
17 | var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', |
---|
18 | { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' |
---|
19 | , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' |
---|
20 | , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' |
---|
21 | , oauth_signature_method: 'HMAC-SHA1' |
---|
22 | , oauth_timestamp: '1272323042' |
---|
23 | , oauth_version: '1.0' |
---|
24 | }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") |
---|
25 | |
---|
26 | console.log(reqsign) |
---|
27 | console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') |
---|
28 | assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') |
---|
29 | |
---|
30 | var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', |
---|
31 | { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' |
---|
32 | , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' |
---|
33 | , oauth_signature_method: 'HMAC-SHA1' |
---|
34 | , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' |
---|
35 | , oauth_timestamp: '1272323047' |
---|
36 | , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' |
---|
37 | , oauth_version: '1.0' |
---|
38 | }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") |
---|
39 | |
---|
40 | console.log(accsign) |
---|
41 | console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') |
---|
42 | assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') |
---|
43 | |
---|
44 | var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', |
---|
45 | { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" |
---|
46 | , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" |
---|
47 | , oauth_signature_method: "HMAC-SHA1" |
---|
48 | , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" |
---|
49 | , oauth_timestamp: "1272325550" |
---|
50 | , oauth_version: "1.0" |
---|
51 | , status: 'setting up my twitter ç§ã®ãããããèšå®ãã' |
---|
52 | }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") |
---|
53 | |
---|
54 | console.log(upsign) |
---|
55 | console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') |
---|
56 | assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') |
---|
57 | |
---|
58 | |
---|
59 | var rsign = request.post( |
---|
60 | { url: 'https://api.twitter.com/oauth/request_token' |
---|
61 | , oauth: |
---|
62 | { callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' |
---|
63 | , consumer_key: 'GDdmIQH6jhtmLUypg82g' |
---|
64 | , nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' |
---|
65 | , timestamp: '1272323042' |
---|
66 | , version: '1.0' |
---|
67 | , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" |
---|
68 | } |
---|
69 | }) |
---|
70 | |
---|
71 | setTimeout(function () { |
---|
72 | console.log(getsignature(rsign)) |
---|
73 | assert.equal(reqsign, getsignature(rsign)) |
---|
74 | }) |
---|
75 | |
---|
76 | var raccsign = request.post( |
---|
77 | { url: 'https://api.twitter.com/oauth/access_token' |
---|
78 | , oauth: |
---|
79 | { consumer_key: 'GDdmIQH6jhtmLUypg82g' |
---|
80 | , nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' |
---|
81 | , signature_method: 'HMAC-SHA1' |
---|
82 | , token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' |
---|
83 | , timestamp: '1272323047' |
---|
84 | , verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' |
---|
85 | , version: '1.0' |
---|
86 | , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" |
---|
87 | , token_secret: "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA" |
---|
88 | } |
---|
89 | }) |
---|
90 | |
---|
91 | setTimeout(function () { |
---|
92 | console.log(getsignature(raccsign)) |
---|
93 | assert.equal(accsign, getsignature(raccsign)) |
---|
94 | }, 1) |
---|
95 | |
---|
96 | var rupsign = request.post( |
---|
97 | { url: 'http://api.twitter.com/1/statuses/update.json' |
---|
98 | , oauth: |
---|
99 | { consumer_key: "GDdmIQH6jhtmLUypg82g" |
---|
100 | , nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" |
---|
101 | , signature_method: "HMAC-SHA1" |
---|
102 | , token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" |
---|
103 | , timestamp: "1272325550" |
---|
104 | , version: "1.0" |
---|
105 | , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" |
---|
106 | , token_secret: "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA" |
---|
107 | } |
---|
108 | , form: {status: 'setting up my twitter ç§ã®ãããããèšå®ãã'} |
---|
109 | }) |
---|
110 | setTimeout(function () { |
---|
111 | console.log(getsignature(rupsign)) |
---|
112 | assert.equal(upsign, getsignature(rupsign)) |
---|
113 | }, 1) |
---|
114 | |
---|
115 | |
---|
116 | |
---|
117 | |
---|