@@ -38,3 +38,61 @@ def test_datadog_image_override(mock_app, datadog_image, expected):
3838def 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