oauth_unit.erl 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. -module(oauth_unit).
  2. -include_lib("eunit/include/eunit.hrl").
  3. -include("oauth_test_macros.hrl").
  4. params_from_string_test_() ->
  5. % cf. http://oauth.net/core/1.0/#response_parameters (5.3)
  6. Params = oauth_params:from_string("oauth_token=ab3cd9j4ks73hf7g&oauth_token_secret=xyz4992k83j47x0b"), [
  7. ?_assertEqual("ab3cd9j4ks73hf7g", proplists:get_value("oauth_token", Params)),
  8. ?_assertEqual("xyz4992k83j47x0b", proplists:get_value("oauth_token_secret", Params))
  9. ].
  10. params_to_header_string_test_() ->
  11. % cf. http://oauth.net/core/1.0/#auth_header_authorization (5.4.1)
  12. Params = [{oauth_consumer_key, "0685bd9184jfhq22"}, {oauth_token, "ad180jjd733klru7"}],
  13. String = "oauth_consumer_key=\"0685bd9184jfhq22\",oauth_token=\"ad180jjd733klru7\"", [
  14. ?_assertEqual(String, oauth_params:to_header_string(Params))
  15. ].
  16. plaintext_signature_test_() -> [
  17. % cf. http://oauth.net/core/1.0/#rfc.section.9.4.1
  18. ?plaintext_signature_test("djr9rjt0jd78jf88", "jjd999tj88uiths3", "djr9rjt0jd78jf88%26jjd999tj88uiths3"),
  19. ?plaintext_signature_test("djr9rjt0jd78jf88", "jjd99$tj88uiths3", "djr9rjt0jd78jf88%26jjd99%2524tj88uiths3"),
  20. ?plaintext_signature_test("djr9rjt0jd78jf88", "", "djr9rjt0jd78jf88%26")
  21. ].
  22. hmac_normalize_test_() -> [
  23. % cf. http://wiki.oauth.net/TestCases
  24. ?hmac_normalize_test("name=", [{name,undefined}]),
  25. ?hmac_normalize_test("a=b", [{a,b}]),
  26. ?hmac_normalize_test("a=b&c=d", [{a,b},{c,d}]),
  27. ?hmac_normalize_test("a=x%20y&a=x%21y", [{a,"x!y"},{a,"x y"}]),
  28. ?hmac_normalize_test("x=a&x%21y=a", [{"x!y",a},{x,a}])
  29. ].
  30. hmac_base_string_test_() -> [
  31. % cf. http://wiki.oauth.net/TestCases
  32. ?hmac_base_string_test("GET", "http://example.com/", [{n,v}], ["GET&http%3A%2F%2Fexample.com%2F&n%3Dv"]),
  33. ?hmac_base_string_test("GET", "http://example.com", [{n,v}], ["GET&http%3A%2F%2Fexample.com%2F&n%3Dv"]),
  34. ?hmac_base_string_test("POST", "https://photos.example.net/request_token", [
  35. {oauth_version, "1.0"},
  36. {oauth_consumer_key, "dpf43f3p2l4k3l03"},
  37. {oauth_timestamp, "1191242090"},
  38. {oauth_nonce, "hsu94j3884jdopsl"},
  39. {oauth_signature_method, "PLAINTEXT"}
  40. ], [
  41. "POST&https%3A%2F%2Fphotos.example.net%2Frequest_token&oauth_consumer_key",
  42. "%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dhsu94j3884jdopsl%26oauth_signature_method",
  43. "%3DPLAINTEXT%26oauth_timestamp%3D1191242090%26oauth_version%3D1.0"
  44. ]),
  45. ?hmac_base_string_test("GET", "http://photos.example.net/photos", [
  46. {file, "vacation.jpg"},
  47. {size, "original"},
  48. {oauth_version, "1.0"},
  49. {oauth_consumer_key, "dpf43f3p2l4k3l03"},
  50. {oauth_token, "nnch734d00sl2jdk"},
  51. {oauth_timestamp, "1191242096"},
  52. {oauth_nonce, "kllo9940pd9333jh"},
  53. {oauth_signature_method, "HMAC-SHA1"}
  54. ], [
  55. "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26",
  56. "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26",
  57. "oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26",
  58. "oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal"
  59. ])
  60. ].
  61. hmac_signature_test_() -> [
  62. % cf. http://wiki.oauth.net/TestCases
  63. ?hmac_signature_test("egQqG5AJep5sJ7anhXju1unge2I=", "cs", "", ["bs"]),
  64. ?hmac_signature_test("VZVjXceV7JgPq/dOTnNmEfO0Fv8=", "cs", "ts", ["bs"]),
  65. ?hmac_signature_test("tR3+Ty81lMeYAr/Fid0kMTYa/WM=", "kd94hf93k423kf44", "pfkkdhi9sl3r4s00", [
  66. "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26",
  67. "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26",
  68. "oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26",
  69. "oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal"
  70. ])
  71. ].