PageRenderTime 21ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/mordor/tests/oauth.cpp

http://github.com/mozy/mordor
C++ | 62 lines | 55 code | 6 blank | 1 comment | 0 complexity | d0ce5ce0ab0744161579f2674a42453f MD5 | raw file
Possible License(s): BSD-3-Clause
  1. // Copyright (c) 2009 - Mozy, Inc.
  2. #include "mordor/http/oauth.h"
  3. #include "mordor/test/test.h"
  4. using namespace Mordor::HTTP;
  5. MORDOR_UNITTEST(OAuth, oauthExample)
  6. {
  7. std::pair<std::string, std::string>
  8. clientCredentials("dpf43f3p2l4k3l03", "kd94hf93k423kf44"),
  9. temporaryCredentials("hh5s93j4hdidpola", "hdhd0244k9j7ao03"),
  10. tokenCredentials("nnch734d00sl2jdk", "pfkkdhi9sl3r4s00");
  11. std::string verifier = "hfdp7dh39dks9884";
  12. StringMap oauthParameters;
  13. oauthParameters["oauth_consumer_key"] = clientCredentials.first;
  14. oauthParameters["oauth_version"] = "1.0";
  15. oauthParameters["oauth_callback"] =
  16. "http://printer.example.com/request_token_ready";
  17. oauthParameters["oauth_timestamp"] = "1191242090";
  18. oauthParameters["oauth_nonce"] = "hsu94j3884jdopsl";
  19. OAuth::sign("https://photos.example.net/request_token", POST, "PLAINTEXT",
  20. clientCredentials.second, std::string(), oauthParameters);
  21. MORDOR_ASSERT(oauthParameters.find("oauth_signature") !=
  22. oauthParameters.end());
  23. MORDOR_TEST_ASSERT_EQUAL(oauthParameters["oauth_signature"],
  24. "kd94hf93k423kf44&");
  25. MORDOR_ASSERT(OAuth::validate("https://photos.example.net/request_token",
  26. POST, clientCredentials.second, std::string(), oauthParameters));
  27. oauthParameters.erase("oauth_callback");
  28. oauthParameters["oauth_token"] = temporaryCredentials.first;
  29. oauthParameters["oauth_verifier"] = verifier;
  30. oauthParameters["oauth_timestamp"] = "1191242092";
  31. oauthParameters["oauth_nonce"] = "dji430splmx33448";
  32. OAuth::sign("https://photos.example.net/access_token", POST, "PLAINTEXT",
  33. clientCredentials.second, temporaryCredentials.second,
  34. oauthParameters);
  35. MORDOR_ASSERT(oauthParameters.find("oauth_signature") !=
  36. oauthParameters.end());
  37. MORDOR_TEST_ASSERT_EQUAL(oauthParameters["oauth_signature"],
  38. "kd94hf93k423kf44&hdhd0244k9j7ao03");
  39. MORDOR_ASSERT(OAuth::validate("https://photos.example.net/access_token",
  40. POST, clientCredentials.second, temporaryCredentials.second,
  41. oauthParameters));
  42. oauthParameters.erase("oauth_verifier");
  43. oauthParameters["oauth_token"] = tokenCredentials.first;
  44. oauthParameters["oauth_timestamp"] = "1191242096";
  45. oauthParameters["oauth_nonce"] = "kllo9940pd9333jh";
  46. OAuth::sign("http://photos.example.net/photos?file=vacation.jpg&size=original",
  47. GET, "HMAC-SHA1", clientCredentials.second, tokenCredentials.second,
  48. oauthParameters);
  49. MORDOR_ASSERT(oauthParameters.find("oauth_signature") !=
  50. oauthParameters.end());
  51. MORDOR_TEST_ASSERT_EQUAL(oauthParameters["oauth_signature"],
  52. "tR3+Ty81lMeYAr/Fid0kMTYa/WM=");
  53. MORDOR_ASSERT(OAuth::validate("http://photos.example.net/photos?file=vacation.jpg&size=original",
  54. GET, clientCredentials.second, tokenCredentials.second,
  55. oauthParameters));
  56. }