cloud-sdk-reqwest 0.32.4

Optional provider-neutral reqwest transport boundary for cloud-sdk.
Documentation
use cloud_sdk::Method;
use cloud_sdk::transport::{
    ResponseBuffer, ResponseMetadata, StatusCode, TransportFailure, TransportRequest,
};

use super::{RawAsyncTestExt, build_raw_loopback, policy};
use crate::asynchronous::RawHttpError;

#[test]
fn raw_async_precommitted_writer_fails_before_network_access() {
    super::super::run_async_test(async {
        let Some(client) = build_raw_loopback("http://127.0.0.1:1/v1") else {
            unreachable!("security fixture construction failed");
        };
        let Ok(target) = cloud_sdk::transport::RequestTarget::new("/precommitted") else {
            unreachable!("security fixture construction failed");
        };
        let Some(policy) = policy(2) else {
            unreachable!("security fixture construction failed")
        };
        let mut body = [0xa5_u8; 8];
        let mut headers = [0xa5_u8; 128];
        let mut response = ResponseBuffer::new(&mut body, 8, &mut headers);
        let mut attempt = response
            .writer()
            .begin_attempt()
            .unwrap_or_else(|_| unreachable!());
        assert!(
            attempt
                .commit(StatusCode::OK, 0, ResponseMetadata::EMPTY)
                .is_ok()
        );
        drop(attempt);
        assert_eq!(
            client
                .execute_checked(
                    TransportRequest::new(Method::Get, target),
                    policy,
                    response.writer(),
                )
                .await,
            Err(TransportFailure::not_sent(
                RawHttpError::ResponseAlreadyCommitted
            ))
        );
    });
}