@@ -131,14 +131,72 @@ void testConfigureUserAgent() {
131131 }
132132
133133 @ Test
134- void testConfigureUserAgent_WithExistingValue () {
134+ void testConfigureUserAgent_WithExistingUserValue () {
135135 System .setProperty ("sdk.ua.appId" , "UserValueABC123" );
136136 UserAgentConfigurator .configureUserAgent ("test-feature" );
137137
138138 assertThat (System .getProperty ("sdk.ua.appId" ))
139139 .isEqualTo ("UserValueABC123/PT/TEST-FEATURE/" + VERSION + " PTENV/NA" );
140140 }
141141
142+ @ Test
143+ void testConfigureUserAgent_ReplacePowertoolsUserAgent () {
144+ System .setProperty ("sdk.ua.appId" , "PT/BATCH/" + VERSION + " PTENV/NA" );
145+ UserAgentConfigurator .configureUserAgent ("logging-log4j" );
146+
147+ assertThat (System .getProperty ("sdk.ua.appId" ))
148+ .isEqualTo ("PT/LOGGING-LOG4J/" + VERSION + " PTENV/NA" );
149+ }
150+
151+ @ Test
152+ void testConfigureUserAgent_PreserveUserValueAndReplacePowertools () {
153+ System .setProperty ("sdk.ua.appId" , "UserValue/PT/BATCH/" + VERSION + " PTENV/NA" );
154+ UserAgentConfigurator .configureUserAgent ("tracing" );
155+
156+ assertThat (System .getProperty ("sdk.ua.appId" ))
157+ .isEqualTo ("UserValue/PT/TRACING/" + VERSION + " PTENV/NA" );
158+ }
159+
160+ @ Test
161+ void testConfigureUserAgent_ExceedsLimit () {
162+ System .setProperty ("sdk.ua.appId" , "VeryLongUserValueThatExceedsTheLimitWhenCombined" );
163+ UserAgentConfigurator .configureUserAgent ("test-feature" );
164+
165+ // Should not update if it would exceed 50 characters
166+ assertThat (System .getProperty ("sdk.ua.appId" ))
167+ .isEqualTo ("VeryLongUserValueThatExceedsTheLimitWhenCombined" );
168+ }
169+
170+ @ Test
171+ void testExtractUserValue_NoUserValue () {
172+ String result = UserAgentConfigurator .extractUserValue ("PT/BATCH/" + VERSION + " PTENV/NA" );
173+ assertThat (result ).isEmpty ();
174+ }
175+
176+ @ Test
177+ void testExtractUserValue_WithUserValue () {
178+ String result = UserAgentConfigurator .extractUserValue ("UserValue/PT/BATCH/" + VERSION + " PTENV/NA" );
179+ assertThat (result ).isEqualTo ("UserValue" );
180+ }
181+
182+ @ Test
183+ void testExtractUserValue_EmptyString () {
184+ String result = UserAgentConfigurator .extractUserValue ("" );
185+ assertThat (result ).isEmpty ();
186+ }
187+
188+ @ Test
189+ void testExtractUserValue_NullString () {
190+ String result = UserAgentConfigurator .extractUserValue (null );
191+ assertThat (result ).isEmpty ();
192+ }
193+
194+ @ Test
195+ void testExtractUserValue_OnlyUserValue () {
196+ String result = UserAgentConfigurator .extractUserValue ("MyCustomValue" );
197+ assertThat (result ).isEqualTo ("MyCustomValue" );
198+ }
199+
142200 @ Test
143201 void testConfigureUserAgent_WithEmptyExistingValue () {
144202 System .setProperty ("sdk.ua.appId" , "" );
@@ -148,4 +206,25 @@ void testConfigureUserAgent_WithEmptyExistingValue() {
148206 .isEqualTo ("PT/TEST-FEATURE/" + VERSION + " PTENV/NA" );
149207 }
150208
209+ @ Test
210+ @ SetEnvironmentVariable (key = AWS_EXECUTION_ENV , value = "AWS_Lambda_java11" )
211+ void testConfigureUserAgent_MultipleUtilities () {
212+ System .clearProperty ("sdk.ua.appId" );
213+
214+ // First utility
215+ UserAgentConfigurator .configureUserAgent ("batch" );
216+ assertThat (System .getProperty ("sdk.ua.appId" ))
217+ .isEqualTo ("PT/BATCH/" + VERSION + " PTENV/AWS_Lambda_java11" );
218+
219+ // Second utility - should replace, not append
220+ UserAgentConfigurator .configureUserAgent ("logging-log4j" );
221+ assertThat (System .getProperty ("sdk.ua.appId" ))
222+ .isEqualTo ("PT/LOGGING-LOG4J/" + VERSION + " PTENV/AWS_Lambda_java11" );
223+
224+ // Third utility - should replace again
225+ UserAgentConfigurator .configureUserAgent ("tracing" );
226+ assertThat (System .getProperty ("sdk.ua.appId" ))
227+ .isEqualTo ("PT/TRACING/" + VERSION + " PTENV/AWS_Lambda_java11" );
228+ }
229+
151230}
0 commit comments