This is an automated email from the ASF dual-hosted git repository.
amoghdesai pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new b4ea958d5d9 Relocate MaskSecret comms tests into task SDK comms tests
(#54795)
b4ea958d5d9 is described below
commit b4ea958d5d948d5388e60dc9ceb0a0e078f63974
Author: Amogh Desai <[email protected]>
AuthorDate: Fri Aug 22 09:57:27 2025 +0530
Relocate MaskSecret comms tests into task SDK comms tests (#54795)
---
.../task_sdk/definitions/test_secrets_masker.py | 31 -------------------
.../tests/task_sdk/execution_time/test_comms.py | 36 +++++++++++++++++++++-
2 files changed, 35 insertions(+), 32 deletions(-)
diff --git a/task-sdk/tests/task_sdk/definitions/test_secrets_masker.py
b/task-sdk/tests/task_sdk/definitions/test_secrets_masker.py
index 6d73c623f5e..c76fa76d90f 100644
--- a/task-sdk/tests/task_sdk/definitions/test_secrets_masker.py
+++ b/task-sdk/tests/task_sdk/definitions/test_secrets_masker.py
@@ -30,7 +30,6 @@ from unittest.mock import patch
import pytest
from airflow.models import Connection
-from airflow.sdk.execution_time.comms import MaskSecret
from airflow.sdk.execution_time.secrets_masker import (
RedactedIO,
SecretsMasker,
@@ -565,36 +564,6 @@ class TestMaskSecretAdapter:
if should_be_masked:
assert filt.replacer is not None
- @pytest.mark.parametrize(
- "object_to_mask",
- [
- {
- "key_path": "/files/airflow-breeze-config/keys2/keys.json",
- "scope": "https://www.googleapis.com/auth/cloud-platform",
- "project": "project_id",
- "num_retries": 6,
- },
- ["iter1", "iter2", {"key": "value"}],
- "string",
- {
- "key1": "value1",
- },
- ],
- )
- def test_mask_secret_with_objects(self, object_to_mask):
- mask_secret_object = MaskSecret(value=object_to_mask,
name="test_secret")
- assert mask_secret_object.value == object_to_mask
-
- def test_mask_secret_with_list(self):
- example_dict = ["test"]
- mask_secret_object = MaskSecret(value=example_dict, name="test_secret")
- assert mask_secret_object.value == example_dict
-
- def test_mask_secret_with_iterable(self):
- example_dict = ["test"]
- mask_secret_object = MaskSecret(value=example_dict, name="test_secret")
- assert mask_secret_object.value == example_dict
-
class TestStructuredVsUnstructuredMasking:
def test_structured_sensitive_fields_always_masked(self):
diff --git a/task-sdk/tests/task_sdk/execution_time/test_comms.py
b/task-sdk/tests/task_sdk/execution_time/test_comms.py
index 2f5d6bceedc..fd5d352e14d 100644
--- a/task-sdk/tests/task_sdk/execution_time/test_comms.py
+++ b/task-sdk/tests/task_sdk/execution_time/test_comms.py
@@ -25,10 +25,44 @@ import msgspec
import pytest
from airflow.sdk import timezone
-from airflow.sdk.execution_time.comms import BundleInfo, StartupDetails,
_ResponseFrame
+from airflow.sdk.execution_time.comms import BundleInfo, MaskSecret,
StartupDetails, _ResponseFrame
from airflow.sdk.execution_time.task_runner import CommsDecoder
+class TestCommsModels:
+ """Test Pydantic models used in task communication for proper
validation."""
+
+ @pytest.mark.parametrize(
+ "object_to_mask",
+ [
+ {
+ "key_path": "/files/airflow-breeze-config/keys2/keys.json",
+ "scope": "https://www.googleapis.com/auth/cloud-platform",
+ "project": "project_id",
+ "num_retries": 6,
+ },
+ ["iter1", "iter2", {"key": "value"}],
+ "string",
+ {
+ "key1": "value1",
+ },
+ ],
+ )
+ def test_mask_secret_with_objects(self, object_to_mask):
+ mask_secret_object = MaskSecret(value=object_to_mask,
name="test_secret")
+ assert mask_secret_object.value == object_to_mask
+
+ def test_mask_secret_with_list(self):
+ example_dict = ["test"]
+ mask_secret_object = MaskSecret(value=example_dict, name="test_secret")
+ assert mask_secret_object.value == example_dict
+
+ def test_mask_secret_with_iterable(self):
+ example_dict = ["test"]
+ mask_secret_object = MaskSecret(value=example_dict, name="test_secret")
+ assert mask_secret_object.value == example_dict
+
+
class TestCommsDecoder:
"""Test the communication between the subprocess and the "supervisor"."""