@@ -39,8 +39,15 @@ def test_reset_service(self) -> None:
3939
4040 @patch ("sqlit.domains.connections.app.credentials.KeyringCredentialsService" )
4141 @patch ("sqlit.domains.connections.app.credentials.is_keyring_usable" , return_value = True )
42- def test_default_service_is_keyring (self , _mock_usable : MagicMock , mock_keyring_class : MagicMock ) -> None :
43- """Test that default service is keyring-based."""
42+ @patch ("sqlit.domains.shell.store.settings.SettingsStore.get_instance" )
43+ def test_default_service_is_keyring (
44+ self , mock_store_get : MagicMock , _mock_usable : MagicMock , mock_keyring_class : MagicMock
45+ ) -> None :
46+ """Test that default service is keyring-based when plaintext not enabled."""
47+ mock_store = MagicMock ()
48+ mock_store .load_all .return_value = {} # No plaintext setting
49+ mock_store_get .return_value = mock_store
50+
4451 mock_instance = MagicMock ()
4552 mock_keyring_class .return_value = mock_instance
4653
@@ -76,6 +83,20 @@ def test_plaintext_file_when_consent_recorded(
7683 service = get_credentials_service ()
7784 assert isinstance (service , PlaintextFileCredentialsService )
7885
86+ @patch ("sqlit.domains.connections.app.credentials.is_keyring_usable" , return_value = True )
87+ @patch ("sqlit.domains.shell.store.settings.SettingsStore.get_instance" )
88+ def test_plaintext_takes_priority_over_keyring (
89+ self , mock_store_get : MagicMock , _mock_usable : MagicMock
90+ ) -> None :
91+ """Test that plaintext is used when enabled, even if keyring is available."""
92+ mock_store = MagicMock ()
93+ mock_store .load_all .return_value = {"allow_plaintext_credentials" : True }
94+ mock_store_get .return_value = mock_store
95+ reset_credentials_service ()
96+ service = get_credentials_service ()
97+ # Should use plaintext even though keyring is usable
98+ assert isinstance (service , PlaintextFileCredentialsService )
99+
79100
80101def test_plaintext_file_credentials_service_roundtrip (tmp_path , monkeypatch ):
81102 monkeypatch .setattr ("sqlit.domains.connections.app.credentials.CONFIG_DIR" , tmp_path )
0 commit comments