stsassumerolecredentialsprovider_ut.cc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include "gtest/gtest.h"
  4. #include "gmock/gmock.h"
  5. #include "alibabacloud/core/AlibabaCloud.h"
  6. #include "alibabacloud/core/sts/StsClient.h"
  7. #include "alibabacloud/core/StsAssumeRoleCredentialsProvider.h"
  8. using namespace std;
  9. using namespace AlibabaCloud;
  10. using namespace AlibabaCloud::Sts;
  11. using ::testing::_;
  12. using ::testing::DefaultValue;
  13. namespace {
  14. class mockStsAssumeRoleCredentialsProvider : public StsAssumeRoleCredentialsProvider {
  15. public:
  16. mockStsAssumeRoleCredentialsProvider(
  17. const Credentials &credentials,
  18. const ClientConfiguration &configuration,
  19. const std::string &roleArn,
  20. const std::string &roleSessionName,
  21. const std::string &policy = "",
  22. int durationSeconds = 3600):
  23. StsAssumeRoleCredentialsProvider(credentials, configuration, roleArn, roleSessionName, policy, durationSeconds) {}
  24. MOCK_CONST_METHOD1(assumeRole, StsClient::AssumeRoleOutcome(const Model::AssumeRoleRequest &request));
  25. };
  26. TEST(StsAssumeRoleCredentialsProvider, mock) {
  27. ClientConfiguration configuration("cn-hangzhou");
  28. const string sub_user_key = "key";
  29. const string sub_user_secret = "secret";
  30. const Credentials sub_user_credentials(sub_user_key, sub_user_secret);
  31. const string arn = "acs:ram::1940345800212929:role/testassumerole";
  32. const string session = "roleSessionName";
  33. const string policy = "";
  34. int duration = 1800;
  35. const string payload = "{\"RequestId\":\"a-b-c-d\",\"AssumedRoleUser\":{\"AssumedRoleId\":\"test_assumed_role_id\",\"Arn\":\"test_arn\"},\"Credentials\":{\"AccessKeyId\":\"test_access_key_id\",\"AccessKeySecret\":\"test_access_key_secret\",\"Expiration\":\"100\",\"SecurityToken\":\"test_security_token\"}}";
  36. Model::AssumeRoleResult res(payload);
  37. mockStsAssumeRoleCredentialsProvider provider(sub_user_credentials, configuration, arn, session, policy, duration);
  38. StsClient::AssumeRoleOutcome xout(res);
  39. DefaultValue<StsClient::AssumeRoleOutcome>::Set(xout);
  40. EXPECT_CALL(provider, assumeRole(_));
  41. Credentials assumed_role_credentials = provider.getCredentials();
  42. EXPECT_TRUE(assumed_role_credentials.accessKeyId() == "test_access_key_id");
  43. EXPECT_TRUE(assumed_role_credentials.accessKeySecret() == "test_access_key_secret");
  44. EXPECT_TRUE(assumed_role_credentials.sessionToken() == "test_security_token");
  45. }
  46. }