zixcel-github 0.1.1

Policy-neutral GitHub API wrapper boundary for Zixcel
Documentation
use zixcel_github::{API_REQUEST_SCHEMA, GitHubAction, GitHubApiRequest, parse_api_request_json};

#[test]
fn api_request_has_no_caller_or_workflow_identity_surface() {
    let wire = serde_json::to_value(request()).expect("request JSON");
    for forbidden in [
        "caller_package_id",
        "caller_package_digest_sha256",
        "binding_digest_sha256",
        "invocation_id",
        "authorization_id",
    ] {
        assert!(wire.get(forbidden).is_none(), "{forbidden}");
    }
}

#[test]
fn open_api_documents_fail_closed() {
    let mut open = serde_json::to_value(request()).expect("request JSON");
    open["future"] = serde_json::json!(true);
    assert!(parse_api_request_json(&serde_json::to_vec(&open).expect("bytes")).is_err());
}

fn request() -> GitHubApiRequest {
    GitHubApiRequest {
        schema: API_REQUEST_SCHEMA.into(),
        request_id: "github-request-1".into(),
        operation_id: "github-operation-1".into(),
        connection_ref: "github-connection-1".into(),
        owner: "example-org".into(),
        repository: "example-api".into(),
        action: GitHubAction::ObserveRepositoryMetadata,
    }
}