Skip to content

Commit 085d272

Browse files
JacobCoffeeclaude
andcommitted
test podspec wires DD_IMAGE into datadog container
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent abc263d commit 085d272

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

tests/test_datadog_container.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,61 @@ def test_datadog_image_override(mock_app, datadog_image, expected):
3838
def test_positional_call_without_override(mock_app):
3939
container = deploy_module.render_datadog_container("k", {"env": "p"})
4040
assert container.image == DEFAULT_IMAGE
41+
42+
43+
def _podspec_release(dd_api_key="secret-key", dd_image=None):
44+
release = MagicMock()
45+
release.application.project.organization.slug = "test-org"
46+
release.application.project.organization.k8s_identifier = "test-org"
47+
release.application.project.slug = "test-project"
48+
release.application.project.k8s_identifier = "test-project"
49+
release.application.slug = "test-app"
50+
release.application.k8s_identifier = "test-app"
51+
release.application.privileged = False
52+
release.version = 1
53+
54+
app_env = MagicMock()
55+
app_env.k8s_identifier = None
56+
env_obj = MagicMock()
57+
env_obj.ephemeral = False
58+
env_obj.slug = "default"
59+
env_obj.k8s_identifier = "default"
60+
app_env.environment = env_obj
61+
release.application_environment = app_env
62+
63+
api_obj = MagicMock()
64+
api_obj.read_value.return_value = dd_api_key
65+
config = {"DD_API_KEY": api_obj}
66+
if dd_image is not None:
67+
img_obj = MagicMock()
68+
img_obj.read_value.return_value = dd_image
69+
config["DD_IMAGE"] = img_obj
70+
release.configuration_objects = config
71+
return release
72+
73+
74+
@pytest.mark.parametrize(
75+
("dd_image", "expected_arg"),
76+
[(None, None), ("datadog/agent:7.80.0", "datadog/agent:7.80.0")],
77+
ids=["no-dd-image-config", "dd-image-config-present"],
78+
)
79+
def test_render_podspec_passes_dd_image_to_datadog_container(
80+
mock_app, dd_image, expected_arg
81+
):
82+
release = _podspec_release(dd_image=dd_image)
83+
mock_app.config["SIDECAR_IMAGE"] = "ghcr.io/cabotage/sidecar:1.0"
84+
85+
with (
86+
patch.object(deploy_module, "render_datadog_container") as mock_dd,
87+
patch.object(deploy_module, "render_cabotage_sidecar_container"),
88+
patch.object(deploy_module, "render_cabotage_sidecar_tls_container"),
89+
patch.object(deploy_module, "render_process_container"),
90+
patch.object(deploy_module, "k8s_label_value", return_value="v1"),
91+
):
92+
deploy_module.render_podspec(release, "web", "sa-name")
93+
94+
assert mock_dd.called
95+
args, kwargs = mock_dd.call_args
96+
call_args = list(args) + list(kwargs.values())
97+
assert "secret-key" in call_args
98+
assert expected_arg in call_args

0 commit comments

Comments
 (0)