lenso_capability_http_endpoint/
lib.rs1mod 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::*;
18
19#[doc(hidden)]
20pub use authoring::{__private, validate_endpoint_routes};
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn endpoint_contract_round_trips_routes_credentials_parameters_and_bytes() {
28 let description = DescribeResponse {
29 routes: vec![DescribeResponseRoutesItem {
30 method: "GET".to_owned(),
31 path: "/orders/{order_id}".to_owned(),
32 route_id: "orders.read".to_owned(),
33 }],
34 };
35 let wire = encode_describe_response(&description).unwrap();
36 assert_eq!(decode_describe_response(&wire).unwrap(), description);
37
38 let request = HandleRequest {
39 body: Bytes::from(vec![0, 1, 2]),
40 credential: Some(HandleRequestCredential {
41 scheme: "bearer".to_owned(),
42 value: "token".to_owned(),
43 }),
44 headers: vec![HandleRequestHeadersItem {
45 name: "accept".to_owned(),
46 value: "application/json".to_owned(),
47 }],
48 method: "GET".to_owned(),
49 path: "/orders/42".to_owned(),
50 path_parameters: vec![HandleRequestPathParametersItem {
51 name: "order_id".to_owned(),
52 value: "42".to_owned(),
53 }],
54 query: Some("include=items".to_owned()),
55 request_id: "request-1".to_owned(),
56 route_id: "orders.read".to_owned(),
57 };
58 let wire = encode_handle_request(&request).unwrap();
59 assert!(wire.contains(r#""body":"AAEC""#));
60 assert_eq!(decode_handle_request(&wire).unwrap(), request);
61 }
62
63 #[test]
64 fn endpoint_contract_values_support_cross_lane_transfer() {
65 fn assert_send<T: Send>() {}
66
67 const { assert!(CROSS_LANE_TRANSFER) };
68 assert_send::<DescribeRequest>();
69 assert_send::<DescribeResponse>();
70 assert_send::<DescribeError>();
71 assert_send::<HandleRequest>();
72 assert_send::<HandleResponse>();
73 assert_send::<HandleError>();
74 }
75}