Skip to content

Commit a41bcd4

Browse files
committed
fix empty password bug
1 parent de719a9 commit a41bcd4

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

sqlit/domains/connections/providers/mssql/adapter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ def normalize_config(self, config: ConnectionConfig) -> ConnectionConfig:
101101
config.set_option("auth_type", "sql")
102102
config.set_option("trusted_connection", False)
103103

104+
auth_type = str(config.get_option("auth_type") or "sql")
105+
if endpoint and endpoint.password == "" and auth_type in ("sql", "ad_password"):
106+
endpoint.password = None
107+
104108
return config
105109

106110
def detect_capabilities(self, conn: Any, config: ConnectionConfig) -> None:

sqlit/domains/connections/ui/screens/connection.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,10 @@ def _get_config(self) -> ConnectionConfig | None:
651651
config_data["endpoint"] = endpoint
652652
config_data["tunnel"] = tunnel
653653

654-
return ConnectionConfig.from_dict(config_data)
654+
config = ConnectionConfig.from_dict(config_data)
655+
from sqlit.domains.connections.providers.config_service import normalize_connection_config
656+
657+
return normalize_connection_config(config)
655658

656659
def action_test_connection(self) -> None:
657660
from .password_input import PasswordInputScreen

tests/test_password_prompts.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from sqlit.domains.connections.cli.prompts import prompt_for_password
88
from sqlit.domains.connections.domain.passwords import needs_db_password, needs_ssh_password
9+
from sqlit.domains.connections.providers.config_service import normalize_connection_config
910
from tests.helpers import ConnectionConfig
1011

1112

@@ -93,6 +94,19 @@ def test_mssql_with_none_password_needs_prompt(self) -> None:
9394
)
9495
assert needs_db_password(config)
9596

97+
def test_mssql_empty_password_prompts_after_normalize(self) -> None:
98+
"""SQL Server with empty password should prompt after normalization."""
99+
config = ConnectionConfig(
100+
name="test",
101+
db_type="mssql",
102+
server="localhost",
103+
username="sa",
104+
password="",
105+
options={"auth_type": "sql"},
106+
)
107+
normalized = normalize_connection_config(config)
108+
assert needs_db_password(normalized)
109+
96110
def test_mssql_windows_auth_with_none_password(self) -> None:
97111
"""SQL Server with Windows auth doesn't need a password prompt.
98112

0 commit comments

Comments
 (0)