Skip to main content

lenso_capability_http_endpoint/
lib.rs

1//! Generated bindings for backend-owned HTTP Endpoint providers.
2
3#[allow(unknown_lints)]
4#[allow(
5    clippy::chunks_exact_to_as_chunks,
6    clippy::manual_div_ceil,
7    clippy::manual_is_multiple_of,
8    clippy::verbose_bit_mask
9)]
10mod generated {
11    include!("generated.rs");
12}
13
14pub use generated::*;
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn endpoint_contract_round_trips_routes_credentials_parameters_and_bytes() {
22        let description = DescribeResponse {
23            routes: vec![DescribeResponseRoutesItem {
24                method: "GET".to_owned(),
25                path: "/orders/{order_id}".to_owned(),
26                route_id: "orders.read".to_owned(),
27            }],
28        };
29        let wire = encode_describe_response(&description).unwrap();
30        assert_eq!(decode_describe_response(&wire).unwrap(), description);
31
32        let request = HandleRequest {
33            body: Bytes::from(vec![0, 1, 2]),
34            credential: Some(HandleRequestCredential {
35                scheme: "bearer".to_owned(),
36                value: "token".to_owned(),
37            }),
38            headers: vec![HandleRequestHeadersItem {
39                name: "accept".to_owned(),
40                value: "application/json".to_owned(),
41            }],
42            method: "GET".to_owned(),
43            path: "/orders/42".to_owned(),
44            path_parameters: vec![HandleRequestPathParametersItem {
45                name: "order_id".to_owned(),
46                value: "42".to_owned(),
47            }],
48            query: Some("include=items".to_owned()),
49            request_id: "request-1".to_owned(),
50            route_id: "orders.read".to_owned(),
51        };
52        let wire = encode_handle_request(&request).unwrap();
53        assert!(wire.contains(r#""body":"AAEC""#));
54        assert_eq!(decode_handle_request(&wire).unwrap(), request);
55    }
56
57    #[test]
58    fn endpoint_contract_values_support_cross_lane_transfer() {
59        fn assert_send<T: Send>() {}
60
61        const { assert!(CROSS_LANE_TRANSFER) };
62        assert_send::<DescribeRequest>();
63        assert_send::<DescribeResponse>();
64        assert_send::<DescribeError>();
65        assert_send::<HandleRequest>();
66        assert_send::<HandleResponse>();
67        assert_send::<HandleError>();
68    }
69}