slicc-cdp-client 1.42.2

Shared CDP connection for slicc-cdp CLIs
Documentation
#[test]
fn tainted_unseen_and_non_redirect_carriers_never_deliver_partial_headers() {
    let destination = "https://seven.sliccy.ai/private?code=GROK_DESTINATION_91#fragment";
    let headers = json!({"Location":destination,"Refresh":format!("0;url={destination}"),"Link":format!("<{destination}>;rel=prefetch"),"Cookie":"cookie=GROK_COOKIE_91","Set-Cookie":"cookie=GROK_COOKIE_91","X-Private":"GROK_OPAQUE_91"});
    for (method, params, seen) in [
        ("Network.requestWillBeSent", json!({"requestId":"R","request":{"url":"https://ordinary.invalid/next","method":"GET","headers":{"Cookie":"GROK_COOKIE_91"}},"redirectResponse":{"url":"https://ordinary.invalid/redirector","status":302,"headers":headers}}), false),
        ("Network.responseReceived", json!({"requestId":"R","response":{"url":"https://ordinary.invalid/redirector","status":200,"headers":headers}}), true),
        ("Network.responseReceivedExtraInfo", json!({"requestId":"R","statusCode":200,"headers":headers,"headersText":format!("HTTP/1.1 200 OK\r\nCookie: GROK_COOKIE_91\r\nLocation: {destination}\r\n\r\n")}), true),
    ] {
        let mut cdp = url_backend("about:blank");
        if seen {
            cdp.absorb(json!({"method":"Network.requestWillBeSent","sessionId":"S","params":{"requestId":"R","type":"Document","request":{"url":"https://ordinary.invalid/redirector","method":"GET","headers":{}}}}));
        }
        cdp.absorb(json!({"method":method,"sessionId":"S","params":params}));
        let delivered = serde_json::to_string(cdp.events()).unwrap();
        for marker in ["GROK_DESTINATION_91", "GROK_COOKIE_91", "GROK_OPAQUE_91"] {
            assert!(!delivered.contains(marker), "{method} exposed {marker}: {delivered}");
        }
        assert_eq!(cdp.events().iter().filter(|event| event["method"] == "Network.loadingFailed").count(), usize::from(seen));
        cdp.absorb(json!({"method":"Network.loadingFinished","sessionId":"S","params":{"requestId":"R","timestamp":2}}));
        assert_eq!(cdp.events().iter().filter(|event| event["method"] == "Network.loadingFailed").count(), usize::from(seen));
        if seen { assert!(!cdp.events().iter().any(|event| event["method"] == "Network.loadingFinished")); }
    }
}

#[test]
fn redirector_override_aliases_are_refused_in_both_interception_apis() {
    for method in ["Fetch.continueRequest", "Network.continueInterceptedRequest"] {
        let mut cdp = redirect_body_backend("GROK_ORDINARY_CONTROL_27".into());
        fixture_target(&mut cdp, "S", "T");
        cdp.session_targets.insert("G".into(), "T".into());
        cdp.guard_sessions.insert("G".into());
        cdp.absorb(json!({"method":"Network.requestWillBeSent","sessionId":"G","params":{"requestId":"TAINT","request":{"url":"https://ordinary.invalid/redirector?seed=private#seed"}}}));
        cdp.absorb(json!({"method":"Network.responseReceivedExtraInfo","sessionId":"G","params":{"requestId":"TAINT","statusCode":302,"headers":{"Location":"https://seven.sliccy.ai/private"}}}));
        cdp.absorb(json!({"method":"Fetch.requestPaused","sessionId":"S","params":{"requestId":"HOLD","networkId":"PLAIN","resourceType":"XHR","request":{"url":"https://ordinary.invalid/plain","method":"GET","headers":{}}}}));
        for url in ["https://ordinary.invalid/redirector?changed=1", "https://ordinary.invalid/redirector/", "https://user:pass@ordinary.invalid/redirector", "https://ORDINARY.INVALID:443/a/../redirector/?q=1#x", "blob:https://ordinary.invalid/redirector?blob=1", "://"] {
            let mut params = json!({"url":url});
            params[if method == "Fetch.continueRequest" { "requestId" } else { "interceptionId" }] = json!("HOLD");
            assert!(cdp.call(method, params, Some("S")).unwrap_err().starts_with("slicc: refused:"), "{method} {url}");
        }
        assert_eq!(cdp.call("Network.getResponseBody", json!({"requestId":"PLAIN"}), Some("S")).unwrap()["body"], "GROK_ORDINARY_CONTROL_27");
        assert_eq!(cdp.call("Page.getResourceContent", json!({"url":"https://ordinary.invalid/plain"}), Some("S")).unwrap()["content"], "GROK_ORDINARY_CONTROL_27");
        let mut params = json!({"url":"https://ordinary.invalid/plain?readable=1"});
        params[if method == "Fetch.continueRequest" { "requestId" } else { "interceptionId" }] = json!("HOLD");
        cdp.call(method, params, Some("S")).unwrap();
    }
}