1- import base64
21import logging
32
43import pytest
98from data_rentgen .db .models import Dataset , User
109from data_rentgen .server .settings import ServerApplicationSettings as Settings
1110from data_rentgen .server .settings .auth .keycloak import KeycloakSettings
12- from tests .test_server .utils .enrich import enrich_datasets
1311
1412KEYCLOAK_PROVIDER = "data_rentgen.server.providers.auth.keycloak_provider.KeycloakAuthProvider"
1513pytestmark = [pytest .mark .asyncio , pytest .mark .server ]
@@ -33,23 +31,21 @@ async def test_get_keycloak_user_unauthorized(
3331 caplog ,
3432 server_app_settings : Settings ,
3533):
36- k_settings = KeycloakSettings .model_validate (server_app_settings .auth .keycloak )
34+ settings = KeycloakSettings .model_validate (server_app_settings .auth .keycloak )
3735
38- response = await test_client .get ("/v1/datasets " )
36+ response = await test_client .get ("/v1/users/me " )
3937
4038 # redirect unauthorized user to Keycloak
41- state = str (response .url ).encode ("utf-8" )
42- state = base64 .b64encode (state )
4339 redirect_url = (
44- f"{ k_settings .server_url } /realms/{ k_settings .realm_name } /protocol/openid-connect/auth?client_id="
45- f"{ k_settings .client_id } &response_type=code&redirect_uri={ k_settings .redirect_uri } "
46- f"&scope={ k_settings .scope } &state={ state . decode ( 'utf-8' ) } &nonce="
40+ f"{ settings .server_url } /realms/{ settings .realm_name } /protocol/openid-connect/auth?client_id="
41+ f"{ settings .client_id } &response_type=code&redirect_uri={ settings .redirect_uri } "
42+ f"&scope={ settings .scope } &state=&nonce="
4743 )
4844 assert response .status_code == 401
4945 assert response .json () == {
5046 "error" : {
5147 "code" : "auth_redirect" ,
52- "message" : "Authorize on provided url " ,
48+ "message" : "Please authorize using provided URL " ,
5349 "details" : redirect_url ,
5450 },
5551 }
@@ -71,53 +67,24 @@ async def test_get_keycloak_user_authorized(
7167 test_client : AsyncClient ,
7268 async_session : AsyncSession ,
7369 user : User ,
74- datasets : list [Dataset ],
7570 server_app_settings : Settings ,
7671 create_session_cookie ,
7772 mock_keycloak_well_known ,
7873 mock_keycloak_realm ,
7974):
80- datasets = await enrich_datasets (datasets , async_session )
8175 session_cookie = create_session_cookie (user )
8276 headers = {
8377 "Cookie" : f"session={ session_cookie } " ,
8478 }
8579
8680 response = await test_client .get (
87- "/v1/datasets " ,
81+ "/v1/users/me " ,
8882 headers = headers ,
8983 )
9084
9185 assert response .cookies .get ("session" ) == session_cookie
9286 assert response .status_code == 200
93- assert response .json () == {
94- "meta" : {
95- "page" : 1 ,
96- "page_size" : 20 ,
97- "total_count" : len (datasets ),
98- "pages_count" : 1 ,
99- "has_next" : False ,
100- "has_previous" : False ,
101- "next_page" : None ,
102- "previous_page" : None ,
103- },
104- "items" : [
105- {
106- "kind" : "DATASET" ,
107- "id" : dataset .id ,
108- "format" : dataset .format ,
109- "name" : dataset .name ,
110- "location" : {
111- "id" : dataset .location .id ,
112- "name" : dataset .location .name ,
113- "type" : dataset .location .type ,
114- "addresses" : [{"url" : address .url } for address in dataset .location .addresses ],
115- "external_id" : dataset .location .external_id ,
116- },
117- }
118- for dataset in sorted (datasets , key = lambda x : x .name )
119- ],
120- }
87+ assert response .json () == {"name" : user .name }
12188
12289
12390@responses .activate
@@ -135,7 +102,6 @@ async def test_get_keycloak_user_authorized(
135102async def test_get_keycloak_user_expired_access_token (
136103 caplog ,
137104 user : User ,
138- datasets : list [Dataset ],
139105 test_client : AsyncClient ,
140106 async_session : AsyncSession ,
141107 server_app_settings : Settings ,
@@ -144,45 +110,17 @@ async def test_get_keycloak_user_expired_access_token(
144110 mock_keycloak_realm ,
145111 mock_keycloak_token_refresh ,
146112):
147- datasets = await enrich_datasets (datasets , async_session )
148113 session_cookie = create_session_cookie (user , expire_in_msec = - 100000000 ) # expired access token
149114 headers = {
150115 "Cookie" : f"session={ session_cookie } " ,
151116 }
152117
153118 with caplog .at_level (logging .DEBUG ):
154119 response = await test_client .get (
155- "/v1/datasets " ,
120+ "/v1/users/me " ,
156121 headers = headers ,
157122 )
158123
159124 assert response .cookies .get ("session" ) != session_cookie , caplog .text # cookie is updated
160125 assert response .status_code == 200
161- assert response .json () == {
162- "meta" : {
163- "page" : 1 ,
164- "page_size" : 20 ,
165- "total_count" : len (datasets ),
166- "pages_count" : 1 ,
167- "has_next" : False ,
168- "has_previous" : False ,
169- "next_page" : None ,
170- "previous_page" : None ,
171- },
172- "items" : [
173- {
174- "kind" : "DATASET" ,
175- "id" : dataset .id ,
176- "format" : dataset .format ,
177- "name" : dataset .name ,
178- "location" : {
179- "id" : dataset .location .id ,
180- "name" : dataset .location .name ,
181- "type" : dataset .location .type ,
182- "addresses" : [{"url" : address .url } for address in dataset .location .addresses ],
183- "external_id" : dataset .location .external_id ,
184- },
185- }
186- for dataset in sorted (datasets , key = lambda x : x .name )
187- ],
188- }
126+ assert response .json () == {"name" : user .name }
0 commit comments