[LYN-3463] Improve error message based on resource mapping manager loading status (#551)
This commit is contained in:
@@ -25,13 +25,24 @@ namespace AWSCore
|
|||||||
: AWSCoreInternalRequestBus::Handler
|
: AWSCoreInternalRequestBus::Handler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static constexpr const char AWSCORE_CONFIGURATION_FILENAME[] = "awscoreconfiguration.setreg";
|
static constexpr const char AWSCoreConfigurationName[] = "AWSCoreConfiguration";
|
||||||
|
static constexpr const char AWSCoreConfigurationFileName[] = "awscoreconfiguration.setreg";
|
||||||
|
|
||||||
static constexpr const char AWSCORE_RESOURCE_MAPPING_CONFIG_FOLDERNAME[] = "Config";
|
static constexpr const char AWSCoreResourceMappingConfigFolderName[] = "Config";
|
||||||
static constexpr const char AWSCORE_RESOURCE_MAPPING_CONFIG_FILENAME_KEY[] = "/AWSCore/ResourceMappingConfigFileName";
|
static constexpr const char AWSCoreResourceMappingConfigFileNameKey[] = "/AWSCore/ResourceMappingConfigFileName";
|
||||||
|
|
||||||
|
static constexpr const char AWSCoreDefaultProfileName[] = "default";
|
||||||
|
static constexpr const char AWSCoreProfileNameKey[] = "/AWSCore/ProfileName";
|
||||||
|
|
||||||
|
static constexpr const char ProjectSourceFolderNotFoundErrorMessage[] =
|
||||||
|
"Failed to get project source folder path.";
|
||||||
|
static constexpr const char ProfileNameNotFoundErrorMessage[] =
|
||||||
|
"Failed to get profile name, return default value instead.";
|
||||||
|
static constexpr const char ResourceMappingFileNameNotFoundErrorMessage[] =
|
||||||
|
"Failed to get resource mapping config file name, return empty value instead.";
|
||||||
|
static constexpr const char SettingsRegistryLoadFailureErrorMessage[] =
|
||||||
|
"Failed to load AWSCore settings registry file.";
|
||||||
|
|
||||||
static constexpr const char AWSCORE_DEFAULT_PROFILE_NAME[] = "default";
|
|
||||||
static constexpr const char AWSCORE_PROFILENAME_KEY[] = "/AWSCore/ProfileName";
|
|
||||||
|
|
||||||
AWSCoreConfiguration();
|
AWSCoreConfiguration();
|
||||||
~AWSCoreConfiguration() = default;
|
~AWSCoreConfiguration() = default;
|
||||||
@@ -55,6 +66,9 @@ namespace AWSCore
|
|||||||
// Parse values from project .setreg file
|
// Parse values from project .setreg file
|
||||||
void ParseSettingsRegistryValues();
|
void ParseSettingsRegistryValues();
|
||||||
|
|
||||||
|
// Reset settings registry data
|
||||||
|
void ResetSettingsRegistryData();
|
||||||
|
|
||||||
AZStd::string m_sourceProjectFolder;
|
AZStd::string m_sourceProjectFolder;
|
||||||
AZ::SettingsRegistryImpl m_settingsRegistry;
|
AZ::SettingsRegistryImpl m_settingsRegistry;
|
||||||
AZStd::string m_profileName;
|
AZStd::string m_profileName;
|
||||||
|
|||||||
@@ -14,20 +14,20 @@
|
|||||||
|
|
||||||
namespace AWSCore
|
namespace AWSCore
|
||||||
{
|
{
|
||||||
static constexpr const char AWS_CHINA_REGION_PREFIX[] = "cn-";
|
static constexpr const char AWSChinaRegionPrefix[] = "cn-";
|
||||||
|
|
||||||
static constexpr const char AWS_FEATURE_GEM_RESTAPI_ID_KEYNAME_SUFFIX[] = ".RESTApiId";
|
static constexpr const char AWSFeatureGemRESTApiIdKeyNameSuffix[] = ".RESTApiId";
|
||||||
static constexpr const char AWS_FEATURE_GEM_RESTAPI_STAGE_KEYNAME_SUFFIX[] = ".RESTApiStage";
|
static constexpr const char AWSFeatureGemRESTApiStageKeyNameSuffix[] = ".RESTApiStage";
|
||||||
|
|
||||||
static constexpr const char RESOURCE_MAPPING_ACCOUNTID_KEYNAME[] = "AccountId";
|
static constexpr const char ResourceMappingAccountIdKeyName[] = "AccountId";
|
||||||
static constexpr const char RESOURCE_MAPPING_RESOURCES_KEYNAME[] = "AWSResourceMappings";
|
static constexpr const char ResourceMappingResourcesKeyName[] = "AWSResourceMappings";
|
||||||
static constexpr const char RESOURCE_MAPPING_NAMEID_KEYNAME[] = "Name/ID";
|
static constexpr const char ResourceMappingNameIdKeyName[] = "Name/ID";
|
||||||
static constexpr const char RESOURCE_MAPPING_REGION_KEYNAME[] = "Region";
|
static constexpr const char ResourceMappingRegionKeyName[] = "Region";
|
||||||
static constexpr const char RESOURCE_MAPPING_TYPE_KEYNAME[] = "Type";
|
static constexpr const char ResourceMappingTypeKeyName[] = "Type";
|
||||||
static constexpr const char RESOURCE_MAPPING_VERSION_KEYNAME[] = "Version";
|
static constexpr const char ResourceMappingVersionKeyName[] = "Version";
|
||||||
|
|
||||||
// TODO: move this into an independent file under AWSCore gem, if resource mapping tool can reuse it
|
// TODO: move this into an independent file under AWSCore gem, if resource mapping tool can reuse it
|
||||||
static constexpr const char RESOURCE_MAPPING_JSON_SCHEMA[] =
|
static constexpr const char ResourceMappingJsonSchema[] =
|
||||||
R"({
|
R"({
|
||||||
"$schema": "http://json-schema.org/draft-04/schema",
|
"$schema": "http://json-schema.org/draft-04/schema",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|||||||
@@ -45,6 +45,35 @@ namespace AWSCore
|
|||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static constexpr const char AWSResourceMappingManagerName[] = "AWSResourceMappingManager";
|
||||||
|
static constexpr const char ManagerUnexpectedStatusErrorMessage[] =
|
||||||
|
"AWSResourceMappingManager is in unexpected status.";
|
||||||
|
static constexpr const char ResourceMappingFileInvalidPathErrorMessage[] =
|
||||||
|
"Failed to get resource mapping config file path.";
|
||||||
|
static constexpr const char ResourceMappingKeyNotFoundErrorMessage[] =
|
||||||
|
"Failed to find resource mapping key: %s";
|
||||||
|
static constexpr const char ResourceMappingFileNotLoadedErrorMessage[] =
|
||||||
|
"Resource mapping config file is not loaded, please confirm %s is setup correctly.";
|
||||||
|
static constexpr const char ResourceMappingFileLoadFailureErrorMessage[] =
|
||||||
|
"Resource mapping config file failed to load, please confirm file is present and in correct format.";
|
||||||
|
static constexpr const char ResourceMappingRESTApiIdAndStageInconsistentErrorMessage[] =
|
||||||
|
"Resource mapping %s and %s have inconsistent region value, return empty service url.";
|
||||||
|
static constexpr const char ResourceMappingRESTApiInvalidServiceUrlErrorMessage[] =
|
||||||
|
"Unable to format REST Api url with RESTApiId=%s, RESTApiRegion=%s, RESTApiStage=%s, return empty service url.";
|
||||||
|
static constexpr const char ResourceMappingFileInvalidJsonFormatErrorMessage[] =
|
||||||
|
"Failed to read resource mapping config file: %s";
|
||||||
|
static constexpr const char ResourceMappingFileInvalidSchemaErrorMessage[] =
|
||||||
|
"Failed to load resource mapping config file json schema.";
|
||||||
|
static constexpr const char ResourceMappingFileInvalidContentErrorMessage[] =
|
||||||
|
"Failed to parse resource mapping config file: %s";
|
||||||
|
|
||||||
|
enum class Status : AZ::u8
|
||||||
|
{
|
||||||
|
NotLoaded = 0,
|
||||||
|
Ready = 1,
|
||||||
|
Error = 2
|
||||||
|
};
|
||||||
|
|
||||||
AWSResourceMappingManager();
|
AWSResourceMappingManager();
|
||||||
~AWSResourceMappingManager() = default;
|
~AWSResourceMappingManager() = default;
|
||||||
|
|
||||||
@@ -63,7 +92,12 @@ namespace AWSCore
|
|||||||
const AZStd::string& restApiIdKeyName, const AZStd::string& restApiStageKeyName) const override;
|
const AZStd::string& restApiIdKeyName, const AZStd::string& restApiStageKeyName) const override;
|
||||||
void ReloadConfigFile(bool reloadConfigFileName = false) override;
|
void ReloadConfigFile(bool reloadConfigFileName = false) override;
|
||||||
|
|
||||||
|
Status GetStatus() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// Get resource attribute error message based on the status
|
||||||
|
AZStd::string GetResourceAttributeErrorMessageByStatus(const AZStd::string& resourceKeyName) const;
|
||||||
|
|
||||||
// Get resource attribute from resource mappings
|
// Get resource attribute from resource mappings
|
||||||
AZStd::string GetResourceAttribute(
|
AZStd::string GetResourceAttribute(
|
||||||
AZStd::function<AZStd::string(const AWSResourceMappingAttributes&)> getAttributeFunction,
|
AZStd::function<AZStd::string(const AWSResourceMappingAttributes&)> getAttributeFunction,
|
||||||
@@ -83,6 +117,7 @@ namespace AWSCore
|
|||||||
// Validate JSON document against schema
|
// Validate JSON document against schema
|
||||||
bool ValidateJsonDocumentAgainstSchema(const rapidjson::Document& jsonDocument);
|
bool ValidateJsonDocumentAgainstSchema(const rapidjson::Document& jsonDocument);
|
||||||
|
|
||||||
|
Status m_status;
|
||||||
// Resource mapping related data
|
// Resource mapping related data
|
||||||
AZStd::string m_defaultAccountId;
|
AZStd::string m_defaultAccountId;
|
||||||
AZStd::string m_defaultRegion;
|
AZStd::string m_defaultRegion;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
AWSCoreConfiguration::AWSCoreConfiguration()
|
AWSCoreConfiguration::AWSCoreConfiguration()
|
||||||
: m_sourceProjectFolder("")
|
: m_sourceProjectFolder("")
|
||||||
, m_profileName(AWSCORE_DEFAULT_PROFILE_NAME)
|
, m_profileName(AWSCoreDefaultProfileName)
|
||||||
, m_resourceMappingConfigFileName("")
|
, m_resourceMappingConfigFileName("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -44,16 +44,16 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
if (m_sourceProjectFolder.empty())
|
if (m_sourceProjectFolder.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to get source project folder path.");
|
AZ_Warning(AWSCoreConfigurationName, false, ProjectSourceFolderNotFoundErrorMessage);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
if (m_resourceMappingConfigFileName.empty())
|
if (m_resourceMappingConfigFileName.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to get resource mapping config file name.");
|
AZ_Warning(AWSCoreConfigurationName, false, ResourceMappingFileNameNotFoundErrorMessage);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
AZStd::string configFilePath = AZStd::string::format("%s/%s/%s",
|
AZStd::string configFilePath = AZStd::string::format("%s/%s/%s",
|
||||||
m_sourceProjectFolder.c_str(), AWSCORE_RESOURCE_MAPPING_CONFIG_FOLDERNAME, m_resourceMappingConfigFileName.c_str());
|
m_sourceProjectFolder.c_str(), AWSCoreResourceMappingConfigFolderName, m_resourceMappingConfigFileName.c_str());
|
||||||
AzFramework::StringFunc::Path::Normalize(configFilePath);
|
AzFramework::StringFunc::Path::Normalize(configFilePath);
|
||||||
return configFilePath;
|
return configFilePath;
|
||||||
}
|
}
|
||||||
@@ -68,17 +68,17 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
if (m_sourceProjectFolder.empty())
|
if (m_sourceProjectFolder.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to get source project folder path.");
|
AZ_Warning(AWSCoreConfigurationName, false, ProjectSourceFolderNotFoundErrorMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AZStd::string settingsRegistryPath = AZStd::string::format("%s/%s/%s",
|
AZStd::string settingsRegistryPath = AZStd::string::format("%s/%s/%s",
|
||||||
m_sourceProjectFolder.c_str(), AZ::SettingsRegistryInterface::RegistryFolder, AWSCoreConfiguration::AWSCORE_CONFIGURATION_FILENAME);
|
m_sourceProjectFolder.c_str(), AZ::SettingsRegistryInterface::RegistryFolder, AWSCoreConfiguration::AWSCoreConfigurationFileName);
|
||||||
AzFramework::StringFunc::Path::Normalize(settingsRegistryPath);
|
AzFramework::StringFunc::Path::Normalize(settingsRegistryPath);
|
||||||
|
|
||||||
if (!m_settingsRegistry.MergeSettingsFile(settingsRegistryPath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""))
|
if (!m_settingsRegistry.MergeSettingsFile(settingsRegistryPath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""))
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to merge AWS core settings registry.");
|
AZ_Warning(AWSCoreConfigurationName, false, SettingsRegistryLoadFailureErrorMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ namespace AWSCore
|
|||||||
auto sourceProjectFolder = AZ::IO::FileIOBase::GetInstance()->GetAlias("@devassets@");
|
auto sourceProjectFolder = AZ::IO::FileIOBase::GetInstance()->GetAlias("@devassets@");
|
||||||
if (!sourceProjectFolder)
|
if (!sourceProjectFolder)
|
||||||
{
|
{
|
||||||
AZ_Error("AWSCoreConfiguration", false, "Failed to initialize source project folder path.");
|
AZ_Error(AWSCoreConfigurationName, false, ProjectSourceFolderNotFoundErrorMessage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -102,24 +102,38 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
m_resourceMappingConfigFileName.clear();
|
m_resourceMappingConfigFileName.clear();
|
||||||
auto resourceMappingConfigFileNamePath = AZStd::string::format("%s%s",
|
auto resourceMappingConfigFileNamePath = AZStd::string::format("%s%s",
|
||||||
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCORE_RESOURCE_MAPPING_CONFIG_FILENAME_KEY);
|
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreResourceMappingConfigFileNameKey);
|
||||||
if (!m_settingsRegistry.Get(m_resourceMappingConfigFileName, resourceMappingConfigFileNamePath))
|
if (!m_settingsRegistry.Get(m_resourceMappingConfigFileName, resourceMappingConfigFileNamePath))
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to get resource mapping config file name from settings registry.");
|
AZ_Warning(AWSCoreConfigurationName, false, ResourceMappingFileNameNotFoundErrorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_profileName.clear();
|
m_profileName.clear();
|
||||||
auto profileNamePath = AZStd::string::format(
|
auto profileNamePath = AZStd::string::format(
|
||||||
"%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCORE_PROFILENAME_KEY);
|
"%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreProfileNameKey);
|
||||||
if (!m_settingsRegistry.Get(m_profileName, profileNamePath))
|
if (!m_settingsRegistry.Get(m_profileName, profileNamePath))
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSCoreConfiguration", false, "Failed to get profile name from settings registry, using default value instead.");
|
AZ_Warning(AWSCoreConfigurationName, false, ProfileNameNotFoundErrorMessage);
|
||||||
m_profileName = AWSCORE_DEFAULT_PROFILE_NAME;
|
m_profileName = AWSCoreDefaultProfileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AWSCoreConfiguration::ResetSettingsRegistryData()
|
||||||
|
{
|
||||||
|
auto profileNamePath = AZStd::string::format("%s%s",
|
||||||
|
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreProfileNameKey);
|
||||||
|
m_settingsRegistry.Remove(profileNamePath);
|
||||||
|
m_profileName.clear();
|
||||||
|
|
||||||
|
auto resourceMappingConfigFileNamePath = AZStd::string::format("%s%s",
|
||||||
|
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreResourceMappingConfigFileNameKey);
|
||||||
|
m_settingsRegistry.Remove(resourceMappingConfigFileNamePath);
|
||||||
|
m_resourceMappingConfigFileName.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void AWSCoreConfiguration::ReloadConfiguration()
|
void AWSCoreConfiguration::ReloadConfiguration()
|
||||||
{
|
{
|
||||||
|
ResetSettingsRegistryData();
|
||||||
InitSettingsRegistry();
|
InitSettingsRegistry();
|
||||||
}
|
}
|
||||||
} // namespace AWSCore
|
} // namespace AWSCore
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
AZ_Warning("AWSDefaultCredentialHandler", false, "Failed to get profile name, use default profile name instead");
|
AZ_Warning("AWSDefaultCredentialHandler", false, "Failed to get profile name, use default profile name instead");
|
||||||
SetProfileCredentialsProvider(Aws::MakeShared<Aws::Auth::ProfileConfigFileAWSCredentialsProvider>(
|
SetProfileCredentialsProvider(Aws::MakeShared<Aws::Auth::ProfileConfigFileAWSCredentialsProvider>(
|
||||||
AWSDEFAULTCREDENTIALHANDLER_ALLOC_TAG, AWSCoreConfiguration::AWSCORE_DEFAULT_PROFILE_NAME));
|
AWSDEFAULTCREDENTIALHANDLER_ALLOC_TAG, AWSCoreConfiguration::AWSCoreDefaultProfileName));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,12 +12,14 @@
|
|||||||
|
|
||||||
#include <AzCore/IO/Path/Path.h>
|
#include <AzCore/IO/Path/Path.h>
|
||||||
#include <AzCore/JSON/schema.h>
|
#include <AzCore/JSON/schema.h>
|
||||||
|
#include <AzCore/JSON/prettywriter.h>
|
||||||
#include <AzCore/Settings/SettingsRegistry.h>
|
#include <AzCore/Settings/SettingsRegistry.h>
|
||||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||||
#include <AzFramework/FileFunc/FileFunc.h>
|
#include <AzFramework/FileFunc/FileFunc.h>
|
||||||
#include <AzFramework/StringFunc/StringFunc.h>
|
#include <AzFramework/StringFunc/StringFunc.h>
|
||||||
|
|
||||||
#include <AWSCoreInternalBus.h>
|
#include <AWSCoreInternalBus.h>
|
||||||
|
#include <Configuration/AWSCoreConfiguration.h>
|
||||||
#include <ResourceMapping/AWSResourceMappingConstants.h>
|
#include <ResourceMapping/AWSResourceMappingConstants.h>
|
||||||
#include <ResourceMapping/AWSResourceMappingManager.h>
|
#include <ResourceMapping/AWSResourceMappingManager.h>
|
||||||
#include <ResourceMapping/AWSResourceMappingUtils.h>
|
#include <ResourceMapping/AWSResourceMappingUtils.h>
|
||||||
@@ -25,7 +27,8 @@
|
|||||||
namespace AWSCore
|
namespace AWSCore
|
||||||
{
|
{
|
||||||
AWSResourceMappingManager::AWSResourceMappingManager()
|
AWSResourceMappingManager::AWSResourceMappingManager()
|
||||||
: m_defaultAccountId("")
|
: m_status(Status::NotLoaded)
|
||||||
|
, m_defaultAccountId("")
|
||||||
, m_defaultRegion("")
|
, m_defaultRegion("")
|
||||||
, m_resourceMappings()
|
, m_resourceMappings()
|
||||||
{
|
{
|
||||||
@@ -43,11 +46,27 @@ namespace AWSCore
|
|||||||
ResetResourceMappingsData();
|
ResetResourceMappingsData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AZStd::string AWSResourceMappingManager::GetResourceAttributeErrorMessageByStatus(const AZStd::string& resourceKeyName) const
|
||||||
|
{
|
||||||
|
switch (m_status)
|
||||||
|
{
|
||||||
|
case Status::NotLoaded:
|
||||||
|
return AZStd::string::format(ResourceMappingFileNotLoadedErrorMessage, AWSCoreConfiguration::AWSCoreConfigurationFileName);
|
||||||
|
case Status::Ready:
|
||||||
|
return AZStd::string::format(ResourceMappingKeyNotFoundErrorMessage, resourceKeyName.c_str());
|
||||||
|
case Status::Error:
|
||||||
|
return ResourceMappingFileLoadFailureErrorMessage;
|
||||||
|
default:
|
||||||
|
return ManagerUnexpectedStatusErrorMessage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AZStd::string AWSResourceMappingManager::GetDefaultAccountId() const
|
AZStd::string AWSResourceMappingManager::GetDefaultAccountId() const
|
||||||
{
|
{
|
||||||
if (m_defaultAccountId.empty())
|
if (m_defaultAccountId.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Account Id should not be empty, please make sure config file is valid.");
|
AZ_Warning(AWSResourceMappingManagerName, false,
|
||||||
|
GetResourceAttributeErrorMessageByStatus(ResourceMappingAccountIdKeyName).c_str());
|
||||||
}
|
}
|
||||||
return m_defaultAccountId;
|
return m_defaultAccountId;
|
||||||
}
|
}
|
||||||
@@ -56,7 +75,8 @@ namespace AWSCore
|
|||||||
{
|
{
|
||||||
if (m_defaultRegion.empty())
|
if (m_defaultRegion.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Region should not be empty, please make sure config file is valid.");
|
AZ_Warning(AWSResourceMappingManagerName, false,
|
||||||
|
GetResourceAttributeErrorMessageByStatus(ResourceMappingRegionKeyName).c_str());
|
||||||
}
|
}
|
||||||
return m_defaultRegion;
|
return m_defaultRegion;
|
||||||
}
|
}
|
||||||
@@ -100,8 +120,8 @@ namespace AWSCore
|
|||||||
AZStd::string AWSResourceMappingManager::GetServiceUrlByServiceName(const AZStd::string& serviceName) const
|
AZStd::string AWSResourceMappingManager::GetServiceUrlByServiceName(const AZStd::string& serviceName) const
|
||||||
{
|
{
|
||||||
return GetServiceUrlByRESTApiIdAndStage(
|
return GetServiceUrlByRESTApiIdAndStage(
|
||||||
AZStd::string::format("%s%s", serviceName.c_str(), AWS_FEATURE_GEM_RESTAPI_ID_KEYNAME_SUFFIX),
|
AZStd::string::format("%s%s", serviceName.c_str(), AWSFeatureGemRESTApiIdKeyNameSuffix),
|
||||||
AZStd::string::format("%s%s", serviceName.c_str(), AWS_FEATURE_GEM_RESTAPI_STAGE_KEYNAME_SUFFIX));
|
AZStd::string::format("%s%s", serviceName.c_str(), AWSFeatureGemRESTApiStageKeyNameSuffix));
|
||||||
}
|
}
|
||||||
|
|
||||||
AZStd::string AWSResourceMappingManager::GetServiceUrlByRESTApiIdAndStage(
|
AZStd::string AWSResourceMappingManager::GetServiceUrlByRESTApiIdAndStage(
|
||||||
@@ -113,16 +133,13 @@ namespace AWSCore
|
|||||||
AZStd::string serviceRegion = GetResourceRegion(restApiIdKeyName);
|
AZStd::string serviceRegion = GetResourceRegion(restApiIdKeyName);
|
||||||
if (serviceRegion != GetResourceRegion(restApiStageKeyName))
|
if (serviceRegion != GetResourceRegion(restApiStageKeyName))
|
||||||
{
|
{
|
||||||
AZ_Warning(
|
AZ_Warning(AWSResourceMappingManagerName, false, ResourceMappingRESTApiIdAndStageInconsistentErrorMessage,
|
||||||
"AWSResourceMappingManager", false, "%s and %s have inconsistent region value, return empty service url.",
|
|
||||||
restApiIdKeyName.c_str(), restApiStageKeyName.c_str());
|
restApiIdKeyName.c_str(), restApiStageKeyName.c_str());
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
AZStd::string serviceRESTApiUrl = AWSResourceMappingUtils::FormatRESTApiUrl(serviceRESTApiId, serviceRegion, serviceRESTApiStage);
|
AZStd::string serviceRESTApiUrl = AWSResourceMappingUtils::FormatRESTApiUrl(serviceRESTApiId, serviceRegion, serviceRESTApiStage);
|
||||||
AZ_Warning(
|
AZ_Warning(AWSResourceMappingManagerName, !serviceRESTApiUrl.empty(), ResourceMappingRESTApiInvalidServiceUrlErrorMessage,
|
||||||
"AWSResourceMappingManager", !serviceRESTApiUrl.empty(),
|
|
||||||
"Unable to format REST Api url with RESTApiId=%s, RESTApiRegion=%s, RESTApiStage=%s, return empty service url.",
|
|
||||||
serviceRESTApiId.c_str(), serviceRegion.c_str(), serviceRESTApiStage.c_str());
|
serviceRESTApiId.c_str(), serviceRegion.c_str(), serviceRESTApiStage.c_str());
|
||||||
return serviceRESTApiUrl;
|
return serviceRESTApiUrl;
|
||||||
}
|
}
|
||||||
@@ -136,16 +153,21 @@ namespace AWSCore
|
|||||||
return getAttributeFunction(iter->second);
|
return getAttributeFunction(iter->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Failed to find resource mapping key: %s.", resourceKeyName.c_str());
|
AZ_Warning(AWSResourceMappingManagerName, false, GetResourceAttributeErrorMessageByStatus(resourceKeyName).c_str());
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AWSResourceMappingManager::Status AWSResourceMappingManager::GetStatus() const
|
||||||
|
{
|
||||||
|
return m_status;
|
||||||
|
}
|
||||||
|
|
||||||
void AWSResourceMappingManager::ParseJsonDocument(const rapidjson::Document& jsonDocument)
|
void AWSResourceMappingManager::ParseJsonDocument(const rapidjson::Document& jsonDocument)
|
||||||
{
|
{
|
||||||
m_defaultAccountId = jsonDocument.FindMember(RESOURCE_MAPPING_ACCOUNTID_KEYNAME)->value.GetString();
|
m_defaultAccountId = jsonDocument.FindMember(ResourceMappingAccountIdKeyName)->value.GetString();
|
||||||
m_defaultRegion = jsonDocument.FindMember(RESOURCE_MAPPING_REGION_KEYNAME)->value.GetString();
|
m_defaultRegion = jsonDocument.FindMember(ResourceMappingRegionKeyName)->value.GetString();
|
||||||
|
|
||||||
auto resourceMappings = jsonDocument.FindMember(RESOURCE_MAPPING_RESOURCES_KEYNAME)->value.GetObject();
|
auto resourceMappings = jsonDocument.FindMember(ResourceMappingResourcesKeyName)->value.GetObject();
|
||||||
for (auto mappingIter = resourceMappings.MemberBegin(); mappingIter != resourceMappings.MemberEnd(); mappingIter++)
|
for (auto mappingIter = resourceMappings.MemberBegin(); mappingIter != resourceMappings.MemberEnd(); mappingIter++)
|
||||||
{
|
{
|
||||||
auto mappingValue = mappingIter->value.GetObject();
|
auto mappingValue = mappingIter->value.GetObject();
|
||||||
@@ -162,16 +184,16 @@ namespace AWSCore
|
|||||||
const JsonObject& jsonObject)
|
const JsonObject& jsonObject)
|
||||||
{
|
{
|
||||||
AWSResourceMappingAttributes attributes;
|
AWSResourceMappingAttributes attributes;
|
||||||
if (jsonObject.HasMember(RESOURCE_MAPPING_ACCOUNTID_KEYNAME))
|
if (jsonObject.HasMember(ResourceMappingAccountIdKeyName))
|
||||||
{
|
{
|
||||||
attributes.resourceAccountId = jsonObject.FindMember(RESOURCE_MAPPING_ACCOUNTID_KEYNAME)->value.GetString();
|
attributes.resourceAccountId = jsonObject.FindMember(ResourceMappingAccountIdKeyName)->value.GetString();
|
||||||
}
|
}
|
||||||
attributes.resourceNameId = jsonObject.FindMember(RESOURCE_MAPPING_NAMEID_KEYNAME)->value.GetString();
|
attributes.resourceNameId = jsonObject.FindMember(ResourceMappingNameIdKeyName)->value.GetString();
|
||||||
if (jsonObject.HasMember(RESOURCE_MAPPING_REGION_KEYNAME))
|
if (jsonObject.HasMember(ResourceMappingRegionKeyName))
|
||||||
{
|
{
|
||||||
attributes.resourceRegion = jsonObject.FindMember(RESOURCE_MAPPING_REGION_KEYNAME)->value.GetString();
|
attributes.resourceRegion = jsonObject.FindMember(ResourceMappingRegionKeyName)->value.GetString();
|
||||||
}
|
}
|
||||||
attributes.resourceType = jsonObject.FindMember(RESOURCE_MAPPING_TYPE_KEYNAME)->value.GetString();
|
attributes.resourceType = jsonObject.FindMember(ResourceMappingTypeKeyName)->value.GetString();
|
||||||
return attributes;
|
return attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +210,7 @@ namespace AWSCore
|
|||||||
AWSCoreInternalRequestBus::BroadcastResult(configJsonPath, &AWSCoreInternalRequests::GetResourceMappingConfigFilePath);
|
AWSCoreInternalRequestBus::BroadcastResult(configJsonPath, &AWSCoreInternalRequests::GetResourceMappingConfigFilePath);
|
||||||
if (configJsonPath.empty())
|
if (configJsonPath.empty())
|
||||||
{
|
{
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Failed to get resource mapping config file path.");
|
AZ_Warning(AWSResourceMappingManagerName, false, ResourceMappingFileInvalidPathErrorMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,20 +223,26 @@ namespace AWSCore
|
|||||||
if (!ValidateJsonDocumentAgainstSchema(jsonDocument))
|
if (!ValidateJsonDocumentAgainstSchema(jsonDocument))
|
||||||
{
|
{
|
||||||
// Failed to satisfy the validation against json schema
|
// Failed to satisfy the validation against json schema
|
||||||
|
m_status = Status::Error;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ParseJsonDocument(jsonDocument);
|
ParseJsonDocument(jsonDocument);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AZ_Warning(
|
m_status = Status::Error;
|
||||||
"AWSResourceMappingManager", false, "Failed to get read resource mapping config file: %s\n Error: %s",
|
AZ_Warning(AWSResourceMappingManagerName, false,
|
||||||
configJsonPath.c_str(), readJsonOutcome.GetError().c_str());
|
ResourceMappingFileInvalidJsonFormatErrorMessage, readJsonOutcome.GetError().c_str());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resource mapping config file gets loaded successfully
|
||||||
|
m_status = Status::Ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AWSResourceMappingManager::ResetResourceMappingsData()
|
void AWSResourceMappingManager::ResetResourceMappingsData()
|
||||||
{
|
{
|
||||||
|
m_status = Status::NotLoaded;
|
||||||
m_defaultAccountId = "";
|
m_defaultAccountId = "";
|
||||||
m_defaultRegion = "";
|
m_defaultRegion = "";
|
||||||
m_resourceMappings.clear();
|
m_resourceMappings.clear();
|
||||||
@@ -223,9 +251,9 @@ namespace AWSCore
|
|||||||
bool AWSResourceMappingManager::ValidateJsonDocumentAgainstSchema(const rapidjson::Document& jsonDocument)
|
bool AWSResourceMappingManager::ValidateJsonDocumentAgainstSchema(const rapidjson::Document& jsonDocument)
|
||||||
{
|
{
|
||||||
rapidjson::Document jsonSchemaDocument;
|
rapidjson::Document jsonSchemaDocument;
|
||||||
if (jsonSchemaDocument.Parse(RESOURCE_MAPPING_JSON_SCHEMA).HasParseError())
|
if (jsonSchemaDocument.Parse(ResourceMappingJsonSchema).HasParseError())
|
||||||
{
|
{
|
||||||
AZ_Error("AWSResourceMappingManager", false, "Invalid resource mapping json schema.");
|
AZ_Error(AWSResourceMappingManagerName, false, ResourceMappingFileInvalidSchemaErrorMessage);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,12 +263,10 @@ namespace AWSCore
|
|||||||
if (!jsonDocument.Accept(validator))
|
if (!jsonDocument.Accept(validator))
|
||||||
{
|
{
|
||||||
rapidjson::StringBuffer error;
|
rapidjson::StringBuffer error;
|
||||||
validator.GetInvalidSchemaPointer().StringifyUriFragment(error);
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(error);
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Failed to load config file, invalid schema: %s.", error.GetString());
|
validator.GetError().Accept(writer);
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Failed to load config file, invalid keyword: %s.", validator.GetInvalidSchemaKeyword());
|
AZ_Warning(AWSResourceMappingManagerName, false, ResourceMappingFileInvalidContentErrorMessage, error.GetString());
|
||||||
error.Clear();
|
|
||||||
validator.GetInvalidDocumentPointer().StringifyUriFragment(error);
|
|
||||||
AZ_Warning("AWSResourceMappingManager", false, "Failed to load config file, invalid document: %s.", error.GetString());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ namespace AWSCore
|
|||||||
namespace AWSResourceMappingUtils
|
namespace AWSResourceMappingUtils
|
||||||
{
|
{
|
||||||
// https://docs.aws.amazon.com/general/latest/gr/apigateway.html
|
// https://docs.aws.amazon.com/general/latest/gr/apigateway.html
|
||||||
static constexpr char RESTAPI_URL_FORMAT[] = "https://%s.execute-api.%s.amazonaws.com/%s";
|
static constexpr char RESTApiUrlFormat[] = "https://%s.execute-api.%s.amazonaws.com/%s";
|
||||||
static constexpr char RESTAPI_CHINA_URL_FORMAT[] = "https://%s.execute-api.%s.amazonaws.com.cn/%s";
|
static constexpr char RESTApiChinaUrlFormat[] = "https://%s.execute-api.%s.amazonaws.com.cn/%s";
|
||||||
|
|
||||||
AZStd::string FormatRESTApiUrl(
|
AZStd::string FormatRESTApiUrl(
|
||||||
const AZStd::string& restApiId, const AZStd::string& restApiRegion, const AZStd::string& restApiStage)
|
const AZStd::string& restApiId, const AZStd::string& restApiRegion, const AZStd::string& restApiStage)
|
||||||
@@ -27,14 +27,14 @@ namespace AWSCore
|
|||||||
// https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-api.html
|
// https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-api.html
|
||||||
if (!restApiId.empty() && !restApiRegion.empty() && !restApiStage.empty())
|
if (!restApiId.empty() && !restApiRegion.empty() && !restApiStage.empty())
|
||||||
{
|
{
|
||||||
if (restApiRegion.rfind(AWS_CHINA_REGION_PREFIX, 0) == 0)
|
if (restApiRegion.rfind(AWSChinaRegionPrefix, 0) == 0)
|
||||||
{
|
{
|
||||||
return AZStd::string::format(RESTAPI_CHINA_URL_FORMAT,
|
return AZStd::string::format(RESTApiChinaUrlFormat,
|
||||||
restApiId.c_str(), restApiRegion.c_str(), restApiStage.c_str());
|
restApiId.c_str(), restApiRegion.c_str(), restApiStage.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return AZStd::string::format(RESTAPI_URL_FORMAT,
|
return AZStd::string::format(RESTApiUrlFormat,
|
||||||
restApiId.c_str(), restApiRegion.c_str(), restApiStage.c_str());
|
restApiId.c_str(), restApiRegion.c_str(), restApiStage.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public:
|
|||||||
void CreateTestSetRegFile(const AZStd::string& setregContent)
|
void CreateTestSetRegFile(const AZStd::string& setregContent)
|
||||||
{
|
{
|
||||||
m_normalizedSetRegFilePath = AZStd::string::format("%s/%s",
|
m_normalizedSetRegFilePath = AZStd::string::format("%s/%s",
|
||||||
m_normalizedSetRegFolderPath.c_str(), AWSCore::AWSCoreConfiguration::AWSCORE_CONFIGURATION_FILENAME);
|
m_normalizedSetRegFolderPath.c_str(), AWSCore::AWSCoreConfiguration::AWSCoreConfigurationFileName);
|
||||||
AzFramework::StringFunc::Path::Normalize(m_normalizedSetRegFilePath);
|
AzFramework::StringFunc::Path::Normalize(m_normalizedSetRegFilePath);
|
||||||
CreateTestFile(m_normalizedSetRegFilePath, setregContent);
|
CreateTestFile(m_normalizedSetRegFilePath, setregContent);
|
||||||
}
|
}
|
||||||
@@ -177,7 +177,7 @@ TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadValidSettingsRegistryAf
|
|||||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||||
auto actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
auto actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
||||||
EXPECT_TRUE(actualConfigFilePath.empty());
|
EXPECT_TRUE(actualConfigFilePath.empty());
|
||||||
EXPECT_TRUE(actualProfileName == AWSCoreConfiguration::AWSCORE_DEFAULT_PROFILE_NAME);
|
EXPECT_TRUE(actualProfileName == AWSCoreConfiguration::AWSCoreDefaultProfileName);
|
||||||
|
|
||||||
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
||||||
m_awsCoreConfiguration->ReloadConfiguration();
|
m_awsCoreConfiguration->ReloadConfiguration();
|
||||||
@@ -185,5 +185,24 @@ TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadValidSettingsRegistryAf
|
|||||||
actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||||
actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
||||||
EXPECT_FALSE(actualConfigFilePath.empty());
|
EXPECT_FALSE(actualConfigFilePath.empty());
|
||||||
EXPECT_TRUE(actualProfileName != AWSCoreConfiguration::AWSCORE_DEFAULT_PROFILE_NAME);
|
EXPECT_TRUE(actualProfileName != AWSCoreConfiguration::AWSCoreDefaultProfileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadInvalidSettingsRegistryAfterValidOne_ReturnEmptyConfigFilePath)
|
||||||
|
{
|
||||||
|
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
||||||
|
m_awsCoreConfiguration->InitConfig();
|
||||||
|
|
||||||
|
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||||
|
auto actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
||||||
|
EXPECT_FALSE(actualConfigFilePath.empty());
|
||||||
|
EXPECT_TRUE(actualProfileName != AWSCoreConfiguration::AWSCoreDefaultProfileName);
|
||||||
|
|
||||||
|
CreateTestSetRegFile(TEST_INVALID_RESOURCE_MAPPING_SETREG);
|
||||||
|
m_awsCoreConfiguration->ReloadConfiguration();
|
||||||
|
|
||||||
|
actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||||
|
actualProfileName = m_awsCoreConfiguration->GetProfileName();
|
||||||
|
EXPECT_TRUE(actualConfigFilePath.empty());
|
||||||
|
EXPECT_TRUE(actualProfileName == AWSCoreConfiguration::AWSCoreDefaultProfileName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public:
|
|||||||
"AWSResourceMappingManager", AZ::Uuid::CreateRandom().ToString<AZStd::string>(false, false).c_str());
|
"AWSResourceMappingManager", AZ::Uuid::CreateRandom().ToString<AZStd::string>(false, false).c_str());
|
||||||
AzFramework::StringFunc::Path::Normalize(m_normalizedSourceProjectFolder);
|
AzFramework::StringFunc::Path::Normalize(m_normalizedSourceProjectFolder);
|
||||||
m_normalizedConfigFolderPath = AZStd::string::format("%s/%s/",
|
m_normalizedConfigFolderPath = AZStd::string::format("%s/%s/",
|
||||||
m_normalizedSourceProjectFolder.c_str(), AWSCore::AWSCoreConfiguration::AWSCORE_RESOURCE_MAPPING_CONFIG_FOLDERNAME);
|
m_normalizedSourceProjectFolder.c_str(), AWSCore::AWSCoreConfiguration::AWSCoreResourceMappingConfigFolderName);
|
||||||
AzFramework::StringFunc::Path::Normalize(m_normalizedConfigFolderPath);
|
AzFramework::StringFunc::Path::Normalize(m_normalizedConfigFolderPath);
|
||||||
AWSCoreInternalRequestBus::Handler::BusConnect();
|
AWSCoreInternalRequestBus::Handler::BusConnect();
|
||||||
}
|
}
|
||||||
@@ -178,6 +178,7 @@ TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseInvalidConfigFile_Con
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_TRUE(actualAccountId.empty());
|
EXPECT_TRUE(actualAccountId.empty());
|
||||||
EXPECT_TRUE(actualRegion.empty());
|
EXPECT_TRUE(actualRegion.empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_ConfigDataIsNotEmpty)
|
TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_ConfigDataIsNotEmpty)
|
||||||
@@ -192,6 +193,7 @@ TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_Confi
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_FALSE(actualAccountId.empty());
|
EXPECT_FALSE(actualAccountId.empty());
|
||||||
EXPECT_FALSE(actualRegion.empty());
|
EXPECT_FALSE(actualRegion.empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_ConfigDataIsNotEmptyWithMultithreadCalls)
|
TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_ConfigDataIsNotEmptyWithMultithreadCalls)
|
||||||
@@ -230,11 +232,13 @@ TEST_F(AWSResourceMappingManagerTest, DeactivateManager_AfterActivatingWithValid
|
|||||||
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
||||||
EXPECT_FALSE(actualAccountId.empty());
|
EXPECT_FALSE(actualAccountId.empty());
|
||||||
EXPECT_FALSE(actualRegion.empty());
|
EXPECT_FALSE(actualRegion.empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||||
|
|
||||||
m_resourceMappingManager->DeactivateManager();
|
m_resourceMappingManager->DeactivateManager();
|
||||||
|
|
||||||
EXPECT_TRUE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
EXPECT_TRUE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
||||||
EXPECT_TRUE(m_resourceMappingManager->GetDefaultRegion().empty());
|
EXPECT_TRUE(m_resourceMappingManager->GetDefaultRegion().empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::NotLoaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(AWSResourceMappingManagerTest, GetDefaultAccountId_AfterParsingValidConfigFile_GetExpectedDefaultAccountId)
|
TEST_F(AWSResourceMappingManagerTest, GetDefaultAccountId_AfterParsingValidConfigFile_GetExpectedDefaultAccountId)
|
||||||
@@ -416,6 +420,7 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ParseValidConfigFileAfter
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_TRUE(actualAccountId.empty());
|
EXPECT_TRUE(actualAccountId.empty());
|
||||||
EXPECT_TRUE(actualRegion.empty());
|
EXPECT_TRUE(actualRegion.empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Error);
|
||||||
|
|
||||||
CreateTestConfigFile(TEST_VALID_RESOURCE_MAPPING_CONFIG_FILE);
|
CreateTestConfigFile(TEST_VALID_RESOURCE_MAPPING_CONFIG_FILE);
|
||||||
m_resourceMappingManager->ReloadConfigFile();
|
m_resourceMappingManager->ReloadConfigFile();
|
||||||
@@ -425,6 +430,7 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ParseValidConfigFileAfter
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_FALSE(actualAccountId.empty());
|
EXPECT_FALSE(actualAccountId.empty());
|
||||||
EXPECT_FALSE(actualRegion.empty());
|
EXPECT_FALSE(actualRegion.empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ReloadConfigFileNameAndParseValidConfigFile_ConfigDataGetParsed)
|
TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ReloadConfigFileNameAndParseValidConfigFile_ConfigDataGetParsed)
|
||||||
@@ -435,6 +441,7 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ReloadConfigFileNameAndPa
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_FALSE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
EXPECT_FALSE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
||||||
EXPECT_FALSE(m_resourceMappingManager->GetDefaultRegion().empty());
|
EXPECT_FALSE(m_resourceMappingManager->GetDefaultRegion().empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_MissingSetRegFile_ConfigDataIsNotParsed)
|
TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_MissingSetRegFile_ConfigDataIsNotParsed)
|
||||||
@@ -444,4 +451,5 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_MissingSetRegFile_ConfigD
|
|||||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||||
EXPECT_TRUE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
EXPECT_TRUE(m_resourceMappingManager->GetDefaultAccountId().empty());
|
||||||
EXPECT_TRUE(m_resourceMappingManager->GetDefaultRegion().empty());
|
EXPECT_TRUE(m_resourceMappingManager->GetDefaultRegion().empty());
|
||||||
|
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::NotLoaded);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user