use faucet_conformance::assert_config_schema_valid_value;
use faucet_core::Sink;
use faucet_sink_http::{HttpBatchMode, HttpSink, HttpSinkConfig};
use wiremock::matchers::{method, path};
use wiremock::{Mock, MockServer, ResponseTemplate};
#[test]
fn conformance_config_schema_valid() {
let schema =
serde_json::to_value(schemars::schema_for!(faucet_sink_http::HttpSinkConfig)).unwrap();
assert_config_schema_valid_value(&schema, "http");
}
#[tokio::test]
async fn conformance_capabilities_truthful() {
let server = MockServer::start().await;
Mock::given(method("POST"))
.and(path("/ingest"))
.respond_with(ResponseTemplate::new(200))
.mount(&server)
.await;
let config = HttpSinkConfig::new(format!("{}/ingest", server.uri()))
.batch_mode(HttpBatchMode::Individual);
let sink = HttpSink::new(config);
let server_ref = &server;
faucet_conformance::assert_capabilities_truthful(&sink, || async move {
server_ref.received_requests().await.unwrap().len()
})
.await;
assert!(!sink.supports_idempotent_writes());
assert!(!sink.dedups_by_key());
}