use hyper_custom_cert::HttpClient;
#[cfg(feature = "rustls")]
use std::collections::HashMap;
#[cfg(feature = "rustls")]
use std::time::Duration;
#[allow(dead_code)]
const TEST_CA_PEM: &[u8] = b"-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKoK/heBjcOuMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTcwODI4MTUxMzAyWhcNMjcwODI2MTUxMzAyWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAuuExKtKjKEw91uR8gqyUZx+wW3qZjUHq3oLe+RxbEUVFWApwrKE3XxKJ
-----END CERTIFICATE-----";
#[cfg(feature = "rustls")]
#[test]
fn rustls_client_creation() {
let _client = HttpClient::new();
}
#[cfg(feature = "rustls")]
#[test]
fn builder_with_root_ca_pem() {
let _client = HttpClient::builder().with_root_ca_pem(TEST_CA_PEM).build();
}
#[cfg(feature = "rustls")]
#[test]
fn builder_with_root_ca_file() {
let _builder = HttpClient::builder();
}
#[cfg(feature = "rustls")]
#[test]
fn builder_with_pinned_cert_sha256() {
let pins = vec![
[
0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
0x05, 0x06, 0x07, 0x08,
],
[
0x87, 0x65, 0x43, 0x21, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xef, 0xcd,
0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
0x77, 0x66, 0x55, 0x44,
],
];
let _client = HttpClient::builder().with_pinned_cert_sha256(pins).build();
}
#[cfg(feature = "rustls")]
#[test]
fn builder_rustls_combined_configuration() {
let mut headers = HashMap::new();
headers.insert("Authorization".to_string(), "Bearer token".to_string());
let pins = vec![[0u8; 32]];
let _client = HttpClient::builder()
.with_timeout(Duration::from_secs(60))
.with_default_headers(headers)
.with_root_ca_pem(TEST_CA_PEM)
.with_pinned_cert_sha256(pins)
.build();
}
#[cfg(feature = "rustls")]
#[test]
fn rustls_with_multiple_ca_certificates() {
let _client1 = HttpClient::builder().with_root_ca_pem(TEST_CA_PEM).build();
let _client2 = HttpClient::builder()
.with_root_ca_pem(TEST_CA_PEM)
.with_root_ca_pem(TEST_CA_PEM) .build();
}
#[cfg(feature = "rustls")]
#[test]
fn rustls_ca_file_and_pem_combination() {
let _client = HttpClient::builder()
.with_root_ca_pem(TEST_CA_PEM) .with_root_ca_pem(TEST_CA_PEM) .build();
}
#[cfg(feature = "rustls")]
#[test]
fn rustls_empty_pin_list() {
let empty_pins: Vec<[u8; 32]> = vec![];
let _client = HttpClient::builder()
.with_pinned_cert_sha256(empty_pins)
.build();
}
#[cfg(feature = "rustls")]
#[test]
fn rustls_with_timeout_and_ca() {
let _client = HttpClient::builder()
.with_timeout(Duration::from_millis(500))
.with_root_ca_pem(TEST_CA_PEM)
.build();
}
#[cfg(feature = "rustls")]
#[tokio::test]
async fn rustls_post_smoke() {
let client = HttpClient::new();
let _ = client;
}
#[cfg(not(feature = "rustls"))]
#[test]
fn rustls_methods_not_available_without_feature() {
let _builder = HttpClient::builder();
}