From 9a5e00c560475917e7323ac088e258114fb1813c Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Wed, 25 Mar 2026 19:06:25 -0500 Subject: [PATCH] fix: load .env file in integration tests and examples Add dotenvy to dev-dependencies and call dotenvy::dotenv().ok() in the integration test common module and all examples so env vars can be loaded from a .env file. --- Cargo.toml | 3 +++ examples/apps.rs | 1 + examples/fields.rs | 1 + examples/files.rs | 1 + examples/lists.rs | 1 + examples/ping.rs | 1 + examples/records.rs | 1 + examples/reports.rs | 1 + tests/integration_common/mod.rs | 10 ++++++++++ 9 files changed, 20 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index b3780e6..db9826f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,3 +22,6 @@ chrono = { version = "0.4", features = ["serde"] } tokio = { version = "1", features = ["full", "test-util"] } wiremock = "0.6" serde_json = "1" +dotenvy = "0.15" +chrono = { version = "0.4", features = ["serde"] } +uuid = { version = "1", features = ["serde", "v4"] } diff --git a/examples/apps.rs b/examples/apps.rs index f677e0e..5308a69 100644 --- a/examples/apps.rs +++ b/examples/apps.rs @@ -2,6 +2,7 @@ use onspring::{OnspringClient, PagingRequest}; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); diff --git a/examples/fields.rs b/examples/fields.rs index 711876b..7d5c591 100644 --- a/examples/fields.rs +++ b/examples/fields.rs @@ -2,6 +2,7 @@ use onspring::{OnspringClient, PagingRequest}; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); let app_id: i32 = std::env::var("TEST_APP_ID") diff --git a/examples/files.rs b/examples/files.rs index c947335..4021401 100644 --- a/examples/files.rs +++ b/examples/files.rs @@ -2,6 +2,7 @@ use onspring::{OnspringClient, SaveFileRequest}; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); let record_id: i32 = std::env::var("TEST_RECORD") diff --git a/examples/lists.rs b/examples/lists.rs index 8d95800..4070479 100644 --- a/examples/lists.rs +++ b/examples/lists.rs @@ -2,6 +2,7 @@ use onspring::{OnspringClient, SaveListItemRequest}; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); let list_id: i32 = std::env::var("TEST_LIST_ID") diff --git a/examples/ping.rs b/examples/ping.rs index 4ccf528..e7075c3 100644 --- a/examples/ping.rs +++ b/examples/ping.rs @@ -2,6 +2,7 @@ use onspring::OnspringClient; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); diff --git a/examples/records.rs b/examples/records.rs index 95af31a..ae0ca6e 100644 --- a/examples/records.rs +++ b/examples/records.rs @@ -3,6 +3,7 @@ use std::collections::HashMap; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); let app_id: i32 = std::env::var("TEST_SURVEY_ID") diff --git a/examples/reports.rs b/examples/reports.rs index 3346689..e5cd9f1 100644 --- a/examples/reports.rs +++ b/examples/reports.rs @@ -2,6 +2,7 @@ use onspring::{OnspringClient, PagingRequest}; #[tokio::main] async fn main() -> onspring::Result<()> { + dotenvy::dotenv().ok(); let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required"); let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required"); let app_id: i32 = std::env::var("TEST_SURVEY_ID") diff --git a/tests/integration_common/mod.rs b/tests/integration_common/mod.rs index 292d84e..7146319 100644 --- a/tests/integration_common/mod.rs +++ b/tests/integration_common/mod.rs @@ -1,7 +1,17 @@ use onspring::OnspringClient; use std::collections::HashMap; +use std::sync::Once; + +static INIT: Once = Once::new(); + +pub fn load_env() { + INIT.call_once(|| { + dotenvy::dotenv().ok(); + }); +} pub fn required_env(name: &str) -> String { + load_env(); std::env::var(name).unwrap_or_else(|_| panic!("{} is not defined", name)) }