diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas index ffc3064084..1a135f3e2c 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas @@ -3,7 +3,7 @@ - + @@ -16,21 +16,21 @@ - + - + - + @@ -68,7 +68,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -229,12 +229,55 @@ + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -258,7 +301,7 @@ - + @@ -268,7 +311,7 @@ - + @@ -296,7 +339,7 @@ - + @@ -306,10 +349,10 @@ - + - + @@ -334,7 +377,7 @@ - + @@ -344,7 +387,7 @@ - + @@ -369,28 +412,43 @@ - + + + + + + + + + + + + + + + + - + - + - + - + - + @@ -399,22 +457,22 @@ - + - + - + - + - + @@ -422,9 +480,9 @@ - + - + @@ -434,7 +492,7 @@ - + @@ -852,21 +910,127 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -904,7 +1068,7 @@ - + @@ -942,7 +1106,7 @@ - + @@ -980,7 +1144,7 @@ - + @@ -1018,7 +1182,7 @@ - + @@ -1056,7 +1220,7 @@ - + @@ -1094,7 +1258,7 @@ - + @@ -1132,7 +1296,7 @@ - + @@ -1170,7 +1334,7 @@ - + @@ -1208,7 +1372,7 @@ - + @@ -1246,7 +1410,7 @@ - + @@ -1284,7 +1448,7 @@ - + @@ -1322,7 +1486,7 @@ - + @@ -1360,7 +1524,7 @@ - + @@ -1398,7 +1562,7 @@ - + @@ -1436,7 +1600,7 @@ - + @@ -1474,7 +1638,7 @@ - + @@ -1512,7 +1676,7 @@ - + @@ -1550,7 +1714,7 @@ - + @@ -1588,7 +1752,7 @@ - + @@ -1626,7 +1790,7 @@ - + @@ -1664,7 +1828,7 @@ - + @@ -1702,7 +1866,7 @@ - + @@ -1740,7 +1904,7 @@ - + @@ -1778,7 +1942,7 @@ - + @@ -1816,7 +1980,7 @@ - + @@ -1854,7 +2018,7 @@ - + @@ -1892,7 +2056,7 @@ - + @@ -1930,7 +2094,7 @@ - + @@ -1968,7 +2132,7 @@ - + @@ -2017,20 +2181,20 @@ - + - + - + - + @@ -2047,14 +2211,14 @@ - + - + @@ -2071,14 +2235,14 @@ - + - + @@ -2095,14 +2259,14 @@ - + - + @@ -2119,14 +2283,14 @@ - + - + @@ -2143,14 +2307,14 @@ - + - + @@ -2167,14 +2331,14 @@ - + - + @@ -2191,14 +2355,14 @@ - + - + @@ -2215,7 +2379,7 @@ - + @@ -2235,14 +2399,14 @@ - + - + @@ -2259,14 +2423,14 @@ - + - + @@ -2283,14 +2447,14 @@ - + - + @@ -2310,107 +2474,21 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2448,7 +2526,7 @@ - + @@ -2486,7 +2564,7 @@ - + @@ -2521,49 +2599,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + @@ -2571,59 +2619,233 @@ - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2633,8 +2855,8 @@ - - + + @@ -2643,7 +2865,7 @@ - + @@ -2661,7 +2883,7 @@ - + @@ -2671,66 +2893,35 @@ - - + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2740,84 +2931,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -2844,7 +2959,7 @@ - + @@ -2882,7 +2997,7 @@ - + @@ -2920,50 +3035,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2973,11 +3045,11 @@ - + - - + + @@ -3001,7 +3073,7 @@ - + @@ -3011,7 +3083,7 @@ - + @@ -3039,7 +3111,7 @@ - + @@ -3049,10 +3121,10 @@ - + - + @@ -3077,7 +3149,7 @@ - + @@ -3087,7 +3159,7 @@ - + @@ -3112,43 +3184,28 @@ - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -3157,22 +3214,22 @@ - + - + - + - + - + @@ -3180,9 +3237,9 @@ - + - + @@ -3192,21 +3249,21 @@ - + - + - + - + - + @@ -3215,9 +3272,14 @@ + + + + + - - + + @@ -3227,16 +3289,16 @@ - + - - + + - + @@ -3244,7 +3306,7 @@ - + @@ -3254,8 +3316,8 @@ - - + + @@ -3282,7 +3344,7 @@ - + @@ -3292,8 +3354,8 @@ - - + + @@ -3320,7 +3382,7 @@ - + @@ -3330,10 +3392,10 @@ - - + + - + @@ -3341,62 +3403,73 @@ - + - + - - - - - + + + + + + + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3406,24 +3479,24 @@ - + - - + + - - + + - + @@ -3434,7 +3507,7 @@ - + @@ -3444,7 +3517,7 @@ - + @@ -3457,7 +3530,7 @@ - + @@ -3468,11 +3541,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3482,24 +3586,24 @@ - - + + - + - - + + - + @@ -3510,7 +3614,7 @@ - + @@ -3520,8 +3624,8 @@ - - + + @@ -3530,10 +3634,10 @@ - + - + @@ -3548,7 +3652,7 @@ - + @@ -3558,8 +3662,8 @@ - - + + @@ -3571,7 +3675,7 @@ - + @@ -3586,7 +3690,7 @@ - + @@ -3596,10 +3700,10 @@ - - + + - + @@ -3607,13 +3711,13 @@ - + - + @@ -3624,7 +3728,7 @@ - + @@ -3634,8 +3738,8 @@ - - + + @@ -3647,7 +3751,7 @@ - + @@ -3662,7 +3766,7 @@ - + @@ -3700,7 +3804,7 @@ - + @@ -3710,7 +3814,7 @@ - + @@ -3738,7 +3842,7 @@ - + @@ -3776,7 +3880,7 @@ - + @@ -3786,7 +3890,7 @@ - + @@ -3814,7 +3918,7 @@ - + @@ -3824,10 +3928,10 @@ - + - + @@ -3835,13 +3939,13 @@ - + - + - + @@ -3852,7 +3956,7 @@ - + @@ -3890,45 +3994,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3938,7 +4004,7 @@ - + @@ -3966,7 +4032,7 @@ - + @@ -3976,11 +4042,11 @@ - + - - + + @@ -4004,7 +4070,7 @@ - + @@ -4014,7 +4080,7 @@ - + @@ -4042,7 +4108,7 @@ - + @@ -4052,11 +4118,11 @@ - + - - + + @@ -4080,7 +4146,7 @@ - + @@ -4090,7 +4156,7 @@ - + @@ -4118,7 +4184,7 @@ - + @@ -4156,7 +4222,7 @@ - + @@ -4166,10 +4232,10 @@ - + - + @@ -4177,13 +4243,13 @@ - + - + - + @@ -4194,7 +4260,7 @@ - + @@ -4204,11 +4270,11 @@ - + - - + + @@ -4232,7 +4298,7 @@ - + @@ -4242,7 +4308,7 @@ - + @@ -4270,7 +4336,7 @@ - + @@ -4308,7 +4374,7 @@ - + @@ -4318,7 +4384,7 @@ - + @@ -4342,344 +4408,135 @@ - - - - - - - - - - - - - + + + + + - - + + + + + + + - - + + + + + - - - - - - - - - - + + - - - - - - - - - - - - + + + - - + + + - + + + - - - - - - - - - - - - + - - - - + + + + + - - + + + + + + + - - + + + + + - - - - + + - - - - - - - - - - - - + + + - - + + + - + + + - - - - - - - - - - - - + - - - - + + + + + - - + + + + + + + - - + + + + + - - - - + + - - - - - - - - - - - - + + + - - + + + - + + + - - - - - - - - - - - - + - - - - + + + + + - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -4689,14 +4546,14 @@ - - + + - + - + @@ -4707,7 +4564,7 @@ - + @@ -4716,23 +4573,18 @@ - - - - - - + - - + + - + @@ -4750,7 +4602,7 @@ - + @@ -4759,13 +4611,8 @@ - - - - - - + @@ -4775,14 +4622,14 @@ - - + + - + - + @@ -4793,7 +4640,7 @@ - + @@ -4803,24 +4650,24 @@ - + - + - - + + - + @@ -4831,7 +4678,7 @@ - + @@ -4841,7 +4688,7 @@ - + @@ -4854,7 +4701,7 @@ - + @@ -4866,162 +4713,306 @@ - - - - - - + + + + + + + + + + + + - - - + + - - - - - - - + + - - - + + + + + + + + + + - + + - - - - - + + + + + + + + + - - - + + - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + @@ -5029,127 +5020,107 @@ - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -5158,8 +5129,13 @@ + + + + + - + @@ -5170,13 +5146,13 @@ - + - + @@ -5187,7 +5163,7 @@ - + @@ -5197,7 +5173,7 @@ - + @@ -5207,7 +5183,7 @@ - + @@ -5225,7 +5201,7 @@ - + @@ -5235,10 +5211,10 @@ - + - + @@ -5246,13 +5222,13 @@ - + - + @@ -5260,19 +5236,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + @@ -5280,21 +5293,21 @@ - + - + - + - + @@ -5332,7 +5345,7 @@ - + @@ -5366,126 +5379,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + - + @@ -5493,7 +5438,7 @@ - + @@ -5501,14 +5446,14 @@ - + - + @@ -5546,7 +5491,7 @@ - + @@ -5584,11 +5529,11 @@ - + - + @@ -5601,28 +5546,28 @@ - + - + - + - + - + - + - + @@ -5632,28 +5577,28 @@ - + - + - + - + - + - + - + @@ -5663,28 +5608,28 @@ - + - + - + - + - + - + - + @@ -5694,28 +5639,28 @@ - + - + - + - + - + - + - + @@ -5725,28 +5670,28 @@ - + - + - + - + - + - + - + @@ -5756,28 +5701,28 @@ - + - + - + - + - + - + - + @@ -5787,28 +5732,28 @@ - + - + - + - + - + - + - + @@ -5818,28 +5763,28 @@ - + - + - + - + - + - + - + @@ -5849,28 +5794,28 @@ - + - + - + - + - + - + - + @@ -5886,7 +5831,7 @@ - + @@ -5894,49 +5839,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -5947,7 +5850,7 @@ - + @@ -5955,14 +5858,14 @@ - + - + @@ -5983,7 +5886,7 @@ - + @@ -5994,7 +5897,7 @@ - + @@ -6002,14 +5905,14 @@ - + - + @@ -6030,28 +5933,7 @@ - - - - - - - - - - - - - - - - - - - - - - + @@ -6059,27 +5941,21 @@ - + - + - - - - - - - + @@ -6088,51 +5964,52 @@ + + + + + + - + - - - - - - - - + + - + - - + + - + - - + + - - - - - - + - + + + + + + + @@ -6140,41 +6017,41 @@ - + - - - + + + + - - - + + + + - + - - - - + + + - - - - + + + @@ -6182,41 +6059,41 @@ - + - - - + + + + - - - + + + + - + - - - - + + + - - - - + + + @@ -6224,16 +6101,10 @@ - + - - - - - - @@ -6244,21 +6115,32 @@ - + - - + + - + - - + + - + + + + + + + + + + + + @@ -6266,7 +6148,7 @@ - + @@ -6287,7 +6169,7 @@ - + @@ -6297,7 +6179,7 @@ - + @@ -6305,7 +6187,7 @@ - + @@ -6313,20 +6195,22 @@ - + - - - + + + + - - - + + + + @@ -6337,17 +6221,62 @@ - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + + + + + + + @@ -6355,7 +6284,7 @@ - + @@ -6363,33 +6292,33 @@ - + - + - + - - - + + + - - - + + + @@ -6397,10 +6326,16 @@ - + + + + + + + @@ -6415,28 +6350,17 @@ - - + + - + - - + + - - - - - - - - - - - - + @@ -6444,41 +6368,41 @@ - + - - - + + + + - - - + + + + - + - - - - + + + - - - - + + + @@ -6486,41 +6410,62 @@ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + @@ -6531,15 +6476,7 @@ - - - - - - - - - + @@ -6551,13 +6488,17 @@ - + + + + + @@ -6567,11 +6508,15 @@ - + + + + + - + diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AWSCognitoAuthenticationProvider.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AWSCognitoAuthenticationProvider.h index 0d3696f3d5..cdd551cbed 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AWSCognitoAuthenticationProvider.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AWSCognitoAuthenticationProvider.h @@ -22,7 +22,7 @@ namespace AWSClientAuth virtual ~AWSCognitoAuthenticationProvider() = default; // AuthenticationProviderInterface overrides - bool Initialize(AZStd::weak_ptr 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; diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderInterface.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderInterface.h index 9cba2227b1..c8addc6ff6 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderInterface.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderInterface.h @@ -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 settingsRegistry) = 0; + virtual bool Initialize() = 0; //! Call sign in endpoint for provider password grant flow. //! @param username Username to use to for sign in. diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderManager.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderManager.h index d4cb66b1a4..5ccc670d47 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderManager.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderManager.h @@ -29,7 +29,7 @@ namespace AWSClientAuth protected: // AuthenticationProviderRequestsBus Interface - bool Initialize(const AZStd::vector& providerNames, const AZStd::string& settingsRegistryPath) override; + bool Initialize(const AZStd::vector& 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& providerNames, const AZStd::string& settingsRegistryPath) override; + bool Initialize(const AZStd::vector& 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 m_settingsRegistry; }; } // namespace AWSClientAuth diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderScriptCanvasBus.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderScriptCanvasBus.h index 17a3907846..ccbf3e0466 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderScriptCanvasBus.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/AuthenticationProviderScriptCanvasBus.h @@ -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& providerNames, const AZStd::string& settingsRegistryPath) = 0; + virtual bool Initialize(const AZStd::vector& providerNames) = 0; //! Checks if user is signed in. //! If access tokens are available and not expired. diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/GoogleAuthenticationProvider.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/GoogleAuthenticationProvider.h index 292cf2e80a..d5616213b3 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/GoogleAuthenticationProvider.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/GoogleAuthenticationProvider.h @@ -21,7 +21,7 @@ namespace AWSClientAuth virtual ~GoogleAuthenticationProvider(); // AuthenticationProviderInterface overrides - bool Initialize(AZStd::weak_ptr 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; diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authentication/LWAAuthenticationProvider.h b/Gems/AWSClientAuth/Code/Include/Private/Authentication/LWAAuthenticationProvider.h index 8a4d68f67e..9e12cf5810 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authentication/LWAAuthenticationProvider.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authentication/LWAAuthenticationProvider.h @@ -21,7 +21,7 @@ namespace AWSClientAuth virtual ~LWAAuthenticationProvider(); // AuthenticationProviderInterface overrides - bool Initialize(AZStd::weak_ptr 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; diff --git a/Gems/AWSClientAuth/Code/Include/Public/Authentication/AuthenticationProviderBus.h b/Gems/AWSClientAuth/Code/Include/Public/Authentication/AuthenticationProviderBus.h index d11588ad55..d9b37b06db 100644 --- a/Gems/AWSClientAuth/Code/Include/Public/Authentication/AuthenticationProviderBus.h +++ b/Gems/AWSClientAuth/Code/Include/Public/Authentication/AuthenticationProviderBus.h @@ -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& providerNames, const AZStd::string& settingsRegistryPath) = 0; + virtual bool Initialize(const AZStd::vector& providerNames) = 0; //! Checks if user is signed in. //! If access tokens are available and not expired. diff --git a/Gems/AWSClientAuth/Code/Source/Authentication/AWSCognitoAuthenticationProvider.cpp b/Gems/AWSClientAuth/Code/Source/Authentication/AWSCognitoAuthenticationProvider.cpp index 482c9b1d9e..7f00e93f51 100644 --- a/Gems/AWSClientAuth/Code/Source/Authentication/AWSCognitoAuthenticationProvider.cpp +++ b/Gems/AWSClientAuth/Code/Source/Authentication/AWSCognitoAuthenticationProvider.cpp @@ -30,9 +30,8 @@ namespace AWSClientAuth constexpr char CognitoRefreshTokenAuthParamKey[] = "REFRESH_TOKEN"; constexpr char CognitoSmsMfaCodeKey[] = "SMS_MFA_CODE"; - bool AWSCognitoAuthenticationProvider::Initialize(AZStd::weak_ptr 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."); diff --git a/Gems/AWSClientAuth/Code/Source/Authentication/AuthenticationProviderManager.cpp b/Gems/AWSClientAuth/Code/Source/Authentication/AuthenticationProviderManager.cpp index 75f70932f1..a4fb232648 100644 --- a/Gems/AWSClientAuth/Code/Source/Authentication/AuthenticationProviderManager.cpp +++ b/Gems/AWSClientAuth/Code/Source/Authentication/AuthenticationProviderManager.cpp @@ -6,7 +6,6 @@ */ #include -#include #include #include @@ -27,37 +26,21 @@ namespace AWSClientAuth AuthenticationProviderManager::~AuthenticationProviderManager() { ResetProviders(); - m_settingsRegistry.reset(); AuthenticationProviderScriptCanvasRequestBus::Handler::BusDisconnect(); AuthenticationProviderRequestBus::Handler::BusDisconnect(); AZ::Interface::Unregister(this); } - bool AuthenticationProviderManager::Initialize(const AZStd::vector& providerNames, const AZStd::string& settingsRegistryPath) + bool AuthenticationProviderManager::Initialize(const AZStd::vector& 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(); - - AZStd::array 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& providerNames, const AZStd::string& settingsRegistryPath) + const AZStd::vector& providerNames) { AZStd::vector 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) diff --git a/Gems/AWSClientAuth/Code/Source/Authentication/GoogleAuthenticationProvider.cpp b/Gems/AWSClientAuth/Code/Source/Authentication/GoogleAuthenticationProvider.cpp index 3d180b17db..3d6e351017 100644 --- a/Gems/AWSClientAuth/Code/Source/Authentication/GoogleAuthenticationProvider.cpp +++ b/Gems/AWSClientAuth/Code/Source/Authentication/GoogleAuthenticationProvider.cpp @@ -30,9 +30,16 @@ namespace AWSClientAuth m_settings.reset(); } - bool GoogleAuthenticationProvider::Initialize(AZStd::weak_ptr 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; diff --git a/Gems/AWSClientAuth/Code/Source/Authentication/LWAAuthenticationProvider.cpp b/Gems/AWSClientAuth/Code/Source/Authentication/LWAAuthenticationProvider.cpp index b8028ff769..f5628b3734 100644 --- a/Gems/AWSClientAuth/Code/Source/Authentication/LWAAuthenticationProvider.cpp +++ b/Gems/AWSClientAuth/Code/Source/Authentication/LWAAuthenticationProvider.cpp @@ -29,9 +29,16 @@ namespace AWSClientAuth m_settings.reset(); } - bool LWAAuthenticationProvider::Initialize(AZStd::weak_ptr 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; diff --git a/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h b/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h index eef29e2cb5..cf6364fa00 100644 --- a/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h +++ b/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h @@ -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 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::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; } - - }; - - + }; } diff --git a/Gems/AWSClientAuth/Code/Tests/Authentication/AWSCognitoAuthenticationProviderTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authentication/AWSCognitoAuthenticationProviderTest.cpp index 328f77b28f..99a8c867d7 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authentication/AWSCognitoAuthenticationProviderTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authentication/AWSCognitoAuthenticationProviderTest.cpp @@ -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()); } diff --git a/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerScriptCanvasBusTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerScriptCanvasBusTest.cpp index fb233aeb5d..736b0a299d 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerScriptCanvasBusTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerScriptCanvasBusTest.cpp @@ -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>(); } @@ -66,20 +68,19 @@ protected: public: AZStd::unique_ptr> m_mockController; - AZStd::string m_settingspath; AZStd::vector 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 *cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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 *cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock *lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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 *cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock *lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* googleProviderMock = (testing::NiceMock*)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); -} diff --git a/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerTest.cpp index 362efaf025..747ea1efda 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authentication/AuthenticationProviderManagerTest.cpp @@ -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>(); } @@ -65,20 +67,19 @@ protected: public: AZStd::unique_ptr> m_mockController; - AZStd::string m_settingspath; AZStd::vector 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 *cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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 *cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock *lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock* lwaProviderMock = (testing::NiceMock*)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 *cognitoProviderMock = (testing::NiceMock*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get(); testing::NiceMock *lwaProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* cognitoProviderMock = (testing::NiceMock*)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* googleProviderMock = (testing::NiceMock*)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); -} diff --git a/Gems/AWSClientAuth/Code/Tests/Authentication/GoogleAuthenticationProviderTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authentication/GoogleAuthenticationProviderTest.cpp index f8b8399118..06aa7eeec8 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authentication/GoogleAuthenticationProviderTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authentication/GoogleAuthenticationProviderTest.cpp @@ -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 registry = AZStd::make_shared(); 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(); } diff --git a/Gems/AWSClientAuth/Code/Tests/Authentication/LWAAuthenticationProviderTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authentication/LWAAuthenticationProviderTest.cpp index cbbec30cb7..21f23bf627 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authentication/LWAAuthenticationProviderTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authentication/LWAAuthenticationProviderTest.cpp @@ -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 registry = AZStd::make_shared(); 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(); } diff --git a/Gems/AWSCore/Code/Include/Private/Configuration/AWSCoreConfiguration.h b/Gems/AWSCore/Code/Include/Private/Configuration/AWSCoreConfiguration.h index 42b828f450..14c4da33ba 100644 --- a/Gems/AWSCore/Code/Include/Private/Configuration/AWSCoreConfiguration.h +++ b/Gems/AWSCore/Code/Include/Private/Configuration/AWSCoreConfiguration.h @@ -7,7 +7,6 @@ #pragma once -#include #include #include @@ -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; }; diff --git a/Gems/AWSCore/Code/Source/Configuration/AWSCoreConfiguration.cpp b/Gems/AWSCore/Code/Source/Configuration/AWSCoreConfiguration.cpp index c6863e6f3d..4b5ce59517 100644 --- a/Gems/AWSCore/Code/Source/Configuration/AWSCoreConfiguration.cpp +++ b/Gems/AWSCore/Code/Source/Configuration/AWSCoreConfiguration.cpp @@ -6,6 +6,8 @@ */ #include +#include +#include #include #include @@ -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 diff --git a/Gems/AWSCore/Code/Source/ResourceMapping/AWSResourceMappingManager.cpp b/Gems/AWSCore/Code/Source/ResourceMapping/AWSResourceMappingManager.cpp index 48e3ffad70..c58dba227b 100644 --- a/Gems/AWSCore/Code/Source/ResourceMapping/AWSResourceMappingManager.cpp +++ b/Gems/AWSCore/Code/Source/ResourceMapping/AWSResourceMappingManager.cpp @@ -31,7 +31,7 @@ namespace AWSCore void AWSResourceMappingManager::ActivateManager() { - ReloadConfigFile(true); + ReloadConfigFile(); AWSResourceMappingRequestBus::Handler::BusConnect(); } diff --git a/Gems/AWSCore/Code/Tests/AWSCoreSystemComponentTest.cpp b/Gems/AWSCore/Code/Tests/AWSCoreSystemComponentTest.cpp index 52acd7d6f5..c9f7ebfcf7 100644 --- a/Gems/AWSCore/Code/Tests/AWSCoreSystemComponentTest.cpp +++ b/Gems/AWSCore/Code/Tests/AWSCoreSystemComponentTest.cpp @@ -67,10 +67,13 @@ protected: m_serializeContext = AZStd::make_unique(); m_serializeContext->CreateEditContext(); m_behaviorContext = AZStd::make_unique(); + 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()); } diff --git a/Gems/AWSCore/Code/Tests/Configuration/AWSCoreConfigurationTest.cpp b/Gems/AWSCore/Code/Tests/Configuration/AWSCoreConfigurationTest.cpp index 371e264f56..be32acedf5 100644 --- a/Gems/AWSCore/Code/Tests/Configuration/AWSCoreConfigurationTest.cpp +++ b/Gems/AWSCore/Code/Tests/Configuration/AWSCoreConfigurationTest.cpp @@ -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 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(); diff --git a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp index 4128edc1e2..ca402b9edd 100644 --- a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp +++ b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -161,7 +160,6 @@ namespace AWSAttributionUnitTest protected: AZStd::shared_ptr m_serializeContext; AZStd::unique_ptr m_registrationContext; - AZStd::shared_ptr m_settingsRegistry; AZStd::unique_ptr m_jobContext; AZStd::unique_ptr m_jobCancelGroup; AZStd::unique_ptr m_jobManager; @@ -186,13 +184,9 @@ namespace AWSAttributionUnitTest AZ::JsonSystemComponent::Reflect(m_registrationContext.get()); - m_settingsRegistry = AZStd::make_unique(); - 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(); diff --git a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionSystemComponentTest.cpp b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionSystemComponentTest.cpp index eaae801776..a790ccf067 100644 --- a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionSystemComponentTest.cpp +++ b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionSystemComponentTest.cpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -87,13 +86,9 @@ namespace AWSCoreUnitTest m_componentDescriptor->Reflect(m_serializeContext.get()); m_componentDescriptor->Reflect(m_behaviorContext.get()); - m_settingsRegistry = AZStd::make_unique(); - 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(); 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 m_registrationContext; AZStd::unique_ptr m_componentDescriptor; AZStd::unique_ptr m_awsCoreComponentDescriptor; - AZStd::shared_ptr m_settingsRegistry; }; TEST_F(AWSAttributionSystemComponentTest, SystemComponentInitActivate_Success) diff --git a/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp b/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp index 424a5e2048..ca43724a1d 100644 --- a/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp +++ b/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp @@ -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); diff --git a/Gems/AWSCore/Code/Tests/TestFramework/AWSCoreFixture.h b/Gems/AWSCore/Code/Tests/TestFramework/AWSCoreFixture.h index 78d377711b..a6ebe9ab31 100644 --- a/Gems/AWSCore/Code/Tests/TestFramework/AWSCoreFixture.h +++ b/Gems/AWSCore/Code/Tests/TestFramework/AWSCoreFixture.h @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -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::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 m_settingsRegistry; }; diff --git a/Gems/AWSMetrics/Code/Include/Private/ClientConfiguration.h b/Gems/AWSMetrics/Code/Include/Private/ClientConfiguration.h index 239d01b56c..835f44aca8 100644 --- a/Gems/AWSMetrics/Code/Include/Private/ClientConfiguration.h +++ b/Gems/AWSMetrics/Code/Include/Private/ClientConfiguration.h @@ -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. diff --git a/Gems/AWSMetrics/Code/Include/Private/MetricsManager.h b/Gems/AWSMetrics/Code/Include/Private/MetricsManager.h index 9f110c75e0..1cdb2b8118 100644 --- a/Gems/AWSMetrics/Code/Include/Private/MetricsManager.h +++ b/Gems/AWSMetrics/Code/Include/Private/MetricsManager.h @@ -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. diff --git a/Gems/AWSMetrics/Code/Source/AWSMetricsSystemComponent.cpp b/Gems/AWSMetrics/Code/Source/AWSMetricsSystemComponent.cpp index cbc10a1f04..ee9b2d6edc 100644 --- a/Gems/AWSMetrics/Code/Source/AWSMetricsSystemComponent.cpp +++ b/Gems/AWSMetrics/Code/Source/AWSMetricsSystemComponent.cpp @@ -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() diff --git a/Gems/AWSMetrics/Code/Source/ClientConfiguration.cpp b/Gems/AWSMetrics/Code/Source/ClientConfiguration.cpp index 504c02d920..b97eba25bd 100644 --- a/Gems/AWSMetrics/Code/Source/ClientConfiguration.cpp +++ b/Gems/AWSMetrics/Code/Source/ClientConfiguration.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -23,38 +24,44 @@ namespace AWSMetrics { } - bool ClientConfiguration::ResetClientConfiguration(const AZStd::string& settingsRegistryPath) + bool ClientConfiguration::InitClientConfiguration() { - AZStd::unique_ptr settingsRegistry = AZStd::make_unique(); - - 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; diff --git a/Gems/AWSMetrics/Code/Source/MetricsManager.cpp b/Gems/AWSMetrics/Code/Source/MetricsManager.cpp index 5779697010..b2eda9a39d 100644 --- a/Gems/AWSMetrics/Code/Source/MetricsManager.cpp +++ b/Gems/AWSMetrics/Code/Source/MetricsManager.cpp @@ -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; } diff --git a/Gems/AWSMetrics/Code/Tests/AWSMetricsGemMock.h b/Gems/AWSMetrics/Code/Tests/AWSMetricsGemMock.h index 77d3f5e5b8..33fae3693e 100644 --- a/Gems/AWSMetrics/Code/Tests/AWSMetricsGemMock.h +++ b/Gems/AWSMetrics/Code/Tests/AWSMetricsGemMock.h @@ -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 m_serializeContext; AZStd::unique_ptr m_registrationContext; - AZStd::shared_ptr m_settingsRegistry; + AZStd::unique_ptr m_settingsRegistry; private: AZStd::string GetTestFolderPath() diff --git a/Gems/AWSMetrics/Code/Tests/MetricsManagerTest.cpp b/Gems/AWSMetrics/Code/Tests/MetricsManagerTest.cpp index 39d06dec66..32b1c9d240 100644 --- a/Gems/AWSMetrics/Code/Tests/MetricsManagerTest.cpp +++ b/Gems/AWSMetrics/Code/Tests/MetricsManagerTest.cpp @@ -135,7 +135,8 @@ namespace AWSMetrics m_metricsManager = AZStd::make_unique(); 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 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); - } } diff --git a/Gems/AWSMetrics/Code/Registry/awsMetricsClientConfiguration.setreg b/Gems/AWSMetrics/Registry/awsMetricsClientConfiguration.setreg similarity index 100% rename from Gems/AWSMetrics/Code/Registry/awsMetricsClientConfiguration.setreg rename to Gems/AWSMetrics/Registry/awsMetricsClientConfiguration.setreg