Skip to content

Commit 73b0b29

Browse files
committed
test(jans-cedarling): add tests loading CEDARLING_TRUSTED_ISSUER_LOADER parameters
Signed-off-by: Oleh Bozhok <6554798+olehbozhok@users.noreply.github.com>
1 parent c8f230b commit 73b0b29

File tree

1 file changed

+87
-0
lines changed
  • jans-cedarling/cedarling/src/bootstrap_config/raw_config

1 file changed

+87
-0
lines changed

jans-cedarling/cedarling/src/bootstrap_config/raw_config/config.rs

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,4 +574,91 @@ mod tests {
574574
},
575575
);
576576
}
577+
578+
/// Tests default values for trusted issuer loader fields when no env vars or JSON.
579+
#[test]
580+
fn test_trusted_issuer_loader_defaults() {
581+
with_env_vars(&[], || {
582+
let config = BootstrapConfigRaw::from_raw_config_and_env(None).unwrap();
583+
584+
assert_eq!(
585+
config.trusted_issuer_loader_type,
586+
TrustedIssuerLoaderTypeRaw::Sync,
587+
"Default loader type should be Sync"
588+
);
589+
assert_eq!(
590+
config.trusted_issuer_loader_workers, 0,
591+
"Default worker count should be 0 (will be treated as 1 later)"
592+
);
593+
});
594+
}
595+
596+
/// Tests that environment variables for trusted issuer loader are parsed correctly.
597+
#[test]
598+
fn test_trusted_issuer_loader_env_vars() {
599+
with_env_vars(
600+
&[
601+
("CEDARLING_TRUSTED_ISSUER_LOADER_TYPE", "ASYNC"),
602+
("CEDARLING_TRUSTED_ISSUER_LOADER_WORKERS", "5"),
603+
],
604+
|| {
605+
let config = BootstrapConfigRaw::from_raw_config_and_env(None).unwrap();
606+
607+
assert_eq!(
608+
config.trusted_issuer_loader_type,
609+
TrustedIssuerLoaderTypeRaw::Async,
610+
"Loader type should be Async from env var"
611+
);
612+
assert_eq!(
613+
config.trusted_issuer_loader_workers, 5,
614+
"Worker count should be 5 from env var"
615+
);
616+
},
617+
);
618+
}
619+
620+
/// Tests JSON deserialization for trusted issuer loader fields.
621+
#[test]
622+
fn test_trusted_issuer_loader_json_deserialization() {
623+
// Valid JSON values
624+
let valid_cases = vec![
625+
(
626+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_TYPE": "SYNC", "CEDARLING_TRUSTED_ISSUER_LOADER_WORKERS": 3}"#,
627+
TrustedIssuerLoaderTypeRaw::Sync,
628+
3,
629+
),
630+
(
631+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_TYPE": "ASYNC", "CEDARLING_TRUSTED_ISSUER_LOADER_WORKERS": 1}"#,
632+
TrustedIssuerLoaderTypeRaw::Async,
633+
1,
634+
),
635+
];
636+
637+
for (json, expected_type, expected_workers) in valid_cases {
638+
let config: BootstrapConfigRaw = serde_json::from_str(json).unwrap();
639+
assert_eq!(
640+
config.trusted_issuer_loader_type, expected_type,
641+
"Loader type mismatch for JSON: {}",
642+
json
643+
);
644+
assert_eq!(
645+
config.trusted_issuer_loader_workers, expected_workers,
646+
"Worker count mismatch for JSON: {}",
647+
json
648+
);
649+
}
650+
651+
// Invalid JSON values should produce errors
652+
let invalid_cases = vec![
653+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_TYPE": "INVALID"}"#,
654+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_WORKERS": -1}"#,
655+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_WORKERS": "not_a_number"}"#,
656+
r#"{"CEDARLING_APPLICATION_NAME": "", "CEDARLING_TRUSTED_ISSUER_LOADER_TYPE": 123}"#,
657+
];
658+
659+
for json in invalid_cases {
660+
let result: Result<BootstrapConfigRaw, _> = serde_json::from_str(json);
661+
result.expect_err(&format!("Should fail to parse invalid JSON: {}", json));
662+
}
663+
}
577664
}

0 commit comments

Comments
 (0)