|
1 | 1 | import typing as t |
| 2 | +import uuid |
2 | 3 | from contextlib import contextmanager |
3 | 4 | import pytest |
4 | 5 | from pytest import FixtureRequest |
@@ -53,7 +54,8 @@ def create_users( |
53 | 54 | _cleanup_user(engine_adapter, user_name) |
54 | 55 |
|
55 | 56 | for role_name in role_names: |
56 | | - user_name = f"test_{role_name}" |
| 57 | + random_suffix = uuid.uuid4().hex[:6] |
| 58 | + user_name = f"test_{role_name}_{random_suffix}" |
57 | 59 | password = random_id() |
58 | 60 | engine_adapter.execute(f"CREATE USER \"{user_name}\" WITH PASSWORD '{password}'") |
59 | 61 | engine_adapter.execute(f'GRANT USAGE ON SCHEMA public TO "{user_name}"') |
@@ -381,12 +383,14 @@ def test_grants_plan_target_layer_physical_only( |
381 | 383 | with create_users(engine_adapter, "reader") as roles: |
382 | 384 | (tmp_path / "models").mkdir(exist_ok=True) |
383 | 385 |
|
384 | | - model_def = """ |
| 386 | + reader_username = roles["reader"]["username"] |
| 387 | + |
| 388 | + model_def = f""" |
385 | 389 | MODEL ( |
386 | 390 | name test_schema.physical_grants_model, |
387 | 391 | kind FULL, |
388 | 392 | grants ( |
389 | | - 'select' = ['test_reader'] |
| 393 | + 'select' = ['{reader_username}'] |
390 | 394 | ), |
391 | 395 | grants_target_layer 'physical' |
392 | 396 | ); |
@@ -421,12 +425,14 @@ def test_grants_plan_target_layer_virtual_only( |
421 | 425 | with create_users(engine_adapter, "viewer") as roles: |
422 | 426 | (tmp_path / "models").mkdir(exist_ok=True) |
423 | 427 |
|
424 | | - model_def = """ |
| 428 | + viewer_username = roles["viewer"]["username"] |
| 429 | + |
| 430 | + model_def = f""" |
425 | 431 | MODEL ( |
426 | 432 | name test_schema.virtual_grants_model, |
427 | 433 | kind FULL, |
428 | 434 | grants ( |
429 | | - 'select' = ['test_viewer'] |
| 435 | + 'select' = ['{viewer_username}'] |
430 | 436 | ), |
431 | 437 | grants_target_layer 'virtual' |
432 | 438 | ); |
|
0 commit comments