v0.3.6-pre.002
This commit is contained in:
57
crates/ksp-job-api/unit_tests/identity.rs
Normal file
57
crates/ksp-job-api/unit_tests/identity.rs
Normal file
@@ -0,0 +1,57 @@
|
||||
// file: crates/ksp-job-api/unit_tests/identity.rs
|
||||
// version: 1
|
||||
|
||||
#[test]
|
||||
fn pre_002_identity_accepts_safe_codes_at_exact_bounds() {
|
||||
let job_id = crate::JobId::new("a".repeat(crate::MAX_JOB_ID_BYTES));
|
||||
let kind = crate::JobKindCode::new("backfill.raw:solana-1");
|
||||
assert!(job_id.is_ok());
|
||||
assert!(kind.is_ok());
|
||||
let job_id = match job_id {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let kind = match kind {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
assert_eq!(job_id.as_str().len(), crate::MAX_JOB_ID_BYTES);
|
||||
assert_eq!(kind.as_str(), "backfill.raw:solana-1");
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_002_identity_rejects_empty_oversized_and_unsafe_values() {
|
||||
for value in [std::string::String::new(), "a".repeat(crate::MAX_JOB_ID_BYTES + 1), "unsafe/value".to_string(), "unicode-é".to_string()] {
|
||||
let rejected = crate::JobId::new(value);
|
||||
assert!(rejected.is_err());
|
||||
let error = match rejected {
|
||||
std::result::Result::Err(value) => value,
|
||||
std::result::Result::Ok(_) => continue,
|
||||
};
|
||||
assert_eq!(error.code(), crate::ERROR_CODE_JOB_ID_INVALID);
|
||||
assert_eq!(error.context().len(), 1);
|
||||
assert_eq!(error.context()[0].key(), "field");
|
||||
assert_eq!(error.context()[0].value(), "job_id");
|
||||
}
|
||||
for value in [std::string::String::new(), "b".repeat(crate::MAX_JOB_KIND_CODE_BYTES + 1), "backfill raw".to_string()] {
|
||||
let rejected = crate::JobKindCode::new(value);
|
||||
assert!(rejected.is_err());
|
||||
let error = match rejected {
|
||||
std::result::Result::Err(value) => value,
|
||||
std::result::Result::Ok(_) => continue,
|
||||
};
|
||||
assert_eq!(error.code(), crate::ERROR_CODE_JOB_KIND_INVALID);
|
||||
assert_eq!(error.context()[0].value(), "job_kind");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_002_private_validator_uses_exact_safe_code_alphabet() {
|
||||
assert!(super::valid_job_code("AZaz09_.:-", 10));
|
||||
for rejected in ["slash/value", "space value", "line\nbreak", "é"] {
|
||||
assert!(!super::valid_job_code(rejected, crate::MAX_JOB_ID_BYTES));
|
||||
}
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user