Skip to main content

lenso_capability_http_endpoint/
lib.rs

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