mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-26 23:50:17 +00:00
* refactor: centralize test credential constants into testing::credentials Scattered test credential strings (API keys, OAuth tokens, crypto keys, Telegram tokens, session tokens) across ~25 files made security auditing harder and created unnecessary duplication. Centralize all test-only fake credentials into a new `src/testing/credentials.rs` module with named constants and a shared `test_secrets_store()` helper. - Convert `src/testing.rs` to directory module (`src/testing/mod.rs`) - Add `src/testing/credentials.rs` with ~30 named constants - Replace hardcoded literals in 24 source files - Deduplicate `test_store()` helper (was copy-pasted in 3 files) - Leave leak_detector/shell/signature tests as-is (inline values aid readability for pattern detection tests) [skip-regression-check] Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> * refactor: replace real Telegram bot token with obviously fake test stub Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * Update src/testing/credentials.rs Co-authored-by: Copilot <[email protected]> * Update src/testing/credentials.rs Co-authored-by: Copilot <[email protected]> * refactor: address PR review feedback on test credentials - Fix TEST_CRYPTO_KEY doc comment ("32-byte hex" → "32-character key string") - Rename confusing "real"/"fake" Anthropic constant names and values - Change TEST_STRIPE_KEY from "sk-live" to "sk_test_fake123" to avoid scanners - Use test_secrets_store() helper in orchestrator and http tool tests - Clarify config_round_trip.rs doc comment about integration test visibility Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]> Co-authored-by: Copilot <[email protected]>
135 lines
6.3 KiB
Rust
135 lines
6.3 KiB
Rust
//! Centralized fake credential constants for tests.
|
|
//!
|
|
//! All values here are intentionally fake. Centralizing them makes security
|
|
//! audits trivial (one file to verify) and eliminates duplication across
|
|
//! the test suite.
|
|
|
|
use std::sync::Arc;
|
|
|
|
use secrecy::SecretString;
|
|
|
|
use crate::secrets::{InMemorySecretsStore, SecretsCrypto};
|
|
|
|
// ── Encryption keys ──────────────────────────────────────────────────────
|
|
|
|
/// 32-character key string for `SecretsCrypto::new()` in tests.
|
|
pub const TEST_CRYPTO_KEY: &str = "0123456789abcdef0123456789abcdef";
|
|
|
|
/// 32+ char key for web gateway `SecretsCrypto` in tests.
|
|
pub const TEST_GATEWAY_CRYPTO_KEY: &str = "test-key-at-least-32-chars-long!!";
|
|
|
|
// ── OpenAI-style API keys ────────────────────────────────────────────────
|
|
|
|
/// Generic OpenAI-style test API key.
|
|
pub const TEST_OPENAI_API_KEY: &str = "sk-test123";
|
|
|
|
/// OpenAI API key with longer format (config round-trip tests).
|
|
pub const TEST_OPENAI_API_KEY_LONG: &str = "sk-test-key-1234567890";
|
|
|
|
/// Short OpenAI-style key for secrets store accessibility tests.
|
|
pub const TEST_OPENAI_API_KEY_SHORT: &str = "sk-test";
|
|
|
|
/// OpenAI API key used in embeddings config issue-129 test.
|
|
pub const TEST_OPENAI_API_KEY_ISSUE_129: &str = "sk-test-key-for-issue-129";
|
|
|
|
// ── Anthropic keys ───────────────────────────────────────────────────────
|
|
|
|
/// Anthropic OAuth token for config tests.
|
|
pub const TEST_ANTHROPIC_OAUTH_TOKEN: &str = "sk-ant-oat01-test-token";
|
|
|
|
/// Anthropic API key for priority tests.
|
|
pub const TEST_ANTHROPIC_API_KEY: &str = "sk-ant-priority-key";
|
|
|
|
/// Anthropic OAuth token for sandbox config parse tests.
|
|
pub const TEST_ANTHROPIC_OAUTH_BASIC: &str = "sk-ant-oat01-basic";
|
|
|
|
/// Anthropic OAuth token in nested JSON parse test.
|
|
pub const TEST_ANTHROPIC_OAUTH_NESTED: &str = "sk-ant-oat01-primary-token";
|
|
|
|
// ── Google OAuth ─────────────────────────────────────────────────────────
|
|
|
|
/// Google OAuth access token (standard test).
|
|
pub const TEST_GOOGLE_OAUTH_TOKEN: &str = "ya29.test-token";
|
|
|
|
/// Google OAuth access token (fresh/non-expired variant).
|
|
pub const TEST_GOOGLE_OAUTH_FRESH: &str = "ya29.fresh-token";
|
|
|
|
/// Google OAuth access token (legacy/no-expiry variant).
|
|
pub const TEST_GOOGLE_OAUTH_LEGACY: &str = "ya29.legacy-token";
|
|
|
|
// ── GitHub ───────────────────────────────────────────────────────────────
|
|
|
|
/// GitHub personal access token (test).
|
|
pub const TEST_GITHUB_TOKEN: &str = "ghp_test123";
|
|
|
|
// ── Telegram ────────────────────────────────────────────────────────────
|
|
|
|
/// Telegram bot token for credential redaction tests.
|
|
pub const TEST_TELEGRAM_BOT_TOKEN: &str = "telegram-test-bot-token-not-a-real-token";
|
|
|
|
// ── OAuth client credentials ────────────────────────────────────────────
|
|
|
|
/// OAuth client ID for token refresh tests.
|
|
pub const TEST_OAUTH_CLIENT_ID: &str = "test-client-id";
|
|
|
|
/// OAuth client secret for token refresh tests.
|
|
pub const TEST_OAUTH_CLIENT_SECRET: &str = "test-client-secret";
|
|
|
|
// ── Bearer/auth tokens ──────────────────────────────────────────────────
|
|
|
|
/// Generic test bearer token.
|
|
pub const TEST_BEARER_TOKEN: &str = "test-token";
|
|
|
|
/// Bearer token with suffix (wasm wrapper credential injection).
|
|
pub const TEST_BEARER_TOKEN_123: &str = "test-token-123";
|
|
|
|
/// Auth token used by web gateway middleware tests.
|
|
pub const TEST_AUTH_SECRET_TOKEN: &str = "secret-token";
|
|
|
|
// ── Stripe ──────────────────────────────────────────────────────────────
|
|
|
|
/// Stripe-style test key.
|
|
pub const TEST_STRIPE_KEY: &str = "sk_test_fake123";
|
|
|
|
// ── Redaction test values ───────────────────────────────────────────────
|
|
|
|
/// Secret-prefixed key for redaction/sanitization tests.
|
|
pub const TEST_REDACT_SECRET: &str = "sk-secret";
|
|
|
|
/// Secret-prefixed key with suffix for redaction tests.
|
|
pub const TEST_REDACT_SECRET_123: &str = "sk-secret-123";
|
|
|
|
// ── Session tokens ──────────────────────────────────────────────────────
|
|
|
|
/// Generic session token for persistence tests.
|
|
pub const TEST_SESSION_TOKEN: &str = "test_token_123";
|
|
|
|
/// NEAR AI session token variant A.
|
|
pub const TEST_SESSION_NEARAI_ABC: &str = "sess_abc123";
|
|
|
|
/// NEAR AI session token variant B.
|
|
pub const TEST_SESSION_NEARAI_XYZ: &str = "sess_xyz789";
|
|
|
|
// ── Generic ──────────────────────────────────────────────────────────────
|
|
|
|
/// Generic test API key for LLM config, embedding config, nearai tests.
|
|
pub const TEST_API_KEY: &str = "test-key";
|
|
|
|
/// Stored secret value for create-and-get tests.
|
|
pub const TEST_SECRET_VALUE: &str = "sk-test-12345";
|
|
|
|
/// HTTP webhook secret for channel tests.
|
|
pub const TEST_HTTP_SECRET: &str = "test-secret-123";
|
|
|
|
// ── Helpers ──────────────────────────────────────────────────────────────
|
|
|
|
/// Create an `InMemorySecretsStore` backed by [`TEST_CRYPTO_KEY`].
|
|
///
|
|
/// Replaces the duplicated `test_store()` pattern found across multiple
|
|
/// test modules.
|
|
pub fn test_secrets_store() -> InMemorySecretsStore {
|
|
let crypto =
|
|
Arc::new(SecretsCrypto::new(SecretString::from(TEST_CRYPTO_KEY.to_string())).unwrap());
|
|
InMemorySecretsStore::new(crypto)
|
|
}
|