diff --git a/web/pgadmin/utils/__init__.py b/web/pgadmin/utils/__init__.py index d459e72b99d..0a57d7e6c0f 100644 --- a/web/pgadmin/utils/__init__.py +++ b/web/pgadmin/utils/__init__.py @@ -649,9 +649,11 @@ def check_is_integer(value): "found for server '%s'" % server ) else: - errmsg = check_attrib("Username") - if errmsg: - return errmsg + if not obj.get("Username"): + return gettext( + "'Username' attribute not found for server '%s'" % + server + ) errmsg = check_attrib("MaintenanceDB") if errmsg: diff --git a/web/pgadmin/utils/tests/test_validate_json_data.py b/web/pgadmin/utils/tests/test_validate_json_data.py index b5525d8eed3..4360f9dccb0 100644 --- a/web/pgadmin/utils/tests/test_validate_json_data.py +++ b/web/pgadmin/utils/tests/test_validate_json_data.py @@ -47,6 +47,20 @@ class TestValidateJsonData(BaseTestGenerator): expected_error="'Username' attribute not found", expected_servers=["1"] )), + ('A non-shared server with an empty username is rejected', + dict( + servers={"1": server(Username="")}, + is_admin=True, + expected_error="'Username' attribute not found", + expected_servers=["1"] + )), + ('A non-shared server with a null username is rejected', + dict( + servers={"1": server(Username=None)}, + is_admin=True, + expected_error="'Username' attribute not found", + expected_servers=["1"] + )), ('A shared server with only a shared username is valid', dict( servers={"1": server(Shared=True, SharedUsername="postgres")},