test.escript 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env escript
  2. -include_lib("eunit/include/eunit.hrl").
  3. main([]) ->
  4. code:add_path("ebin"),
  5. Tests = lists:append([signature_base_string_tests(), plaintext_tests(), hmac_sha1_tests(), rsa_sha1_tests()]),
  6. halt(case eunit:test(Tests) of ok -> 0; {error, _} -> 1 end).
  7. signature_base_string_tests() ->
  8. test_with("base_string_test_*", [method, url, params, base_string], fun (Method, URL, Params, BaseString) ->
  9. [?_assertEqual(BaseString, oauth:signature_base_string(Method, URL, Params))]
  10. end).
  11. plaintext_tests() ->
  12. test_with("plaintext_test_*", [consumer, token_secret, signature], fun (Consumer, TokenSecret, Signature) ->
  13. SignatureTest = ?_assertEqual(Signature, oauth:plaintext_signature(Consumer, TokenSecret)),
  14. VerifyTest = ?_assertEqual(true, oauth:plaintext_verify(Signature, Consumer, TokenSecret)),
  15. [SignatureTest, VerifyTest]
  16. end).
  17. hmac_sha1_tests() ->
  18. test_with("hmac_sha1_test_*", [base_string, consumer, token_secret, signature], fun (BaseString, Consumer, TokenSecret, Signature) ->
  19. SignatureTest = ?_assertEqual(Signature, oauth:hmac_sha1_signature(BaseString, Consumer, TokenSecret)),
  20. VerifyTest = ?_assertEqual(true, oauth:hmac_sha1_verify(Signature, BaseString, Consumer, TokenSecret)),
  21. [SignatureTest, VerifyTest]
  22. end).
  23. rsa_sha1_tests() ->
  24. Pkey = data_path("rsa_sha1_private_key.pem"),
  25. Cert = data_path("rsa_sha1_certificate.pem"),
  26. [BaseString, Signature] = read([base_string, signature], "rsa_sha1_test"),
  27. SignatureTest = ?_assertEqual(Signature, oauth:rsa_sha1_signature(BaseString, {"", Pkey, rsa_sha1})),
  28. VerifyTest = ?_assertEqual(true, oauth:rsa_sha1_verify(Signature, BaseString, {"", Cert, rsa_sha1})),
  29. [SignatureTest, VerifyTest].
  30. test_with(FilenamePattern, Keys, Fun) ->
  31. lists:flatten(lists:map(fun (Path) -> apply(Fun, read(Keys, Path)) end, filelib:wildcard(data_path(FilenamePattern)))).
  32. data_path(Basename) ->
  33. filename:join([filename:dirname(filename:absname(escript:script_name())), "testdata", Basename]).
  34. read(Keys, Filename) ->
  35. {ok, Proplist} = file:consult(data_path(Filename)),
  36. [proplists:get_value(K, Proplist) || K <- Keys].