PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/test/oauth/v1_test.clj

http://github.com/r0man/oauth-clj
Clojure | 119 lines | 107 code | 12 blank | 0 comment | 27 complexity | f0a7b78739e5c0c3f8ff2deab2aedddb MD5 | raw file
  1. (ns oauth.v1-test
  2. (:require [clj-http.client :as http]
  3. [clojure.java.browse :refer [browse-url]]
  4. [clojure.test :refer :all]
  5. [oauth.twitter-test :refer :all]
  6. [oauth.v1 :refer :all]))
  7. (deftest test-oauth-authorization-header
  8. (is (= (str "OAuth "
  9. "oauth_consumer_key=\"xvz1evFS4wEEPTGEFPHBog\", "
  10. "oauth_nonce=\"kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg\", "
  11. "oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1318622958\", "
  12. "oauth_token=\"370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb\", "
  13. "oauth_version=\"1.0\"")
  14. (oauth-authorization-header twitter-update-status)))
  15. (is (= (str "OAuth "
  16. "oauth_callback=\"http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11\", "
  17. "oauth_consumer_key=\"GDdmIQH6jhtmLUypg82g\", "
  18. "oauth_nonce=\"QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk\", "
  19. "oauth_signature=\"8wUi7m5HFQy76nowoCThusfgB%2BQ%3D\", "
  20. "oauth_signature_method=\"HMAC-SHA1\", "
  21. "oauth_timestamp=\"1272323042\", "
  22. "oauth_version=\"1.0\"")
  23. (oauth-authorization-header
  24. (oauth-sign-request twitter-request-token "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" nil)))))
  25. (deftest test-oauth-authorize
  26. (let [expected "https://api.twitter.com/oauth/authorize?oauth_token=9BVHFCl8PCvGekptmdtL1169QkppJG6PgpUDQDWow"]
  27. (with-redefs [browse-url (fn [url] (is (= expected url)))]
  28. (oauth-authorize "https://api.twitter.com/oauth/authorize" "9BVHFCl8PCvGekptmdtL1169QkppJG6PgpUDQDWow"))))
  29. (deftest test-oauth-callback-confirmed?
  30. (is (not (oauth-callback-confirmed? {})))
  31. (is (not (oauth-callback-confirmed? {:oauth-callback-confirmed false})))
  32. (is (not (oauth-callback-confirmed? {:oauth-callback-confirmed "false"})))
  33. (is (not (oauth-callback-confirmed? {:oauth-callback-confirmed "x"})))
  34. (is (oauth-callback-confirmed? {:oauth-callback-confirmed true}))
  35. (is (oauth-callback-confirmed? {:oauth-callback-confirmed "true"})))
  36. (deftest test-oauth-nonce
  37. (is (string? (oauth-nonce)))
  38. (is (not (= (oauth-nonce) (oauth-nonce)))))
  39. (deftest test-oauth-parameter-string
  40. (is (= (str "include_entities=true&"
  41. "oauth_consumer_key=xvz1evFS4wEEPTGEFPHBog&"
  42. "oauth_nonce=kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg&"
  43. "oauth_signature_method=HMAC-SHA1&"
  44. "oauth_timestamp=1318622958&"
  45. "oauth_token=370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb&"
  46. "oauth_version=1.0&"
  47. "status=Hello%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request%21")
  48. (oauth-parameter-string twitter-update-status))))
  49. (deftest test-oauth-signature-parameters
  50. (is (= {} (oauth-signature-parameters nil)))
  51. (is (= {} (oauth-signature-parameters {})))
  52. (let [params (oauth-signature-parameters twitter-update-status)]
  53. (is (= 8 (count params)))
  54. (is (= true (get params "include_entities")))
  55. (is (= "xvz1evFS4wEEPTGEFPHBog" (get params "oauth_consumer_key")))
  56. (is (= "kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg" (get params "oauth_nonce")))
  57. (is (= "HMAC-SHA1" (get params "oauth_signature_method")))
  58. (is (= "1318622958" (get params "oauth_timestamp")))
  59. (is (= "370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb" (get params "oauth_token")))
  60. (is (= "1.0" (get params "oauth_version")))
  61. (is (= "Hello Ladies + Gentlemen, a signed OAuth request!" (get params "status")))))
  62. (deftest test-oauth-request-signature
  63. (is (= "hCtSmYh+iHYCEqBWrE7C7hYmtUk="
  64. (oauth-request-signature twitter-update-status "kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw" "LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE")))
  65. (is (= "8wUi7m5HFQy76nowoCThusfgB+Q="
  66. (oauth-request-signature twitter-request-token "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" nil))))
  67. (deftest test-oauth-signature-base
  68. (is (= (str "POST&"
  69. "https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fupdate.json&"
  70. "include_entities%3Dtrue%26"
  71. "oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26"
  72. "oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26"
  73. "oauth_signature_method%3DHMAC-SHA1%26"
  74. "oauth_timestamp%3D1318622958%26"
  75. "oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26"
  76. "oauth_version%3D1.0%26"
  77. "status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521")
  78. (oauth-signature-base twitter-update-status)))
  79. (is (= (str "POST&"
  80. "https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&"
  81. "oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26"
  82. "oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g%26"
  83. "oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26"
  84. "oauth_signature_method%3DHMAC-SHA1%26"
  85. "oauth_timestamp%3D1272323042%26"
  86. "oauth_version%3D1.0")
  87. (oauth-signature-base twitter-request-token))))
  88. (deftest test-oauth-signing-key
  89. (are [consumer-secret token-secret expected]
  90. (is (= expected (oauth-signing-key consumer-secret token-secret)))
  91. "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" nil
  92. "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98&"
  93. "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" ""
  94. "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98&"
  95. "kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw" "LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE"
  96. "kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE"))
  97. (deftest test-oauth-timestamp
  98. (is (number? (oauth-timestamp))))
  99. (deftest test-wrap-oauth-signature
  100. ((wrap-oauth-signature
  101. #(is (= "hCtSmYh+iHYCEqBWrE7C7hYmtUk=" (:oauth-signature %1))))
  102. (assoc twitter-update-status
  103. :oauth-consumer-secret "kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw"
  104. :oauth-token-secret "LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE")))
  105. (deftest test-make-consumer
  106. (let [consumer (make-consumer)]
  107. (is (fn? consumer))))