diff --git a/apps/admin-api/src/error.rs b/apps/admin-api/src/error.rs index f7a2e43..46c8eb5 100644 --- a/apps/admin-api/src/error.rs +++ b/apps/admin-api/src/error.rs @@ -448,62 +448,3 @@ pub fn runtime_error_context(error: &RuntimeError) -> Option { _ => None, } } - -#[cfg(test)] -mod tests { - use serde_json::json; - - use super::{runtime_error_context, runtime_test_failure}; - use crank_runtime::RuntimeError; - - #[test] - fn runtime_test_failure_includes_structured_context() { - let payload = runtime_test_failure(&RuntimeError::InvalidPreparedRequest { - field: "request.headers".to_owned(), - reason: "must be an object".to_owned(), - }); - - assert_eq!(payload["code"], "runtime_request_error"); - assert_eq!( - payload["context"], - json!({ - "field": "request.headers", - "reason": "must be an object" - }) - ); - } - - #[test] - fn runtime_error_context_includes_secret_crypto_operation() { - let context = runtime_error_context(&RuntimeError::SecretCrypto { - operation: "decode secret envelope", - details: "bad base64".to_owned(), - }) - .unwrap(); - - assert_eq!( - context, - json!({ - "operation": "decode secret envelope", - "details": "bad base64" - }) - ); - } - - #[test] - fn runtime_test_failure_includes_runtime_overload_context() { - let payload = runtime_test_failure(&RuntimeError::ConcurrencyLimitExceeded { - kind: "window", - limit: 16, - }); - - assert_eq!(payload["code"], "runtime_overloaded"); - assert_eq!( - payload["context"], - json!({ - "kind": "window", - "limit": 16 - }) - ); - } -} diff --git a/apps/admin-api/tests/unit.rs b/apps/admin-api/tests/unit.rs new file mode 100644 index 0000000..1b31879 --- /dev/null +++ b/apps/admin-api/tests/unit.rs @@ -0,0 +1,2 @@ +#[path = "unit/error.rs"] +mod error; diff --git a/apps/admin-api/tests/unit/error.rs b/apps/admin-api/tests/unit/error.rs new file mode 100644 index 0000000..1ab2aba --- /dev/null +++ b/apps/admin-api/tests/unit/error.rs @@ -0,0 +1,54 @@ +use admin_api::error::{runtime_error_context, runtime_test_failure}; +use crank_runtime::RuntimeError; +use serde_json::json; + +#[test] +fn runtime_test_failure_includes_structured_context() { + let payload = runtime_test_failure(&RuntimeError::InvalidPreparedRequest { + field: "request.headers".to_owned(), + reason: "must be an object".to_owned(), + }); + + assert_eq!(payload["code"], "runtime_request_error"); + assert_eq!( + payload["context"], + json!({ + "field": "request.headers", + "reason": "must be an object" + }) + ); +} + +#[test] +fn runtime_error_context_includes_secret_crypto_operation() { + let context = runtime_error_context(&RuntimeError::SecretCrypto { + operation: "decode secret envelope", + details: "bad base64".to_owned(), + }) + .unwrap(); + + assert_eq!( + context, + json!({ + "operation": "decode secret envelope", + "details": "bad base64" + }) + ); +} + +#[test] +fn runtime_test_failure_includes_runtime_overload_context() { + let payload = runtime_test_failure(&RuntimeError::ConcurrencyLimitExceeded { + kind: "window", + limit: 16, + }); + + assert_eq!(payload["code"], "runtime_overloaded"); + assert_eq!( + payload["context"], + json!({ + "kind": "window", + "limit": 16 + }) + ); +}