You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

118 line
4.1 KiB

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