@@ -13,18 +13,60 @@ class TestAuthClient(unittest.TestCase):
1313 def setUp (self ) -> None :
1414 """Set up test fixtures."""
1515 self .base_url = "https://api.test.com"
16- self .auth_client = AuthClient (self .base_url )
16+ self .keycloak_url = "https://keycloak.test.com"
17+ self .keycloak_realm = "test-realm"
18+ self .keycloak_client_id = "test-client"
19+ self .auth_client = AuthClient (
20+ self .base_url ,
21+ keycloak_url = self .keycloak_url ,
22+ keycloak_realm = self .keycloak_realm ,
23+ keycloak_client_id = self .keycloak_client_id ,
24+ )
1725
1826 def test_init (self ) -> None :
1927 """Test AuthClient initialization."""
2028 self .assertEqual (self .auth_client .base_url , self .base_url )
29+ self .assertEqual (self .auth_client .keycloak_url , self .keycloak_url )
30+ self .assertEqual (self .auth_client .keycloak_realm , self .keycloak_realm )
31+ self .assertEqual (self .auth_client .keycloak_client_id , self .keycloak_client_id )
2132 self .assertIsNone (self .auth_client .access_token )
2233 self .assertIsNone (self .auth_client .refresh_token )
2334 self .assertIsNone (self .auth_client .user_info )
2435
2536 @patch ("dataspace_sdk.auth.requests.post" )
26- def test_login_success (self , mock_post : MagicMock ) -> None :
27- """Test successful login."""
37+ def test_login_with_username_password (self , mock_post : MagicMock ) -> None :
38+ """Test successful login with username/password."""
39+ # Mock Keycloak token response
40+ keycloak_response = MagicMock ()
41+ keycloak_response .status_code = 200
42+ keycloak_response .json .return_value = {
43+ "access_token" : "keycloak_access_token" ,
44+ "refresh_token" : "keycloak_refresh_token" ,
45+ "expires_in" : 300 ,
46+ }
47+
48+ # Mock DataSpace backend login response
49+ backend_response = MagicMock ()
50+ backend_response .status_code = 200
51+ backend_response .json .return_value = {
52+ "access" : "test_access_token" ,
53+ "refresh" : "test_refresh_token" ,
54+ "user" : {"id" : "123" , "username" : "testuser" },
55+ }
56+
57+ mock_post .side_effect = [keycloak_response , backend_response ]
58+
59+ result = self .auth_client .login ("testuser" , "password" )
60+
61+ self .assertEqual (self .auth_client .access_token , "test_access_token" )
62+ self .assertEqual (self .auth_client .refresh_token , "test_refresh_token" )
63+ self .assertIsNotNone (self .auth_client .user_info )
64+ self .assertEqual (result ["user" ]["username" ], "testuser" )
65+ self .assertEqual (mock_post .call_count , 2 )
66+
67+ @patch ("dataspace_sdk.auth.requests.post" )
68+ def test_login_with_token (self , mock_post : MagicMock ) -> None :
69+ """Test successful login with Keycloak token."""
2870 mock_response = MagicMock ()
2971 mock_response .status_code = 200
3072 mock_response .json .return_value = {
@@ -34,7 +76,7 @@ def test_login_success(self, mock_post: MagicMock) -> None:
3476 }
3577 mock_post .return_value = mock_response
3678
37- result = self .auth_client .login_with_keycloak ("test_keycloak_token" )
79+ result = self .auth_client ._login_with_keycloak_token ("test_keycloak_token" )
3880
3981 self .assertEqual (self .auth_client .access_token , "test_access_token" )
4082 self .assertEqual (self .auth_client .refresh_token , "test_refresh_token" )
@@ -46,11 +88,11 @@ def test_login_failure(self, mock_post: MagicMock) -> None:
4688 """Test failed login."""
4789 mock_response = MagicMock ()
4890 mock_response .status_code = 401
49- mock_response .json .return_value = {"error" : "Invalid token " }
91+ mock_response .json .return_value = {"error" : "invalid_grant " }
5092 mock_post .return_value = mock_response
5193
5294 with self .assertRaises (DataSpaceAuthError ):
53- self .auth_client .login_with_keycloak ( "invalid_token " )
95+ self .auth_client .login ( "invalid_user" , "invalid_password " )
5496
5597 @patch ("dataspace_sdk.auth.requests.post" )
5698 def test_refresh_token_success (self , mock_post : MagicMock ) -> None :
0 commit comments