oauth_SUITE.erl 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. %% -*- coding: utf-8 -*-
  2. %% -------------------------------------------------------------------
  3. %%
  4. %% Copyright (c) 2021 Marc Worrell
  5. %%
  6. %% -------------------------------------------------------------------
  7. -module(oauth_SUITE).
  8. -compile(export_all).
  9. -include_lib("common_test/include/ct.hrl").
  10. -include_lib("eunit/include/eunit.hrl").
  11. %% ------------------------------------------------------------
  12. %% Tests list
  13. %% ------------------------------------------------------------
  14. all() ->
  15. [
  16. signature_base_string,
  17. plaintext,
  18. hmac_sha1,
  19. rsa_sha1
  20. ].
  21. %% ------------------------------------------------------------
  22. %% Init & clean
  23. %% ------------------------------------------------------------
  24. init_per_suite(Config) ->
  25. Config.
  26. end_per_suite(_Config) ->
  27. ok.
  28. init_per_testcase(_TestCase, Config) ->
  29. Config.
  30. end_per_testcase(_TestCase, _Config) ->
  31. ok.
  32. %% ------------------------------------------------------------
  33. %% Test cases
  34. %% ------------------------------------------------------------
  35. signature_base_string(Config) ->
  36. test_with(
  37. Config,
  38. "base_string_test_*",
  39. [method, url, params, base_string],
  40. fun (Method, URL, Params, BaseString) ->
  41. [?_assertEqual(BaseString, oauth:signature_base_string(Method, URL, Params))]
  42. end).
  43. plaintext(Config) ->
  44. test_with(
  45. Config,
  46. "plaintext_test_*",
  47. [consumer, token_secret, signature],
  48. fun (Consumer, TokenSecret, Signature) ->
  49. SignatureTest = ?_assertEqual(Signature, oauth:plaintext_signature(Consumer, TokenSecret)),
  50. VerifyTest = ?_assertEqual(true, oauth:plaintext_verify(Signature, Consumer, TokenSecret)),
  51. [SignatureTest, VerifyTest]
  52. end).
  53. hmac_sha1(Config) ->
  54. test_with(
  55. Config,
  56. "hmac_sha1_test_*",
  57. [base_string, consumer, token_secret, signature],
  58. fun (BaseString, Consumer, TokenSecret, Signature) ->
  59. SignatureTest = ?_assertEqual(Signature, oauth:hmac_sha1_signature(BaseString, Consumer, TokenSecret)),
  60. VerifyTest = ?_assertEqual(true, oauth:hmac_sha1_verify(Signature, BaseString, Consumer, TokenSecret)),
  61. [SignatureTest, VerifyTest]
  62. end).
  63. rsa_sha1(Config) ->
  64. Pkey = data_path(Config, "rsa_sha1_private_key.pem"),
  65. Cert = data_path(Config, "rsa_sha1_certificate.pem"),
  66. [BaseString, Signature] = read([base_string, signature], data_path(Config, "rsa_sha1_test")),
  67. SignatureTest = ?_assertEqual(Signature, oauth:rsa_sha1_signature(BaseString, {"", Pkey, rsa_sha1})),
  68. VerifyTest = ?_assertEqual(true, oauth:rsa_sha1_verify(Signature, BaseString, {"", Cert, rsa_sha1})),
  69. [SignatureTest, VerifyTest].
  70. test_with(Config, FilenamePattern, Keys, Fun) ->
  71. lists:flatten(
  72. lists:map(
  73. fun (Path) -> apply(Fun, read(Keys, Path)) end,
  74. filelib:wildcard(data_path(Config, FilenamePattern)))).
  75. data_path(Config, Basename) ->
  76. DataDir = ?config(data_dir, Config),
  77. filename:join([DataDir, Basename]).
  78. read(Keys, Path) ->
  79. {ok, Proplist} = file:consult(Path),
  80. [ proplists:get_value(K, Proplist) || K <- Keys ].