59 lines
2.3 KiB
C++
59 lines
2.3 KiB
C++
#include <iostream>
|
|
#include <stdio.h>
|
|
#include "gtest/gtest.h"
|
|
#include "gmock/gmock.h"
|
|
#include "alibabacloud/core/AlibabaCloud.h"
|
|
#include "alibabacloud/core/sts/StsClient.h"
|
|
#include "alibabacloud/core/StsAssumeRoleCredentialsProvider.h"
|
|
|
|
using namespace std;
|
|
using namespace AlibabaCloud;
|
|
using namespace AlibabaCloud::Sts;
|
|
|
|
using ::testing::_;
|
|
using ::testing::DefaultValue;
|
|
|
|
namespace {
|
|
|
|
class mockStsAssumeRoleCredentialsProvider : public StsAssumeRoleCredentialsProvider {
|
|
public:
|
|
mockStsAssumeRoleCredentialsProvider(
|
|
const Credentials &credentials,
|
|
const ClientConfiguration &configuration,
|
|
const std::string &roleArn,
|
|
const std::string &roleSessionName,
|
|
const std::string &policy = "",
|
|
int durationSeconds = 3600):
|
|
StsAssumeRoleCredentialsProvider(credentials, configuration, roleArn, roleSessionName, policy, durationSeconds) {}
|
|
MOCK_CONST_METHOD1(assumeRole, StsClient::AssumeRoleOutcome(const Model::AssumeRoleRequest &request));
|
|
};
|
|
|
|
TEST(StsAssumeRoleCredentialsProvider, mock) {
|
|
ClientConfiguration configuration("cn-hangzhou");
|
|
const string sub_user_key = "key";
|
|
const string sub_user_secret = "secret";
|
|
|
|
const Credentials sub_user_credentials(sub_user_key, sub_user_secret);
|
|
|
|
const string arn = "acs:ram::1940345800212929:role/testassumerole";
|
|
const string session = "roleSessionName";
|
|
const string policy = "";
|
|
int duration = 1800;
|
|
|
|
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\"}}";
|
|
Model::AssumeRoleResult res(payload);
|
|
|
|
mockStsAssumeRoleCredentialsProvider provider(sub_user_credentials, configuration, arn, session, policy, duration);
|
|
|
|
StsClient::AssumeRoleOutcome xout(res);
|
|
DefaultValue<StsClient::AssumeRoleOutcome>::Set(xout);
|
|
EXPECT_CALL(provider, assumeRole(_));
|
|
|
|
Credentials assumed_role_credentials = provider.getCredentials();
|
|
|
|
EXPECT_TRUE(assumed_role_credentials.accessKeyId() == "test_access_key_id");
|
|
EXPECT_TRUE(assumed_role_credentials.accessKeySecret() == "test_access_key_secret");
|
|
EXPECT_TRUE(assumed_role_credentials.sessionToken() == "test_security_token");
|
|
}
|
|
}
|