@@ -244,3 +244,70 @@ def test_update_ini_new_profile(self):
244244
245245 # Check that existing profile was not modified
246246 assert mock_config ["existing" ]["username" ] == "existing_user"
247+
248+ def test_from_available_with_custom_profile (self ):
249+ """Test that from_available uses custom profile when specified."""
250+ ini_content = """
251+ [default]
252+ username = default_user
253+ password = default_pass
254+ client_id = default_client_id
255+ client_secret = default_secret
256+ login_url = https://default.login.url
257+
258+ [custom_profile]
259+ username = custom_user
260+ password = custom_pass
261+ client_id = custom_client_id
262+ client_secret = custom_secret
263+ login_url = https://custom.login.url
264+ """
265+
266+ with (
267+ patch ("datacustomcode.credentials.INI_FILE" , "fake_path" ),
268+ patch ("os.path.exists" , return_value = True ),
269+ patch ("builtins.open" , mock_open (read_data = ini_content )),
270+ ):
271+ # Mock the configparser behavior for reading the file
272+ mock_config = configparser .ConfigParser ()
273+ mock_config .read_string (ini_content )
274+
275+ with patch .object (configparser , "ConfigParser" , return_value = mock_config ):
276+ # Test default profile
277+ creds_default = Credentials .from_available ()
278+ assert creds_default .username == "default_user"
279+ assert creds_default .login_url == "https://default.login.url"
280+
281+ # Test custom profile
282+ creds_custom = Credentials .from_available (profile = "custom_profile" )
283+ assert creds_custom .username == "custom_user"
284+ assert creds_custom .password == "custom_pass"
285+ assert creds_custom .client_id == "custom_client_id"
286+ assert creds_custom .client_secret == "custom_secret"
287+ assert creds_custom .login_url == "https://custom.login.url"
288+
289+ def test_from_available_fallback_to_default (self ):
290+ """Test that from_available falls back to default when no profile specified."""
291+ ini_content = """
292+ [default]
293+ username = default_user
294+ password = default_pass
295+ client_id = default_client_id
296+ client_secret = default_secret
297+ login_url = https://default.login.url
298+ """
299+
300+ with (
301+ patch ("datacustomcode.credentials.INI_FILE" , "fake_path" ),
302+ patch ("os.path.exists" , return_value = True ),
303+ patch ("builtins.open" , mock_open (read_data = ini_content )),
304+ ):
305+ # Mock the configparser behavior for reading the file
306+ mock_config = configparser .ConfigParser ()
307+ mock_config .read_string (ini_content )
308+
309+ with patch .object (configparser , "ConfigParser" , return_value = mock_config ):
310+ # Test that no profile parameter defaults to "default"
311+ creds = Credentials .from_available ()
312+ assert creds .username == "default_user"
313+ assert creds .login_url == "https://default.login.url"
0 commit comments