Skip to main content

forge_core/testing/context/
mod.rs

1// TODO(pre-1.0): Collapse to 4 generic contexts per 07-DELETION-LIST.md
2
3//! Test context builders for all Forge function types.
4
5use crate::function::AuthContext;
6use std::collections::HashMap;
7use uuid::Uuid;
8
9mod cron;
10mod daemon;
11mod job;
12mod mcp_tool;
13mod mutation;
14mod query;
15mod webhook;
16mod workflow;
17
18pub use cron::{TestCronContext, TestCronContextBuilder};
19pub use daemon::{TestDaemonContext, TestDaemonContextBuilder};
20pub use job::{TestJobContext, TestJobContextBuilder, TestProgressUpdate};
21pub use mcp_tool::{TestMcpToolContext, TestMcpToolContextBuilder};
22pub use mutation::{TestMutationContext, TestMutationContextBuilder};
23pub use query::{TestQueryContext, TestQueryContextBuilder};
24pub use webhook::{TestWebhookContext, TestWebhookContextBuilder};
25pub use workflow::{TestWorkflowContext, TestWorkflowContextBuilder};
26
27/// Build an `AuthContext` from test builder fields.
28pub(crate) fn build_test_auth(
29    user_id: Option<Uuid>,
30    roles: Vec<String>,
31    claims: HashMap<String, serde_json::Value>,
32) -> AuthContext {
33    if let Some(user_id) = user_id {
34        AuthContext::authenticated(user_id, roles, claims)
35    } else if claims.contains_key("sub") {
36        AuthContext::authenticated_without_uuid(roles, claims)
37    } else {
38        AuthContext::unauthenticated()
39    }
40}