Skip to content

Commit a982b8e

Browse files
committed
feat(tests): environment-agnostic VCR cassette normalization
Add normalization to vcrpy_utils.py so cassettes recorded from staging or local docker-compose produce identical files. configure_normalization() reads active test config and builds string replacements (longest-first) for host, org_id, org_name, ds_url, ds_password, result hashes, createdAt timestamps, and proxy headers. Normalization runs only during recording (before_record_* callbacks); playback is unaffected. risk: low
1 parent 1eb9a5a commit a982b8e

6 files changed

Lines changed: 334 additions & 8 deletions

File tree

packages/gooddata-fdw/tests/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import pytest
66
import yaml
77
from gooddata_fdw.environment import ColumnDefinition
8+
from tests_support.vcrpy_utils import configure_normalization
89

910

1011
def pytest_addoption(parser):
@@ -23,6 +24,7 @@ def test_config(request):
2324
with open(config_path) as f:
2425
config = yaml.safe_load(f)
2526

27+
configure_normalization(config)
2628
return config
2729

2830

packages/gooddata-pandas/tests/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import pytest
55
import yaml
6+
from tests_support.vcrpy_utils import configure_normalization
67

78

89
def pytest_addoption(parser):
@@ -21,4 +22,5 @@ def test_config(request):
2122
with open(config_path) as f:
2223
config = yaml.safe_load(f)
2324

25+
configure_normalization(config)
2426
return config

packages/gooddata-sdk/tests/conftest.py

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

77
import pytest
88
import yaml
9+
from tests_support.vcrpy_utils import configure_normalization
910

1011
logger = logging.getLogger(__name__)
1112

@@ -55,6 +56,10 @@ def test_config(request):
5556
if env_ds_password:
5657
config["ds_password"] = env_ds_password
5758

59+
# Initialize VCR cassette normalization so recordings from any environment
60+
# produce identical cassette files (canonical localhost values).
61+
configure_normalization(config)
62+
5863
return config
5964

6065

packages/tests-support/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ description = "Tests support for GoodData Python SDK"
55
requires-python = ">=3.10"
66
version = "1.0.0"
77
dependencies = [
8+
"orjson",
89
"pyyaml>=6.0",
910
"requests",
1011
]

0 commit comments

Comments
 (0)