refactor endpoints implementation
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <stdio.h>
|
||||
#include "gtest/gtest.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "utils.h"
|
||||
#include "alibabacloud/core/EndpointProvider.h"
|
||||
|
||||
using namespace std;
|
||||
@@ -27,32 +28,48 @@ class mockEndpointProvider: public EndpointProvider {
|
||||
MOCK_CONST_METHOD1(describeEndpoints, LocationClient::DescribeEndpointsOutcome(const Model::DescribeEndpointsRequest &request));
|
||||
};
|
||||
|
||||
TEST(EndpointProvider, service_code_empty) {
|
||||
TEST(EndpointProvider, basic_function) {
|
||||
const Credentials sub_user_credentials("key", "secret");
|
||||
ClientConfiguration config; // default is cn-hangzhou
|
||||
// config.setEndpoint("test-endpoint"); // endpoint should be empty
|
||||
|
||||
// user specified has 1st priority, even it is a wrong configuration
|
||||
config.setEndpoint("test-endpoint");
|
||||
mockEndpointProvider p0(sub_user_credentials, config, config.regionId(), "non-exist-product", "");
|
||||
EndpointProvider::EndpointOutcome out0 = p0.getEndpoint();
|
||||
EXPECT_TRUE(out0.result() == "test-endpoint");
|
||||
|
||||
config.setEndpoint(""); // set endpoint to empty
|
||||
// invalid product
|
||||
mockEndpointProvider provider1(sub_user_credentials, config, config.regionId(), "non-exist-product", "");
|
||||
EndpointProvider::EndpointOutcome out1 = provider1.getEndpoint();
|
||||
mockEndpointProvider p1(sub_user_credentials, config, config.regionId(), "non-exist-Product", "");
|
||||
EndpointProvider::EndpointOutcome out1 = p1.getEndpoint();
|
||||
EXPECT_TRUE(out1.error().errorCode() == "InvalidRegionId");
|
||||
EXPECT_TRUE(out1.error().errorMessage() == "Product[non-exist-product] at region[cn-hangzhou] does not exist.");
|
||||
|
||||
// ecs has no global_endpoint
|
||||
mockEndpointProvider provider2(sub_user_credentials, config, config.regionId(), "ecs", "");
|
||||
EndpointProvider::EndpointOutcome out2 = provider2.getEndpoint();
|
||||
mockEndpointProvider p2(sub_user_credentials, config, "non-exist-region", "ecs", "");
|
||||
EndpointProvider::EndpointOutcome out2 = p2.getEndpoint();
|
||||
EXPECT_TRUE(out2.error().errorCode() == "InvalidRegionId");
|
||||
EXPECT_TRUE(out2.error().errorMessage() == "Product[ecs] at region[non-exist-region] does not exist.");
|
||||
|
||||
// local_endpoints can provide the endpoint
|
||||
mockEndpointProvider p3(sub_user_credentials, config, config.regionId(), "ecs", "");
|
||||
EndpointProvider::EndpointOutcome out3 = p3.getEndpoint();
|
||||
EXPECT_TRUE(out3.result() == "ecs-cn-hangzhou.aliyuncs.com");
|
||||
|
||||
// aegis has global_endpoint
|
||||
mockEndpointProvider provider3(sub_user_credentials, config, config.regionId(), "aegis", "");
|
||||
EndpointProvider::EndpointOutcome out3 = provider3.getEndpoint();
|
||||
EXPECT_TRUE(out3.error().errorCode().empty());
|
||||
EXPECT_TRUE(out3.result() == "aegis.cn-hangzhou.aliyuncs.com");
|
||||
mockEndpointProvider p4(sub_user_credentials, config, config.regionId(), "aegis", "");
|
||||
EndpointProvider::EndpointOutcome out4 = p4.getEndpoint();
|
||||
EXPECT_TRUE(out4.result() == "aegis.cn-hangzhou.aliyuncs.com");
|
||||
|
||||
// arms has regional_endpoint, get from region
|
||||
mockEndpointProvider provider4(sub_user_credentials, config, config.regionId(), "arms", "");
|
||||
EndpointProvider::EndpointOutcome out4 = provider4.getEndpoint();
|
||||
EXPECT_TRUE(out4.error().errorCode().empty());
|
||||
EXPECT_TRUE(out4.result() == "arms.cn-hangzhou.aliyuncs.com");
|
||||
|
||||
// aegis has global_endpoint
|
||||
mockEndpointProvider p5(sub_user_credentials, config, config.regionId(), "Aegis", "");
|
||||
EndpointProvider::EndpointOutcome out5 = p5.getEndpoint();
|
||||
EXPECT_TRUE(out5.result() == "aegis.cn-hangzhou.aliyuncs.com");
|
||||
|
||||
mockEndpointProvider p6(sub_user_credentials, config, "cn-shanghai", "ensdisk", "");
|
||||
EndpointProvider::EndpointOutcome out6 = p6.getEndpoint();
|
||||
EXPECT_TRUE(out6.error().errorCode() == "InvalidRegionId");
|
||||
EXPECT_TRUE(out6.error().errorMessage() == "Product[ensdisk] at region[cn-shanghai] does not exist.");
|
||||
}
|
||||
|
||||
TEST(EndpointProvider, mock_remote) {
|
||||
@@ -60,7 +77,7 @@ TEST(EndpointProvider, mock_remote) {
|
||||
ClientConfiguration config; // default is cn-hangzhou
|
||||
// config.setEndpoint("test-endpoint");
|
||||
|
||||
mockEndpointProvider provider(sub_user_credentials, config, config.regionId(), "ecs", "ecs");
|
||||
mockEndpointProvider provider(sub_user_credentials, config, config.regionId(), "fake-ecs", "fake-ecs");
|
||||
|
||||
Model::DescribeEndpointsRequest request;
|
||||
|
||||
@@ -79,9 +96,8 @@ TEST(EndpointProvider, mock_remote) {
|
||||
TEST(EndpointProvider, mock_remote_error) {
|
||||
const Credentials sub_user_credentials("key", "secret");
|
||||
ClientConfiguration config; // default is cn-hangzhou
|
||||
// config.setEndpoint("test-endpoint");
|
||||
|
||||
mockEndpointProvider provider(sub_user_credentials, config, config.regionId(), "ecs", "ecs");
|
||||
mockEndpointProvider provider(sub_user_credentials, config, config.regionId(), "fake-ecs", "fake-ecs");
|
||||
LocationClient::DescribeEndpointsOutcome xout(Error("any-error-code", "any-error-message"));
|
||||
|
||||
DefaultValue<LocationClient::DescribeEndpointsOutcome>::Set(xout);
|
||||
@@ -90,3 +106,20 @@ TEST(EndpointProvider, mock_remote_error) {
|
||||
|
||||
EXPECT_TRUE(out.error().errorCode() == "any-error-code");
|
||||
}
|
||||
|
||||
TEST(EndpointProvider, serial_02) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
Credentials credentials(key, secret);
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
EndpointProvider ep(credentials, configuration, "cn-hangzhou", "arms", "arms");
|
||||
EndpointProvider::EndpointOutcome out = ep.getEndpoint();
|
||||
EXPECT_TRUE(out.result() == "arms.cn-hangzhou.aliyuncs.com");
|
||||
|
||||
EndpointProvider p1(credentials, configuration, "cn-shanghai", "fake-ecs", "fake-ecs");
|
||||
EndpointProvider::EndpointOutcome out1 = p1.getEndpoint();
|
||||
EXPECT_TRUE(out1.error().errorCode() == "InvalidProduct");
|
||||
EXPECT_TRUE(out1.error().errorMessage() == "Prodcut[fake-ecs] does not exist.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user