use std::env;
pub fn is_trusted_publishing_available() -> bool {
env::var_os("ACTIONS_ID_TOKEN_REQUEST_URL").is_some()
&& env::var_os("ACTIONS_ID_TOKEN_REQUEST_TOKEN").is_some()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn trusted_publishing_both_vars_set() {
temp_env::with_vars(
[
(
"ACTIONS_ID_TOKEN_REQUEST_URL",
Some("https://example.invalid/oidc"),
),
("ACTIONS_ID_TOKEN_REQUEST_TOKEN", Some("oidc-token")),
],
|| {
assert!(is_trusted_publishing_available());
},
);
}
#[test]
fn trusted_publishing_only_url_set() {
temp_env::with_vars(
[
(
"ACTIONS_ID_TOKEN_REQUEST_URL",
Some("https://example.invalid/oidc"),
),
("ACTIONS_ID_TOKEN_REQUEST_TOKEN", None::<&str>),
],
|| {
assert!(!is_trusted_publishing_available());
},
);
}
#[test]
fn trusted_publishing_only_token_set() {
temp_env::with_vars(
[
("ACTIONS_ID_TOKEN_REQUEST_URL", None::<&str>),
("ACTIONS_ID_TOKEN_REQUEST_TOKEN", Some("oidc-token")),
],
|| {
assert!(!is_trusted_publishing_available());
},
);
}
#[test]
fn trusted_publishing_neither_set() {
temp_env::with_vars(
[
("ACTIONS_ID_TOKEN_REQUEST_URL", None::<&str>),
("ACTIONS_ID_TOKEN_REQUEST_TOKEN", None::<&str>),
],
|| {
assert!(!is_trusted_publishing_available());
},
);
}
#[test]
fn trusted_publishing_empty_values_still_detected() {
temp_env::with_vars(
[
("ACTIONS_ID_TOKEN_REQUEST_URL", Some("")),
("ACTIONS_ID_TOKEN_REQUEST_TOKEN", Some("")),
],
|| {
assert!(is_trusted_publishing_available());
},
);
}
}