Skip to main content

secret_variables

Function secret_variables 

Source
pub fn secret_variables<'a>(
    bindings: &'a BTreeMap<String, String>,
    secrets: &'a BTreeMap<String, String>,
) -> impl Iterator<Item = (&'a str, &'a str)>
Expand description

Every engine variable a scenario must inject as a secret, paired with its value — ScenarioCtx::secret_bindings joined against ScenarioCtx::secrets. The one place that join is written.

It lives in core, not in each engine, because it is easy to get subtly wrong: inject under the secret name rather than the variable name and a renamed binding (ADR-0018) resolves to nothing, so the request goes out with an unresolved {{…}} and fails far from the cause.

It yields borrows on purpose. Returning an owned variable→value map would put a second copy of every secret value in memory for each scenario; ADR-0005 keeps values in exactly one place, the run-level secrets map.

A binding whose secret is absent is skipped — the CLI already refuses a run whose secrets it cannot resolve, so that is defence in depth, not a path.