test.js 3.5 KB

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