Skip to content

Commit 27ca53e

Browse files
committed
fix: do not log encoded secrets
Signed-off-by: Dariusz Duda <dariusz.duda@canonical.com>
1 parent 8357448 commit 27ca53e

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

craft_application/application.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,9 @@ def run_managed(self, platform: str | None, build_for: str | None) -> None:
435435
# If using build secrets, put them in the environment of the managed
436436
# instance.
437437
secret_values = cast(secrets.BuildSecrets, self._secrets)
438+
# disable logging CRAFT_SECRETS value passed to the managed instance
439+
craft_cli.emit.set_secrets(list(secret_values.environment.values()))
440+
438441
env.update(secret_values.environment)
439442

440443
extra_args["env"] = env

tests/unit/test_application.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -559,17 +559,35 @@ def test_run_managed_failure(app, fake_project, fake_build_plan):
559559

560560

561561
@pytest.mark.enable_features("build_secrets")
562-
def test_run_managed_secrets(app, fake_project, fake_build_plan):
562+
@pytest.mark.parametrize(
563+
"fake_encoded_environment",
564+
[
565+
pytest.param({}, id="empty"),
566+
pytest.param(
567+
{
568+
"CRAFT_TEST": "banana",
569+
},
570+
id="fake-env",
571+
),
572+
pytest.param(
573+
{
574+
"CRAFT_TEST_FRUIT": "banana",
575+
"CRAFT_TEST_VEGETABLE": "cucumber",
576+
},
577+
id="multiple-entries-env",
578+
),
579+
],
580+
)
581+
def test_run_managed_secrets(
582+
app, fake_project, fake_build_plan, fake_encoded_environment: dict[str, str], check
583+
):
563584
mock_provider = mock.MagicMock(spec_set=services.ProviderService)
564585
instance = mock_provider.instance.return_value.__enter__.return_value
565586
mock_execute = instance.execute_run
566587
app.services.provider = mock_provider
567588
app.project = fake_project
568589
app._build_plan = fake_build_plan
569590

570-
fake_encoded_environment = {
571-
"CRAFT_TEST": "banana",
572-
}
573591
app._secrets = secrets.BuildSecrets(
574592
environment=fake_encoded_environment,
575593
secret_strings=set(),
@@ -581,7 +599,11 @@ def test_run_managed_secrets(app, fake_project, fake_build_plan):
581599
assert len(mock_execute.mock_calls) == 1
582600
call = mock_execute.mock_calls[0]
583601
execute_env = call.kwargs["env"]
584-
assert execute_env["CRAFT_TEST"] == "banana"
602+
for key, val in fake_encoded_environment.items():
603+
with check:
604+
assert execute_env[key] == val
605+
assert key in craft_cli.emit._log_filepath.read_text()
606+
assert val not in craft_cli.emit._log_filepath.read_text()
585607

586608

587609
def test_run_managed_multiple(app, fake_project):

0 commit comments

Comments
 (0)