use ddog::prelude::*;
extern crate dotenv;
use dotenv::dotenv;
#[test]
fn post_distribution_points() {
dotenv().ok();
let api_key = dotenv::var("DD_API_KEY").unwrap();
let mut builder = builder::Builder::new();
let mut builder_ref = builder.v1();
if dotenv::var("TRACING_SUBSCRIBER")
.map(|s| s == "true")
.unwrap_or(false)
{
builder_ref = builder_ref.with_subscriber();
}
tokio_test::block_on(async {
let (status, res) = builder_ref
.post_distribution()
.headers(vec![
("Accept", "application/json"),
("Content-Type", "application/json"),
("DD-API-KEY", &api_key),
])
.body(
r#"{
"series": [{
"host": "cloudflare_worker_1.jpeg",
"metric": "rpc_latency",
"points": [ [ 1636629071, [ 1.0, 2.0 ] ] ],
"tags": [ "gridfin:" ],
"type": "distribution"
}]
}"#,
)
.execute()
.await;
tracing::info!(target: "/v2/distribution_points", "Response: {:?}", res);
assert_eq!(status, 202);
assert_eq!(
res.unwrap(),
distribution::DistributionResponse {
status: String::from("ok")
}
);
});
}
#[test]
fn post_distribution_invalid_json() {
dotenv().ok();
let api_key = dotenv::var("DD_API_KEY").unwrap();
let mut builder = builder::Builder::new();
let mut builder_ref = builder.v1();
if dotenv::var("TRACING_SUBSCRIBER")
.map(|s| s == "true")
.unwrap_or(false)
{
builder_ref = builder_ref.with_subscriber();
}
tokio_test::block_on(async {
let (status, res) = builder_ref
.post_distribution()
.headers(vec![
("Accept", "application/json"),
("Content-Type", "application/json"),
("DD-API-KEY", &api_key),
])
.body(
r#"{
"series": [{
"host": "cloudflare_worker_1.jpeg",
"metric": "rpc_latency",
"points": [ [ 1636629071, [ 1.0, 2.0 ] ] ],
"tags": [ "gridfin:" ],
"type": "distribution",
}]
}"#,
)
.execute()
.await;
tracing::info!(target: "/v2/distribution_points", "Request Error: {:?}", res);
assert_eq!(status, reqwest::StatusCode::from_u16(400).unwrap());
});
}
#[test]
fn distribution_post_fails_invalid_api_key() {
let mut builder = builder::Builder::new();
let mut builder_ref = builder.v1();
if dotenv::var("TRACING_SUBSCRIBER")
.map(|s| s == "true")
.unwrap_or(false)
{
builder_ref = builder_ref.with_subscriber();
}
tokio_test::block_on(async {
let (status, res) = builder_ref
.post_distribution()
.headers(vec![
("Accept", "application/json"),
("Content-Type", "application/json"),
("DD-API-KEY", "THIS_IS_NOT_A_VALID_API_KEY.JPEG"),
])
.body(
r#"{
"series": [{
"host": "cloudflare_worker_1.jpeg",
"metric": "rpc_latency",
"points": [ [ 1636629071, [ 1.0, 2.0 ] ] ],
"tags": [ "gridfin:" ],
"type": "distribution",
}]
}"#,
)
.execute()
.await;
tracing::info!(target: "/v2/distribution_points", "Unauthorized Error: {:?}", res);
assert_eq!(status, reqwest::StatusCode::from_u16(403).unwrap());
});
}