Refactor config to use test_default

Introduced a `test_default` method to `Config` to provide sane defaults
for integration tests. This refactors several test files to use this new
method, reducing boilerplate and improving maintainability.

Added `LLM_TIMEOUT_SECONDS` to the environment variables and `Config`
struct.
This commit is contained in:
2026-04-15 19:07:58 +02:00
parent 872e943da9
commit 5435b60b80
8 changed files with 57 additions and 108 deletions
+1 -17
View File
@@ -9,11 +9,8 @@ use doctate_server::config::{Config, User};
fn test_config() -> Arc<Config> {
Arc::new(Config {
server_port: 3000,
data_path: "/tmp/doctate-test".into(),
log_level: "info".into(),
log_path: "/tmp/doctate-test/logs".into(),
log_max_days: 90,
users: vec![User {
slug: "dr_test".into(),
api_key: "test-key-123".into(),
@@ -22,20 +19,7 @@ fn test_config() -> Arc<Config> {
whisper: Default::default(),
}],
api_keys: HashMap::from([("test-key-123".into(), "dr_test".into())]),
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url: "http://localhost:10300".into(),
whisper_timeout_seconds: 120,
ollama_url: "http://localhost:11434".into(),
ollama_model: "gemma3:4b".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}
+1 -20
View File
@@ -1,4 +1,3 @@
use std::collections::HashMap;
use std::sync::Arc;
use axum::body::Body;
@@ -9,27 +8,9 @@ use doctate_server::config::Config;
fn test_config() -> Arc<Config> {
Arc::new(Config {
server_port: 3000,
data_path: "/tmp/doctate-test".into(),
log_level: "info".into(),
log_path: "/tmp/doctate-test/logs".into(),
log_max_days: 90,
users: vec![],
api_keys: HashMap::new(),
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url: "http://localhost:10300".into(),
whisper_timeout_seconds: 120,
ollama_url: "http://localhost:11434".into(),
ollama_model: "gemma3:4b".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}
+1 -18
View File
@@ -26,27 +26,10 @@ fn test_config_with_users(users: Vec<User>) -> Arc<Config> {
let api_keys: HashMap<String, String> =
users.iter().map(|u| (u.api_key.clone(), u.slug.clone())).collect();
Arc::new(Config {
server_port: 3000,
data_path,
log_level: "info".into(),
log_path: "/tmp/doctate-test/logs".into(),
log_max_days: 90,
users,
api_keys,
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url: "http://localhost:10300".into(),
whisper_timeout_seconds: 120,
ollama_url: "http://localhost:11434".into(),
ollama_model: "gemma3:4b".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}
+1 -17
View File
@@ -1,7 +1,6 @@
use std::path::PathBuf;
use std::time::Duration;
use std::collections::HashMap;
use std::sync::Arc;
use doctate_server::config::{Config, User, WhisperUserSettings};
@@ -249,11 +248,6 @@ async fn recovery_enqueues_only_pending_recordings() {
fn test_config_with_whisper(whisper_url: String) -> Arc<Config> {
Arc::new(Config {
server_port: 3000,
data_path: "/tmp".into(),
log_level: "info".into(),
log_path: "/tmp".into(),
log_max_days: 90,
users: vec![User {
slug: "dr_test".into(),
api_key: "k".into(),
@@ -261,22 +255,12 @@ fn test_config_with_whisper(whisper_url: String) -> Arc<Config> {
role: "doctor".into(),
whisper: Default::default(),
}],
api_keys: HashMap::new(),
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url,
whisper_timeout_seconds: 5,
// Ollama URL is irrelevant — worker never reaches it in the failure path.
ollama_url: "http://127.0.0.1:1".into(),
ollama_model: "test".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}
+1 -18
View File
@@ -14,11 +14,7 @@ fn test_config() -> Arc<Config> {
uuid::Uuid::new_v4()
));
Arc::new(Config {
server_port: 3000,
data_path,
log_level: "info".into(),
log_path: "/tmp/doctate-test/logs".into(),
log_max_days: 90,
users: vec![User {
slug: "dr_test".into(),
api_key: "test-key-123".into(),
@@ -27,20 +23,7 @@ fn test_config() -> Arc<Config> {
whisper: Default::default(),
}],
api_keys: HashMap::from([("test-key-123".into(), "dr_test".into())]),
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url: "http://localhost:10300".into(),
whisper_timeout_seconds: 120,
ollama_url: "http://localhost:11434".into(),
ollama_model: "gemma3:4b".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}
+1 -18
View File
@@ -14,11 +14,7 @@ fn test_config() -> Arc<Config> {
uuid::Uuid::new_v4()
));
Arc::new(Config {
server_port: 3000,
data_path,
log_level: "info".into(),
log_path: "/tmp/doctate-test/logs".into(),
log_max_days: 90,
users: vec![User {
slug: "dr_test".into(),
api_key: "test-key".into(),
@@ -27,20 +23,7 @@ fn test_config() -> Arc<Config> {
whisper: Default::default(),
}],
api_keys: HashMap::from([("test-key".into(), "dr_test".into())]),
retention_audio_days: 30,
retention_transcript_days: 30,
retention_document_days: 0,
whisper_url: "http://localhost:10300".into(),
whisper_timeout_seconds: 120,
ollama_url: "http://localhost:11434".into(),
ollama_model: "gemma3:4b".into(),
ollama_keep_alive: 0,
llm_url: String::new(),
llm_api_key: String::new(),
llm_model: String::new(),
llm_temperature: 0.0,
session_timeout_hours: 8,
cookie_secure: false,
..Config::test_default()
})
}