[LYN-4915] [iOS] [Android] awscoreconfiguration.setreg, awsMetricsClientConfigurationsetreg and authenticationProvider.setreg couldn't be loaded when the application starts (#1716)
[LYN-4915] [iOS] [Android] awscoreconfiguration.setreg, awsMetricsClientConfiguration.setreg and authenticationProvider.setreg couldn't be loaded when the application starts
This commit is contained in:
+3744
-3799
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -22,7 +22,7 @@ namespace AWSClientAuth
|
||||
virtual ~AWSCognitoAuthenticationProvider() = default;
|
||||
|
||||
// AuthenticationProviderInterface overrides
|
||||
bool Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry) override;
|
||||
bool Initialize() override;
|
||||
void PasswordGrantSingleFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorConfirmSignInAsync(const AZStd::string& username, const AZStd::string& confirmationCode) override;
|
||||
|
||||
+1
-2
@@ -22,9 +22,8 @@ namespace AWSClientAuth
|
||||
virtual ~AuthenticationProviderInterface() = default;
|
||||
|
||||
//! Extract required settings for the provider from setting registry.
|
||||
//! @param settingsRegistry Passed in initialized settings registry object.
|
||||
//! @return bool True: if provider can parse required settings and validate. False: fails to parse required settings.
|
||||
virtual bool Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry) = 0;
|
||||
virtual bool Initialize() = 0;
|
||||
|
||||
//! Call sign in endpoint for provider password grant flow.
|
||||
//! @param username Username to use to for sign in.
|
||||
|
||||
+2
-4
@@ -29,7 +29,7 @@ namespace AWSClientAuth
|
||||
|
||||
protected:
|
||||
// AuthenticationProviderRequestsBus Interface
|
||||
bool Initialize(const AZStd::vector<ProviderNameEnum>& providerNames, const AZStd::string& settingsRegistryPath) override;
|
||||
bool Initialize(const AZStd::vector<ProviderNameEnum>& providerNames) override;
|
||||
void PasswordGrantSingleFactorSignInAsync(const ProviderNameEnum& providerName, const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorSignInAsync(const ProviderNameEnum& providerName, const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorConfirmSignInAsync(const ProviderNameEnum& providerName, const AZStd::string& username, const AZStd::string& confirmationCode) override;
|
||||
@@ -42,7 +42,7 @@ namespace AWSClientAuth
|
||||
AuthenticationTokens GetAuthenticationTokens(const ProviderNameEnum& providerName) override;
|
||||
|
||||
// AuthenticationProviderScriptCanvasRequest interface
|
||||
bool Initialize(const AZStd::vector<AZStd::string>& providerNames, const AZStd::string& settingsRegistryPath) override;
|
||||
bool Initialize(const AZStd::vector<AZStd::string>& providerNames) override;
|
||||
void PasswordGrantSingleFactorSignInAsync(
|
||||
const AZStd::string& providerName, const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorSignInAsync(
|
||||
@@ -64,8 +64,6 @@ namespace AWSClientAuth
|
||||
bool IsProviderInitialized(const ProviderNameEnum& providerName);
|
||||
void ResetProviders();
|
||||
ProviderNameEnum GetProviderNameEnum(AZStd::string name);
|
||||
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryInterface> m_settingsRegistry;
|
||||
};
|
||||
|
||||
} // namespace AWSClientAuth
|
||||
|
||||
+1
-2
@@ -20,9 +20,8 @@ namespace AWSClientAuth
|
||||
|
||||
//! Parse the settings file for required settings for authentication providers. Instantiate and initialize authentication providers
|
||||
//! @param providerNames List of provider names to instantiate and initialize for Authentication.
|
||||
//! @param settingsRegistryPath Path for the settings registry file to use to configure providers.
|
||||
//! @return bool True: if all providers initialized successfully. False: If any provider fails initialization.
|
||||
virtual bool Initialize(const AZStd::vector<AZStd::string>& providerNames, const AZStd::string& settingsRegistryPath) = 0;
|
||||
virtual bool Initialize(const AZStd::vector<AZStd::string>& providerNames) = 0;
|
||||
|
||||
//! Checks if user is signed in.
|
||||
//! If access tokens are available and not expired.
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ namespace AWSClientAuth
|
||||
virtual ~GoogleAuthenticationProvider();
|
||||
|
||||
// AuthenticationProviderInterface overrides
|
||||
bool Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry) override;
|
||||
bool Initialize() override;
|
||||
void PasswordGrantSingleFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorConfirmSignInAsync(const AZStd::string& username, const AZStd::string& confirmationCode) override;
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace AWSClientAuth
|
||||
virtual ~LWAAuthenticationProvider();
|
||||
|
||||
// AuthenticationProviderInterface overrides
|
||||
bool Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry) override;
|
||||
bool Initialize() override;
|
||||
void PasswordGrantSingleFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorSignInAsync(const AZStd::string& username, const AZStd::string& password) override;
|
||||
void PasswordGrantMultiFactorConfirmSignInAsync(const AZStd::string& username, const AZStd::string& confirmationCode) override;
|
||||
|
||||
@@ -19,9 +19,8 @@ namespace AWSClientAuth
|
||||
|
||||
//! Parse the settings file for required settings for authentication providers. Instantiate and initialize authentication providers
|
||||
//! @param providerNames List of provider names to instantiate and initialize for Authentication.
|
||||
//! @param settingsRegistryPath Path for the settings registry file to use to configure providers.
|
||||
//! @return bool True: if all providers initialized successfully. False: If any provider fails initialization.
|
||||
virtual bool Initialize(const AZStd::vector<ProviderNameEnum>& providerNames, const AZStd::string& settingsRegistryPath) = 0;
|
||||
virtual bool Initialize(const AZStd::vector<ProviderNameEnum>& providerNames) = 0;
|
||||
|
||||
//! Checks if user is signed in.
|
||||
//! If access tokens are available and not expired.
|
||||
|
||||
@@ -30,9 +30,8 @@ namespace AWSClientAuth
|
||||
constexpr char CognitoRefreshTokenAuthParamKey[] = "REFRESH_TOKEN";
|
||||
constexpr char CognitoSmsMfaCodeKey[] = "SMS_MFA_CODE";
|
||||
|
||||
bool AWSCognitoAuthenticationProvider::Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry)
|
||||
bool AWSCognitoAuthenticationProvider::Initialize()
|
||||
{
|
||||
AZ_UNUSED(settingsRegistry);
|
||||
AWSCore::AWSResourceMappingRequestBus::BroadcastResult(
|
||||
m_cognitoAppClientId, &AWSCore::AWSResourceMappingRequests::GetResourceNameId, CognitoAppClientIdResourceMappingKey);
|
||||
AZ_Warning("AWSCognitoAuthenticationProvider", !m_cognitoAppClientId.empty(), "Missing Cognito App Client Id from resource mappings. Calls to Cognito will fail.");
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
#include <AzCore/std/smart_ptr/make_shared.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/IO/FileIO.h>
|
||||
|
||||
#include <Authentication/AuthenticationProviderTypes.h>
|
||||
@@ -27,37 +26,21 @@ namespace AWSClientAuth
|
||||
AuthenticationProviderManager::~AuthenticationProviderManager()
|
||||
{
|
||||
ResetProviders();
|
||||
m_settingsRegistry.reset();
|
||||
AuthenticationProviderScriptCanvasRequestBus::Handler::BusDisconnect();
|
||||
AuthenticationProviderRequestBus::Handler::BusDisconnect();
|
||||
AZ::Interface<IAuthenticationProviderRequests>::Unregister(this);
|
||||
}
|
||||
|
||||
bool AuthenticationProviderManager::Initialize(const AZStd::vector<ProviderNameEnum>& providerNames, const AZStd::string& settingsRegistryPath)
|
||||
bool AuthenticationProviderManager::Initialize(const AZStd::vector<ProviderNameEnum>& providerNames)
|
||||
{
|
||||
ResetProviders();
|
||||
AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetInstance();
|
||||
AZ_Assert(fileIO, "File IO is not initialized.");
|
||||
|
||||
m_settingsRegistry.reset();
|
||||
m_settingsRegistry = AZStd::make_shared<AZ::SettingsRegistryImpl>();
|
||||
|
||||
AZStd::array<char, AZ::IO::MaxPathLength> resolvedPath{};
|
||||
fileIO->ResolvePath(settingsRegistryPath.data(), resolvedPath.data(), resolvedPath.size());
|
||||
|
||||
|
||||
if (!m_settingsRegistry->MergeSettingsFile(resolvedPath.data(), AZ::SettingsRegistryInterface::Format::JsonMergePatch))
|
||||
{
|
||||
AZ_Error("AuthenticationProviderManager", false, "Error merging settings registry for path: %s", resolvedPath.data());
|
||||
return false;
|
||||
}
|
||||
|
||||
bool initializeSuccess = true;
|
||||
|
||||
for (auto providerName : providerNames)
|
||||
{
|
||||
m_authenticationProvidersMap[providerName] = CreateAuthenticationProviderObject(providerName);
|
||||
initializeSuccess = initializeSuccess && m_authenticationProvidersMap[providerName]->Initialize(m_settingsRegistry);
|
||||
initializeSuccess = initializeSuccess && m_authenticationProvidersMap[providerName]->Initialize();
|
||||
}
|
||||
|
||||
return initializeSuccess;
|
||||
@@ -199,14 +182,14 @@ namespace AWSClientAuth
|
||||
}
|
||||
|
||||
bool AuthenticationProviderManager::Initialize(
|
||||
const AZStd::vector<AZStd::string>& providerNames, const AZStd::string& settingsRegistryPath)
|
||||
const AZStd::vector<AZStd::string>& providerNames)
|
||||
{
|
||||
AZStd::vector<ProviderNameEnum> providerNamesEnum;
|
||||
for (auto name : providerNames)
|
||||
{
|
||||
providerNamesEnum.push_back(GetProviderNameEnum(name));
|
||||
}
|
||||
return Initialize(providerNamesEnum, settingsRegistryPath);
|
||||
return Initialize(providerNamesEnum);
|
||||
}
|
||||
|
||||
void AuthenticationProviderManager::PasswordGrantSingleFactorSignInAsync(const AZStd::string& providerName, const AZStd::string& username, const AZStd::string& password)
|
||||
|
||||
@@ -30,9 +30,16 @@ namespace AWSClientAuth
|
||||
m_settings.reset();
|
||||
}
|
||||
|
||||
bool GoogleAuthenticationProvider::Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry)
|
||||
bool GoogleAuthenticationProvider::Initialize()
|
||||
{
|
||||
if (!settingsRegistry.lock()->GetObject(m_settings.get(), azrtti_typeid(m_settings.get()), GoogleSettingsPath))
|
||||
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (!settingsRegistry)
|
||||
{
|
||||
AZ_Warning("AWSCognitoAuthenticationProvider", false, "Failed to load the setting registry");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!settingsRegistry->GetObject(m_settings.get(), azrtti_typeid(m_settings.get()), GoogleSettingsPath))
|
||||
{
|
||||
AZ_Warning("AWSCognitoAuthenticationProvider", false, "Failed to get Google settings object for path %s", GoogleSettingsPath);
|
||||
return false;
|
||||
|
||||
@@ -29,9 +29,16 @@ namespace AWSClientAuth
|
||||
m_settings.reset();
|
||||
}
|
||||
|
||||
bool LWAAuthenticationProvider::Initialize(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry)
|
||||
bool LWAAuthenticationProvider::Initialize()
|
||||
{
|
||||
if (!settingsRegistry.lock()->GetObject(m_settings.get(), azrtti_typeid(m_settings.get()), LwaSettingsPath))
|
||||
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (!settingsRegistry)
|
||||
{
|
||||
AZ_Warning("AWSCognitoAuthenticationProvider", false, "Failed to load the setting registry");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!settingsRegistry->GetObject(m_settings.get(), azrtti_typeid(m_settings.get()), LwaSettingsPath))
|
||||
{
|
||||
AZ_Warning("AWSCognitoAuthenticationProvider", false, "Failed to get login with Amazon settings object for path %s", LwaSettingsPath);
|
||||
return false;
|
||||
|
||||
@@ -351,12 +351,12 @@ namespace AWSClientAuthUnitTest
|
||||
|
||||
AuthenticationProviderMock()
|
||||
{
|
||||
ON_CALL(*this, Initialize(testing::_)).WillByDefault(testing::Return(true));
|
||||
ON_CALL(*this, Initialize()).WillByDefault(testing::Return(true));
|
||||
}
|
||||
|
||||
virtual ~AuthenticationProviderMock() = default;
|
||||
|
||||
MOCK_METHOD1(Initialize, bool(AZStd::weak_ptr<AZ::SettingsRegistryInterface> settingsRegistry));
|
||||
MOCK_METHOD0(Initialize, bool());
|
||||
MOCK_METHOD2(PasswordGrantSingleFactorSignInAsync, void(const AZStd::string& username, const AZStd::string& password));
|
||||
MOCK_METHOD2(PasswordGrantMultiFactorSignInAsync, void(const AZStd::string& username, const AZStd::string& password));
|
||||
MOCK_METHOD2(PasswordGrantMultiFactorConfirmSignInAsync, void(const AZStd::string& username, const AZStd::string& confirmationCode));
|
||||
@@ -495,6 +495,8 @@ namespace AWSClientAuthUnitTest
|
||||
m_settingsRegistry->SetContext(m_serializeContext.get());
|
||||
m_settingsRegistry->SetContext(m_registrationContext.get());
|
||||
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
|
||||
AZ::ComponentApplicationBus::Handler::BusConnect();
|
||||
AZ::Interface<AZ::ComponentApplicationRequests>::Register(this);
|
||||
|
||||
@@ -555,6 +557,8 @@ namespace AWSClientAuthUnitTest
|
||||
AWSClientAuth::AWSClientAuthRequestBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
|
||||
m_testFolder.reset();
|
||||
m_settingsRegistry.reset();
|
||||
m_serializeContext.reset();
|
||||
@@ -660,8 +664,5 @@ namespace AWSClientAuthUnitTest
|
||||
m_testFolderCreated = true;
|
||||
return path;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
+3
-3
@@ -31,7 +31,7 @@ class AWSCognitoAuthenticationProviderTest
|
||||
{
|
||||
AWSClientAuthUnitTest::AWSClientAuthGemAllocatorFixture::SetUp();
|
||||
|
||||
m_cognitoAuthenticationProviderMock.Initialize(m_settingsRegistry);
|
||||
m_cognitoAuthenticationProviderMock.Initialize();
|
||||
|
||||
AWSCore::AWSCoreRequestBus::Handler::BusConnect();
|
||||
|
||||
@@ -98,7 +98,7 @@ TEST_F(AWSCognitoAuthenticationProviderTest, Initialize_Success)
|
||||
{
|
||||
EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetResourceNameId(testing::_)).Times(1);
|
||||
AWSClientAuthUnitTest::AWSCognitoAuthenticationProviderrLocalMock mock;
|
||||
ASSERT_TRUE(mock.Initialize(m_settingsRegistry));
|
||||
ASSERT_TRUE(mock.Initialize());
|
||||
ASSERT_EQ(mock.m_cognitoAppClientId, AWSClientAuthUnitTest::TEST_RESOURCE_NAME_ID);
|
||||
}
|
||||
|
||||
@@ -260,5 +260,5 @@ TEST_F(AWSCognitoAuthenticationProviderTest, Initialize_Fail_EmptyResourceName)
|
||||
{
|
||||
AWSClientAuthUnitTest::AWSCognitoAuthenticationProviderrLocalMock mock;
|
||||
EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetResourceNameId(testing::_)).Times(1).WillOnce(testing::Return(""));
|
||||
ASSERT_FALSE(mock.Initialize(m_settingsRegistry));
|
||||
ASSERT_FALSE(mock.Initialize());
|
||||
}
|
||||
|
||||
+15
-20
@@ -28,7 +28,8 @@ protected:
|
||||
AWSClientAuth::LWAProviderSetting::Reflect(*m_serializeContext);
|
||||
AWSClientAuth::GoogleProviderSetting::Reflect(*m_serializeContext);
|
||||
|
||||
m_settingspath = AZStd::string::format("%s/%s/authenticationProvider.setreg",
|
||||
AZStd::string settingspath = AZStd::string::format(
|
||||
"%s/%s/authenticationProvider.setreg",
|
||||
m_testFolder->c_str(), AZ::SettingsRegistryInterface::RegistryFolder);
|
||||
CreateTestFile("authenticationProvider.setreg"
|
||||
, R"({
|
||||
@@ -54,6 +55,7 @@ protected:
|
||||
}
|
||||
}
|
||||
})");
|
||||
m_settingsRegistry->MergeSettingsFile(settingspath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
|
||||
m_mockController = AZStd::make_unique<testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderManagerLocalMock>>();
|
||||
}
|
||||
@@ -66,20 +68,19 @@ protected:
|
||||
|
||||
public:
|
||||
AZStd::unique_ptr<testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderManagerLocalMock>> m_mockController;
|
||||
AZStd::string m_settingspath;
|
||||
AZStd::vector<AZStd::string> m_enabledProviderNames { AWSClientAuth::ProvideNameEnumStringAWSCognitoIDP,
|
||||
AWSClientAuth::ProvideNameEnumStringLoginWithAmazon, AWSClientAuth::ProvideNameEnumStringGoogle};
|
||||
};
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, Initialize_Success)
|
||||
{
|
||||
ASSERT_TRUE(m_mockController->Initialize(m_enabledProviderNames, m_settingspath));
|
||||
ASSERT_TRUE(m_mockController->Initialize(m_enabledProviderNames));
|
||||
ASSERT_TRUE(m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP] != nullptr);
|
||||
}
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantSingleFactorSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
EXPECT_CALL(*cognitoProviderMock, PasswordGrantSingleFactorSignInAsync(testing::_, testing::_)).Times(1);
|
||||
@@ -96,7 +97,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantSingleFactorS
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantMultiFactorSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -111,7 +112,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantMultiFactorSi
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantMultiFactorConfirmSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -126,7 +127,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, PasswordGrantMultiFactorCo
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, DeviceCodeGrantSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -142,7 +143,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, DeviceCodeGrantSignInAsync
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, DeviceCodeGrantConfirmSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -157,7 +158,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, DeviceCodeGrantConfirmSign
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, RefreshTokenAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -172,7 +173,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, RefreshTokenAsync_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokensWithRefreshAsync_ValidToken_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -188,7 +189,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokensWithRefreshAsync_
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokensWithRefreshAsync_InvalidToken_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
AWSClientAuth::AuthenticationTokens tokens;
|
||||
EXPECT_CALL(*cognitoProviderMock, GetAuthenticationTokens()).Times(1).WillOnce(testing::Return(tokens));
|
||||
@@ -209,7 +210,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokensWithRefreshAsync_
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokens_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -224,7 +225,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, GetTokens_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, IsSignedIn_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -238,7 +239,7 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, IsSignedIn_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, SignOut_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* googleProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::Google].get();
|
||||
|
||||
EXPECT_CALL(*googleProviderMock, SignOut()).Times(1);
|
||||
@@ -248,9 +249,3 @@ TEST_F(AuthenticationProviderManagerScriptCanvasTest, SignOut_Success)
|
||||
googleProviderMock = nullptr;
|
||||
}
|
||||
|
||||
TEST_F(AuthenticationProviderManagerScriptCanvasTest, Initialize_Fail_InvalidPath)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
ASSERT_FALSE(m_mockController->Initialize(m_enabledProviderNames, ""));
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(2);
|
||||
}
|
||||
|
||||
+15
-20
@@ -27,7 +27,8 @@ protected:
|
||||
AWSClientAuth::LWAProviderSetting::Reflect(*m_serializeContext);
|
||||
AWSClientAuth::GoogleProviderSetting::Reflect(*m_serializeContext);
|
||||
|
||||
m_settingspath = AZStd::string::format("%s/%s/authenticationProvider.setreg",
|
||||
AZStd::string settingspath = AZStd::string::format(
|
||||
"%s/%s/authenticationProvider.setreg",
|
||||
m_testFolder->c_str(), AZ::SettingsRegistryInterface::RegistryFolder);
|
||||
CreateTestFile("authenticationProvider.setreg"
|
||||
, R"({
|
||||
@@ -53,6 +54,7 @@ protected:
|
||||
}
|
||||
}
|
||||
})");
|
||||
m_settingsRegistry->MergeSettingsFile(settingspath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
|
||||
m_mockController = AZStd::make_unique<testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderManagerLocalMock>>();
|
||||
}
|
||||
@@ -65,20 +67,19 @@ protected:
|
||||
|
||||
public:
|
||||
AZStd::unique_ptr<testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderManagerLocalMock>> m_mockController;
|
||||
AZStd::string m_settingspath;
|
||||
AZStd::vector<AWSClientAuth::ProviderNameEnum> m_enabledProviderNames {AWSClientAuth::ProviderNameEnum::AWSCognitoIDP,
|
||||
AWSClientAuth::ProviderNameEnum::LoginWithAmazon, AWSClientAuth::ProviderNameEnum::Google};
|
||||
};
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, Initialize_Success)
|
||||
{
|
||||
ASSERT_TRUE(m_mockController->Initialize(m_enabledProviderNames, m_settingspath));
|
||||
ASSERT_TRUE(m_mockController->Initialize(m_enabledProviderNames));
|
||||
ASSERT_TRUE(m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP] != nullptr);
|
||||
}
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, PasswordGrantSingleFactorSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
EXPECT_CALL(*cognitoProviderMock, PasswordGrantSingleFactorSignInAsync(testing::_, testing::_)).Times(1);
|
||||
@@ -95,7 +96,7 @@ TEST_F(AuthenticationProviderManagerTest, PasswordGrantSingleFactorSignInAsync_F
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, PasswordGrantMultiFactorSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -110,7 +111,7 @@ TEST_F(AuthenticationProviderManagerTest, PasswordGrantMultiFactorSignInAsync_Su
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, PasswordGrantMultiFactorConfirmSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -125,7 +126,7 @@ TEST_F(AuthenticationProviderManagerTest, PasswordGrantMultiFactorConfirmSignInA
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, DeviceCodeGrantSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -141,7 +142,7 @@ TEST_F(AuthenticationProviderManagerTest, DeviceCodeGrantSignInAsync_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, DeviceCodeGrantConfirmSignInAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -156,7 +157,7 @@ TEST_F(AuthenticationProviderManagerTest, DeviceCodeGrantConfirmSignInAsync_Succ
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, RefreshTokenAsync_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
|
||||
|
||||
@@ -171,7 +172,7 @@ TEST_F(AuthenticationProviderManagerTest, RefreshTokenAsync_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, GetTokensWithRefreshAsync_ValidToken_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -187,7 +188,7 @@ TEST_F(AuthenticationProviderManagerTest, GetTokensWithRefreshAsync_ValidToken_S
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, GetTokensWithRefreshAsync_InvalidToken_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
AWSClientAuth::AuthenticationTokens tokens;
|
||||
EXPECT_CALL(*cognitoProviderMock, GetAuthenticationTokens()).Times(1).WillOnce(testing::Return(tokens));
|
||||
@@ -208,7 +209,7 @@ TEST_F(AuthenticationProviderManagerTest, GetTokensWithRefreshAsync_NotInitializ
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, GetTokens_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -223,7 +224,7 @@ TEST_F(AuthenticationProviderManagerTest, GetTokens_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, IsSignedIn_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
|
||||
|
||||
AWSClientAuth::AuthenticationTokens tokens(
|
||||
@@ -237,7 +238,7 @@ TEST_F(AuthenticationProviderManagerTest, IsSignedIn_Success)
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, SignOut_Success)
|
||||
{
|
||||
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
|
||||
m_mockController->Initialize(m_enabledProviderNames);
|
||||
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>* googleProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::Google].get();
|
||||
|
||||
EXPECT_CALL(*googleProviderMock, SignOut()).Times(1);
|
||||
@@ -247,9 +248,3 @@ TEST_F(AuthenticationProviderManagerTest, SignOut_Success)
|
||||
googleProviderMock = nullptr;
|
||||
}
|
||||
|
||||
TEST_F(AuthenticationProviderManagerTest, Initialize_Fail_InvalidPath)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
ASSERT_FALSE(m_mockController->Initialize(m_enabledProviderNames, ""));
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(2);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class GoogleAuthenticationProviderTest
|
||||
})");
|
||||
m_settingsRegistry->MergeSettingsFile(path, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
|
||||
m_googleAuthenticationProviderLocalMock.Initialize(m_settingsRegistry);
|
||||
m_googleAuthenticationProviderLocalMock.Initialize();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
TEST_F(GoogleAuthenticationProviderTest, Initialize_Success)
|
||||
{
|
||||
AWSClientAuthUnitTest::GoogleAuthenticationProviderLocalMock mock;
|
||||
ASSERT_TRUE(mock.Initialize(m_settingsRegistry));
|
||||
ASSERT_TRUE(mock.Initialize());
|
||||
ASSERT_EQ(mock.m_settings->m_appClientId, "TestGoogleClientId");
|
||||
}
|
||||
|
||||
@@ -117,14 +117,19 @@ TEST_F(GoogleAuthenticationProviderTest, RefreshTokensAsync_Fail_RequestHttpErro
|
||||
|
||||
TEST_F(GoogleAuthenticationProviderTest, Initialize_Fail_EmptyRegistry)
|
||||
{
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryImpl> registry = AZStd::make_shared<AZ::SettingsRegistryImpl>();
|
||||
registry->SetContext(m_serializeContext.get());
|
||||
AZ::SettingsRegistry::Register(registry.get());
|
||||
|
||||
AWSClientAuthUnitTest::GoogleAuthenticationProviderLocalMock mock;
|
||||
ASSERT_FALSE(mock.Initialize(registry));
|
||||
ASSERT_FALSE(mock.Initialize());
|
||||
ASSERT_EQ(mock.m_settings->m_appClientId, "");
|
||||
AZ::SettingsRegistry::Unregister(registry.get());
|
||||
registry.reset();
|
||||
|
||||
// Restore
|
||||
mock.Initialize(m_settingsRegistry);
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
mock.Initialize();
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class LWAAuthenticationProviderTest
|
||||
})");
|
||||
m_settingsRegistry->MergeSettingsFile(path, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
|
||||
m_lwaAuthenticationProviderLocalMock.Initialize(m_settingsRegistry);
|
||||
m_lwaAuthenticationProviderLocalMock.Initialize();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
TEST_F(LWAAuthenticationProviderTest, Initialize_Success)
|
||||
{
|
||||
AWSClientAuthUnitTest::LWAAuthenticationProviderLocalMock mock;
|
||||
ASSERT_TRUE(mock.Initialize(m_settingsRegistry));
|
||||
ASSERT_TRUE(mock.Initialize());
|
||||
ASSERT_EQ(mock.m_settings->m_appClientId, "TestLWAClientId");
|
||||
}
|
||||
|
||||
@@ -117,14 +117,19 @@ TEST_F(LWAAuthenticationProviderTest, RefreshTokensAsync_Fail_RequestHttpError)
|
||||
|
||||
TEST_F(LWAAuthenticationProviderTest, Initialize_Fail_EmptyRegistry)
|
||||
{
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryImpl> registry = AZStd::make_shared<AZ::SettingsRegistryImpl>();
|
||||
registry->SetContext(m_serializeContext.get());
|
||||
AZ::SettingsRegistry::Register(registry.get());
|
||||
|
||||
AWSClientAuthUnitTest::LWAAuthenticationProviderLocalMock mock;
|
||||
ASSERT_FALSE(mock.Initialize(registry));
|
||||
ASSERT_FALSE(mock.Initialize());
|
||||
ASSERT_EQ(mock.m_settings->m_appClientId, "");
|
||||
AZ::SettingsRegistry::Unregister(registry.get());
|
||||
registry.reset();
|
||||
|
||||
// Restore
|
||||
mock.Initialize(m_settingsRegistry);
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
mock.Initialize();
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
|
||||
#include <AWSCoreInternalBus.h>
|
||||
@@ -35,8 +34,10 @@ namespace AWSCore
|
||||
"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[] =
|
||||
static constexpr const char SettingsRegistryFileLoadFailureErrorMessage[] =
|
||||
"Failed to load AWSCore settings registry file.";
|
||||
static constexpr const char GlobalSettingsRegistryLoadFailureErrorMessage[] =
|
||||
"Failed to load AWSCore configurations from global settings registry.";
|
||||
|
||||
|
||||
AWSCoreConfiguration();
|
||||
@@ -53,9 +54,6 @@ namespace AWSCore
|
||||
void ReloadConfiguration() override;
|
||||
|
||||
private:
|
||||
// Initialize settings registry reference by loading for project .setreg file
|
||||
void InitSettingsRegistry();
|
||||
|
||||
// Initialize source project folder path
|
||||
void InitSourceProjectFolderPath();
|
||||
|
||||
@@ -66,7 +64,6 @@ namespace AWSCore
|
||||
void ResetSettingsRegistryData();
|
||||
|
||||
AZStd::string m_sourceProjectFolder;
|
||||
AZ::SettingsRegistryImpl m_settingsRegistry;
|
||||
AZStd::string m_profileName;
|
||||
AZStd::string m_resourceMappingConfigFileName;
|
||||
};
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
*/
|
||||
|
||||
#include <AzCore/IO/FileIO.h>
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
@@ -69,27 +71,6 @@ namespace AWSCore
|
||||
void AWSCoreConfiguration::InitConfig()
|
||||
{
|
||||
InitSourceProjectFolderPath();
|
||||
InitSettingsRegistry();
|
||||
}
|
||||
|
||||
void AWSCoreConfiguration::InitSettingsRegistry()
|
||||
{
|
||||
if (m_sourceProjectFolder.empty())
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, ProjectSourceFolderNotFoundErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
AZStd::string settingsRegistryPath = AZStd::string::format("%s/%s/%s",
|
||||
m_sourceProjectFolder.c_str(), AZ::SettingsRegistryInterface::RegistryFolder, AWSCoreConfiguration::AWSCoreConfigurationFileName);
|
||||
AzFramework::StringFunc::Path::Normalize(settingsRegistryPath);
|
||||
|
||||
if (!m_settingsRegistry.MergeSettingsFile(settingsRegistryPath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""))
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, SettingsRegistryLoadFailureErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
ParseSettingsRegistryValues();
|
||||
}
|
||||
|
||||
@@ -108,10 +89,17 @@ namespace AWSCore
|
||||
|
||||
void AWSCoreConfiguration::ParseSettingsRegistryValues()
|
||||
{
|
||||
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (!settingsRegistry)
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, GlobalSettingsRegistryLoadFailureErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
m_resourceMappingConfigFileName.clear();
|
||||
auto resourceMappingConfigFileNamePath = AZStd::string::format("%s%s",
|
||||
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreResourceMappingConfigFileNameKey);
|
||||
if (!m_settingsRegistry.Get(m_resourceMappingConfigFileName, resourceMappingConfigFileNamePath))
|
||||
if (!settingsRegistry->Get(m_resourceMappingConfigFileName, resourceMappingConfigFileNamePath))
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, ResourceMappingFileNameNotFoundErrorMessage);
|
||||
}
|
||||
@@ -119,7 +107,7 @@ namespace AWSCore
|
||||
m_profileName.clear();
|
||||
auto profileNamePath = AZStd::string::format(
|
||||
"%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreProfileNameKey);
|
||||
if (!m_settingsRegistry.Get(m_profileName, profileNamePath))
|
||||
if (!settingsRegistry->Get(m_profileName, profileNamePath))
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, ProfileNameNotFoundErrorMessage);
|
||||
m_profileName = AWSCoreDefaultProfileName;
|
||||
@@ -128,20 +116,43 @@ namespace AWSCore
|
||||
|
||||
void AWSCoreConfiguration::ResetSettingsRegistryData()
|
||||
{
|
||||
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (!settingsRegistry)
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, GlobalSettingsRegistryLoadFailureErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
auto profileNamePath = AZStd::string::format("%s%s",
|
||||
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreProfileNameKey);
|
||||
m_settingsRegistry.Remove(profileNamePath);
|
||||
settingsRegistry->Remove(profileNamePath);
|
||||
m_profileName = AWSCoreDefaultProfileName;
|
||||
|
||||
auto resourceMappingConfigFileNamePath = AZStd::string::format("%s%s",
|
||||
AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSCoreResourceMappingConfigFileNameKey);
|
||||
m_settingsRegistry.Remove(resourceMappingConfigFileNamePath);
|
||||
settingsRegistry->Remove(resourceMappingConfigFileNamePath);
|
||||
m_resourceMappingConfigFileName.clear();
|
||||
|
||||
// Reload the AWSCore setting registry file from disk.
|
||||
if (m_sourceProjectFolder.empty())
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, SettingsRegistryFileLoadFailureErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
auto settingsRegistryPath = AZ::IO::FixedMaxPath(AZStd::string_view{ m_sourceProjectFolder }) /
|
||||
AZ::SettingsRegistryInterface::RegistryFolder /
|
||||
AWSCoreConfiguration::AWSCoreConfigurationFileName;
|
||||
if (!settingsRegistry->MergeSettingsFile(settingsRegistryPath.c_str(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""))
|
||||
{
|
||||
AZ_Warning(AWSCoreConfigurationName, false, SettingsRegistryFileLoadFailureErrorMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void AWSCoreConfiguration::ReloadConfiguration()
|
||||
{
|
||||
ResetSettingsRegistryData();
|
||||
InitSettingsRegistry();
|
||||
ParseSettingsRegistryValues();
|
||||
}
|
||||
} // namespace AWSCore
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace AWSCore
|
||||
|
||||
void AWSResourceMappingManager::ActivateManager()
|
||||
{
|
||||
ReloadConfigFile(true);
|
||||
ReloadConfigFile();
|
||||
AWSResourceMappingRequestBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
|
||||
@@ -67,10 +67,13 @@ protected:
|
||||
m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
|
||||
m_serializeContext->CreateEditContext();
|
||||
m_behaviorContext = AZStd::make_unique<AZ::BehaviorContext>();
|
||||
|
||||
m_componentDescriptor.reset(AWSCoreSystemComponent::CreateDescriptor());
|
||||
m_componentDescriptor->Reflect(m_serializeContext.get());
|
||||
m_componentDescriptor->Reflect(m_behaviorContext.get());
|
||||
|
||||
m_settingsRegistry->SetContext(m_serializeContext.get());
|
||||
|
||||
m_entity = aznew AZ::Entity();
|
||||
m_coreSystemsComponent.reset(m_entity->CreateComponent<AWSCoreSystemComponent>());
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@ public:
|
||||
AzFramework::StringFunc::Path::Normalize(m_normalizedSetRegFolderPath);
|
||||
|
||||
m_localFileIO->SetAlias("@devassets@", m_normalizedSourceProjectFolder.c_str());
|
||||
|
||||
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
@@ -73,11 +75,11 @@ public:
|
||||
}
|
||||
|
||||
AZStd::unique_ptr<AWSCore::AWSCoreConfiguration> m_awsCoreConfiguration;
|
||||
AZStd::string m_normalizedSetRegFilePath;
|
||||
|
||||
private:
|
||||
AZStd::string m_normalizedSourceProjectFolder;
|
||||
AZStd::string m_normalizedSetRegFolderPath;
|
||||
AZStd::string m_normalizedSetRegFilePath;
|
||||
|
||||
void CreateTestFile(const AZStd::string& filePath, const AZStd::string& fileContent)
|
||||
{
|
||||
@@ -118,17 +120,9 @@ private:
|
||||
|
||||
TEST_F(AWSCoreConfigurationTest, InitConfig_NoSourceProjectFolderFound_ReturnEmptyConfigFilePath)
|
||||
{
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_localFileIO->ClearAlias("@devassets@");
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
|
||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||
EXPECT_TRUE(actualConfigFilePath.empty());
|
||||
}
|
||||
|
||||
TEST_F(AWSCoreConfigurationTest, InitConfig_NoSettingsRegistryFileFound_ReturnEmptyConfigFilePath)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
@@ -140,6 +134,7 @@ TEST_F(AWSCoreConfigurationTest, InitConfig_NoSettingsRegistryFileFound_ReturnEm
|
||||
TEST_F(AWSCoreConfigurationTest, InitConfig_SettingsRegistryIsEmpty_ReturnEmptyConfigFilePath)
|
||||
{
|
||||
CreateTestSetRegFile(TEST_INVALID_RESOURCE_MAPPING_SETREG);
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
|
||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||
@@ -148,7 +143,7 @@ TEST_F(AWSCoreConfigurationTest, InitConfig_SettingsRegistryIsEmpty_ReturnEmptyC
|
||||
|
||||
TEST_F(AWSCoreConfigurationTest, InitConfig_LoadValidSettingsRegistry_ReturnNonEmptyConfigFilePath)
|
||||
{
|
||||
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
|
||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||
@@ -157,6 +152,7 @@ TEST_F(AWSCoreConfigurationTest, InitConfig_LoadValidSettingsRegistry_ReturnNonE
|
||||
|
||||
TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_NoSourceProjectFolderFound_ReturnEmptyConfigFilePath)
|
||||
{
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_localFileIO->ClearAlias("@devassets@");
|
||||
m_awsCoreConfiguration->ReloadConfiguration();
|
||||
|
||||
@@ -167,6 +163,7 @@ TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_NoSourceProjectFolderFound_
|
||||
TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadValidSettingsRegistryAfterInvalidOne_ReturnNonEmptyConfigFilePath)
|
||||
{
|
||||
CreateTestSetRegFile(TEST_INVALID_RESOURCE_MAPPING_SETREG);
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
|
||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||
@@ -185,7 +182,7 @@ TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadValidSettingsRegistryAf
|
||||
|
||||
TEST_F(AWSCoreConfigurationTest, ReloadConfiguration_LoadInvalidSettingsRegistryAfterValidOne_ReturnEmptyConfigFilePath)
|
||||
{
|
||||
CreateTestSetRegFile(TEST_VALID_RESOURCE_MAPPING_SETREG);
|
||||
m_settingsRegistry->MergeSettingsFile(m_normalizedSetRegFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_awsCoreConfiguration->InitConfig();
|
||||
|
||||
auto actualConfigFilePath = m_awsCoreConfiguration->GetResourceMappingConfigFilePath();
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include <AzCore/std/smart_ptr/make_shared.h>
|
||||
#include <AzCore/base.h>
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/Serialization/Json/JsonSystemComponent.h>
|
||||
#include <AzCore/Serialization/Json/RegistrationContext.h>
|
||||
@@ -161,7 +160,6 @@ namespace AWSAttributionUnitTest
|
||||
protected:
|
||||
AZStd::shared_ptr<AZ::SerializeContext> m_serializeContext;
|
||||
AZStd::unique_ptr<AZ::JsonRegistrationContext> m_registrationContext;
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
|
||||
AZStd::unique_ptr<AZ::JobContext> m_jobContext;
|
||||
AZStd::unique_ptr<AZ::JobCancelGroup> m_jobCancelGroup;
|
||||
AZStd::unique_ptr<AZ::JobManager> m_jobManager;
|
||||
@@ -186,13 +184,9 @@ namespace AWSAttributionUnitTest
|
||||
|
||||
AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
|
||||
|
||||
m_settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
|
||||
|
||||
m_settingsRegistry->SetContext(m_serializeContext.get());
|
||||
m_settingsRegistry->SetContext(m_registrationContext.get());
|
||||
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
|
||||
AZ::JobManagerDesc jobManagerDesc;
|
||||
AZ::JobManagerThreadDesc threadDesc;
|
||||
|
||||
@@ -210,9 +204,6 @@ namespace AWSAttributionUnitTest
|
||||
m_jobCancelGroup.reset();
|
||||
m_jobManager.reset();
|
||||
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
|
||||
m_settingsRegistry.reset();
|
||||
m_serializeContext.reset();
|
||||
m_registrationContext.reset();
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/Serialization/Json/JsonSystemComponent.h>
|
||||
#include <AzCore/Serialization/Json/RegistrationContext.h>
|
||||
#include <AzTest/AzTest.h>
|
||||
@@ -87,13 +86,9 @@ namespace AWSCoreUnitTest
|
||||
m_componentDescriptor->Reflect(m_serializeContext.get());
|
||||
m_componentDescriptor->Reflect(m_behaviorContext.get());
|
||||
|
||||
m_settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
|
||||
|
||||
m_settingsRegistry->SetContext(m_serializeContext.get());
|
||||
m_settingsRegistry->SetContext(m_registrationContext.get());
|
||||
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
|
||||
m_entity = aznew AZ::Entity();
|
||||
m_awsCoreSystemComponentMock = aznew testing::NiceMock<AWSCoreSystemComponentMock>();
|
||||
m_entity->AddComponent(m_awsCoreSystemComponentMock);
|
||||
@@ -113,7 +108,6 @@ namespace AWSCoreUnitTest
|
||||
m_awsCoreComponentDescriptor.reset();
|
||||
m_componentDescriptor.reset();
|
||||
m_behaviorContext.reset();
|
||||
m_settingsRegistry.reset();
|
||||
m_registrationContext.reset();
|
||||
m_serializeContext.reset();
|
||||
AWSCoreFixture::TearDown();
|
||||
@@ -130,7 +124,6 @@ namespace AWSCoreUnitTest
|
||||
AZStd::unique_ptr<AZ::JsonRegistrationContext> m_registrationContext;
|
||||
AZStd::unique_ptr<AZ::ComponentDescriptor> m_componentDescriptor;
|
||||
AZStd::unique_ptr<AZ::ComponentDescriptor> m_awsCoreComponentDescriptor;
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
|
||||
};
|
||||
|
||||
TEST_F(AWSAttributionSystemComponentTest, SystemComponentInitActivate_Success)
|
||||
|
||||
@@ -171,7 +171,7 @@ TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseInvalidConfigFile_Con
|
||||
AZStd::string actualRegion;
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualAccountId, &AWSResourceMappingRequests::GetDefaultAccountId);
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 0);
|
||||
EXPECT_TRUE(actualAccountId.empty());
|
||||
EXPECT_TRUE(actualRegion.empty());
|
||||
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Error);
|
||||
@@ -186,7 +186,7 @@ TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_Confi
|
||||
AZStd::string actualRegion;
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualAccountId, &AWSResourceMappingRequests::GetDefaultAccountId);
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 0);
|
||||
EXPECT_FALSE(actualAccountId.empty());
|
||||
EXPECT_FALSE(actualRegion.empty());
|
||||
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||
@@ -413,7 +413,7 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ParseValidConfigFileAfter
|
||||
AZStd::string actualRegion;
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualAccountId, &AWSResourceMappingRequests::GetDefaultAccountId);
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 0);
|
||||
EXPECT_TRUE(actualAccountId.empty());
|
||||
EXPECT_TRUE(actualRegion.empty());
|
||||
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Error);
|
||||
@@ -423,7 +423,7 @@ TEST_F(AWSResourceMappingManagerTest, ReloadConfigFile_ParseValidConfigFileAfter
|
||||
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualAccountId, &AWSResourceMappingRequests::GetDefaultAccountId);
|
||||
AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 1);
|
||||
EXPECT_EQ(m_reloadConfigurationCounter, 0);
|
||||
EXPECT_FALSE(actualAccountId.empty());
|
||||
EXPECT_FALSE(actualRegion.empty());
|
||||
EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <AzCore/Memory/PoolAllocator.h>
|
||||
#include <AzCore/UnitTest/TestTypes.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzFramework/IO/LocalFileIO.h>
|
||||
|
||||
#include <Framework/JsonObjectHandler.h>
|
||||
@@ -117,10 +118,16 @@ public:
|
||||
m_otherFileIO = AZ::IO::FileIOBase::GetInstance();
|
||||
AZ::IO::FileIOBase::SetInstance(nullptr);
|
||||
AZ::IO::FileIOBase::SetInstance(m_localFileIO);
|
||||
|
||||
m_settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
m_settingsRegistry.reset();
|
||||
|
||||
AZ::IO::FileIOBase::SetInstance(nullptr);
|
||||
|
||||
if (m_otherFileIO)
|
||||
@@ -160,4 +167,7 @@ public:
|
||||
|
||||
private:
|
||||
AZ::IO::FileIOBase* m_otherFileIO = nullptr;
|
||||
|
||||
protected:
|
||||
AZStd::unique_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
|
||||
};
|
||||
|
||||
@@ -17,12 +17,16 @@ namespace AWSMetrics
|
||||
class ClientConfiguration
|
||||
{
|
||||
public:
|
||||
static constexpr const char AWSMetricsMaxQueueSizeInMbKey[] = "/Gems/AWSMetrics/MaxQueueSizeInMb";
|
||||
static constexpr const char AWSMetricsQueueFlushPeriodInSecondsKey[] = "/Gems/AWSMetrics/QueueFlushPeriodInSeconds";
|
||||
static constexpr const char AWSMetricsOfflineRecordingEnabledKey[] = "/Gems/AWSMetrics/OfflineRecording";
|
||||
static constexpr const char AWSMetricsMaxNumRetriesKey[] = "/Gems/AWSMetrics/MaxNumRetries";
|
||||
|
||||
ClientConfiguration();
|
||||
|
||||
//! Reset the client settings based on the provided configuration file.
|
||||
//! @param settingsRegistryPath Full path to the configuration file.
|
||||
//! Initialize the client settings based on the global setting registry.
|
||||
//! @return whether the operation is successful
|
||||
bool ResetClientConfiguration(const AZStd::string& settingsRegistryPath);
|
||||
bool InitClientConfiguration();
|
||||
|
||||
//! Retrieve the max queue size setting.
|
||||
//! @return Max queue size in bytes.
|
||||
|
||||
@@ -33,9 +33,8 @@ namespace AWSMetrics
|
||||
~MetricsManager();
|
||||
|
||||
//! Initializing the metrics manager
|
||||
//! @param settingsRegistryPath Path to the settings registry file.
|
||||
//! @return Whether the operation is successful.
|
||||
bool Init(const AZStd::string& settingsRegistryPath = "");
|
||||
bool Init();
|
||||
//! Start sending metircs to the backend or a local file.
|
||||
void StartMetrics();
|
||||
//! Stop sending metircs to the backend or a local file.
|
||||
|
||||
@@ -192,11 +192,7 @@ namespace AWSMetrics
|
||||
|
||||
void AWSMetricsSystemComponent::Init()
|
||||
{
|
||||
AZStd::string priorAlias = AZ::IO::FileIOBase::GetInstance()->GetAlias("@devroot@");
|
||||
AZStd::string configFilePath = priorAlias + "\\Gems\\AWSMetrics\\Code\\" + AZ::SettingsRegistryInterface::RegistryFolder + "\\awsMetricsClientConfiguration.setreg";
|
||||
AzFramework::StringFunc::Path::Normalize(configFilePath);
|
||||
|
||||
m_metricsManager->Init(configFilePath);
|
||||
m_metricsManager->Init();
|
||||
}
|
||||
|
||||
void AWSMetricsSystemComponent::Activate()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <AzCore/IO/FileIO.h>
|
||||
#include <AzCore/Settings/SettingsRegistryImpl.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
@@ -23,38 +24,44 @@ namespace AWSMetrics
|
||||
{
|
||||
}
|
||||
|
||||
bool ClientConfiguration::ResetClientConfiguration(const AZStd::string& settingsRegistryPath)
|
||||
bool ClientConfiguration::InitClientConfiguration()
|
||||
{
|
||||
AZStd::unique_ptr<AZ::SettingsRegistryInterface> settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
|
||||
|
||||
AZ_Printf("AWSMetrics", "Reset client settings using the confiugration file %s", settingsRegistryPath.c_str());
|
||||
if (!settingsRegistry->MergeSettingsFile(settingsRegistryPath, AZ::SettingsRegistryInterface::Format::JsonMergePatch))
|
||||
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (!settingsRegistry)
|
||||
{
|
||||
AZ_Warning("AWSMetrics", false, "Failed to merge the configuration file");
|
||||
AZ_Warning("AWSMetrics", false, "Failed to load the setting registry");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!settingsRegistry->Get(m_maxQueueSizeInMb, "/Amazon/Gems/AWSMetrics/MaxQueueSizeInMb"))
|
||||
if (!settingsRegistry->Get(
|
||||
m_maxQueueSizeInMb,
|
||||
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxQueueSizeInMbKey)))
|
||||
{
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting in the configuration file");
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting from the setting registry");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!settingsRegistry->Get(m_queueFlushPeriodInSeconds, "/Amazon/Gems/AWSMetrics/QueueFlushPeriodInSeconds"))
|
||||
if (!settingsRegistry->Get(
|
||||
m_queueFlushPeriodInSeconds,
|
||||
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsQueueFlushPeriodInSecondsKey)))
|
||||
{
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting in the configuration file");
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting from the setting registry");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool enableOfflineRecording = false;
|
||||
if (!settingsRegistry->Get(enableOfflineRecording, "/Amazon/Gems/AWSMetrics/OfflineRecording"))
|
||||
if (!settingsRegistry->Get(
|
||||
enableOfflineRecording,
|
||||
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsOfflineRecordingEnabledKey)))
|
||||
{
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting in the configuration file");
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting from the setting registry");
|
||||
return false;
|
||||
}
|
||||
m_offlineRecordingEnabled = enableOfflineRecording;
|
||||
|
||||
if (!settingsRegistry->Get(m_maxNumRetries, "/Amazon/Gems/AWSMetrics/MaxNumRetries"))
|
||||
if (!settingsRegistry->Get(
|
||||
m_maxNumRetries,
|
||||
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxNumRetriesKey)))
|
||||
{
|
||||
AZ_Warning("AWSMetrics", false, "Failed to read the maximum number of retries setting in the configuration file");
|
||||
return false;
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace AWSMetrics
|
||||
ShutdownMetrics();
|
||||
}
|
||||
|
||||
bool MetricsManager::Init(const AZStd::string& settingsRegistryPath)
|
||||
bool MetricsManager::Init()
|
||||
{
|
||||
if (!m_clientConfiguration->ResetClientConfiguration(settingsRegistryPath))
|
||||
if (!m_clientConfiguration->InitClientConfiguration())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -52,10 +52,14 @@ namespace AWSMetrics
|
||||
|
||||
m_settingsRegistry->SetContext(m_serializeContext.get());
|
||||
m_settingsRegistry->SetContext(m_registrationContext.get());
|
||||
|
||||
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
|
||||
|
||||
m_registrationContext->EnableRemoveReflection();
|
||||
AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
|
||||
m_registrationContext->DisableRemoveReflection();
|
||||
@@ -130,7 +134,7 @@ namespace AWSMetrics
|
||||
|
||||
AZStd::unique_ptr<AZ::SerializeContext> m_serializeContext;
|
||||
AZStd::unique_ptr<AZ::JsonRegistrationContext> m_registrationContext;
|
||||
AZStd::shared_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
|
||||
AZStd::unique_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
|
||||
|
||||
private:
|
||||
AZStd::string GetTestFolderPath()
|
||||
|
||||
@@ -135,7 +135,8 @@ namespace AWSMetrics
|
||||
|
||||
m_metricsManager = AZStd::make_unique<MetricsManager>();
|
||||
AZStd::string configFilePath = CreateClientConfigFile(true, (double) TestMetricsEventSizeInBytes / MbToBytes * 2, DefaultFlushPeriodInSeconds, 0);
|
||||
m_metricsManager->Init(configFilePath);
|
||||
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_metricsManager->Init();
|
||||
|
||||
RemoveFile(m_metricsManager->GetMetricsFilePath());
|
||||
|
||||
@@ -161,7 +162,8 @@ namespace AWSMetrics
|
||||
RevertMockIOToLocalFileIO();
|
||||
|
||||
AZStd::string configFilePath = CreateClientConfigFile(offlineRecordingEnabled, maxQueueSizeInMb, queueFlushPeriodInSeconds, MaxNumRetries);
|
||||
m_metricsManager->Init(configFilePath);
|
||||
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
m_metricsManager->Init();
|
||||
|
||||
ReplaceLocalFileIOWithMockIO();
|
||||
}
|
||||
@@ -555,10 +557,11 @@ namespace AWSMetrics
|
||||
AZStd::unique_ptr<ClientConfiguration> m_clientConfiguration;
|
||||
};
|
||||
|
||||
TEST_F(ClientConfigurationTest, ResetClientConfiguration_ValidConfigurationFile_Success)
|
||||
TEST_F(ClientConfigurationTest, ResetClientConfiguration_ValidClientConfiguration_Success)
|
||||
{
|
||||
AZStd::string configFilePath = CreateClientConfigFile(true, DEFAULT_MAX_QUEUE_SIZE_IN_MB, DefaultFlushPeriodInSeconds, DEFAULT_MAX_NUM_RETRIES);
|
||||
ASSERT_TRUE(m_clientConfiguration->ResetClientConfiguration(configFilePath));
|
||||
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
|
||||
ASSERT_TRUE(m_clientConfiguration->InitClientConfiguration());
|
||||
|
||||
ASSERT_TRUE(m_clientConfiguration->OfflineRecordingEnabled());
|
||||
ASSERT_EQ(m_clientConfiguration->GetMaxQueueSizeInBytes(), DEFAULT_MAX_QUEUE_SIZE_IN_MB * 1000000);
|
||||
@@ -573,12 +576,4 @@ namespace AWSMetrics
|
||||
ASSERT_EQ(strcmp(m_clientConfiguration->GetMetricsFileDir(), resolvedPath), 0);
|
||||
ASSERT_EQ(m_clientConfiguration->GetMetricsFileFullPath(), expectedMetricsFilePath);
|
||||
}
|
||||
|
||||
TEST_F(ClientConfigurationTest, ResetClientConfiguration_InvalidConfigurationFile_Fail)
|
||||
{
|
||||
AZStd::string configFilePath = "invalidConfig";
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
ASSERT_FALSE(m_clientConfiguration->ResetClientConfiguration(configFilePath));
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user