""" Tests for Stripe live-mode safety checks. Covers the helpers added in `services/pricing_config.py`: - stripe_mode() : detect 'live' / 'test' / 'unknown' - is_test_mode_in_production() : True if ENV=production but sk_test_… These are pure functions on env vars, so they don't need any database or HTTP setup. """ import os import importlib def _reload_pricing_config(): """Reload pricing_config with the current os.environ (no cache).""" import services.pricing_config as pc importlib.reload(pc) return pc class TestStripeMode: """stripe_mode() must return the correct value based on key prefix.""" def setup_method(self): self._saved_env = os.environ.copy() def teardown_method(self): os.environ.clear() os.environ.update(self._saved_env) def test_live_key_returns_live(self): os.environ["STRIPE_SECRET_KEY"] = "sk_live_abc123XYZ" pc = _reload_pricing_config() assert pc.stripe_mode() == "live" def test_test_key_returns_test(self): os.environ["STRIPE_SECRET_KEY"] = "sk_test_abc123XYZ" pc = _reload_pricing_config() assert pc.stripe_mode() == "test" def test_missing_key_returns_unknown(self): os.environ.pop("STRIPE_SECRET_KEY", None) pc = _reload_pricing_config() assert pc.stripe_mode() == "unknown" def test_empty_key_returns_unknown(self): os.environ["STRIPE_SECRET_KEY"] = "" pc = _reload_pricing_config() assert pc.stripe_mode() == "unknown" def test_garbage_key_returns_unknown(self): os.environ["STRIPE_SECRET_KEY"] = "totally-not-a-stripe-key" pc = _reload_pricing_config() assert pc.stripe_mode() == "unknown" def test_key_with_whitespace_is_trimmed(self): os.environ["STRIPE_SECRET_KEY"] = " sk_live_abc123XYZ " pc = _reload_pricing_config() assert pc.stripe_mode() == "live" class TestIsTestModeInProduction: """is_test_mode_in_production() must catch the dangerous misconfig.""" def setup_method(self): self._saved_env = os.environ.copy() def teardown_method(self): os.environ.clear() os.environ.update(self._saved_env) def test_test_key_in_prod_returns_true(self): os.environ["ENV"] = "production" os.environ["STRIPE_SECRET_KEY"] = "sk_test_xxx" pc = _reload_pricing_config() assert pc.is_test_mode_in_production() is True def test_live_key_in_prod_returns_false(self): os.environ["ENV"] = "production" os.environ["STRIPE_SECRET_KEY"] = "sk_live_xxx" pc = _reload_pricing_config() assert pc.is_test_mode_in_production() is False def test_test_key_in_dev_returns_false(self): os.environ["ENV"] = "development" os.environ["STRIPE_SECRET_KEY"] = "sk_test_xxx" pc = _reload_pricing_config() assert pc.is_test_mode_in_production() is False def test_no_key_in_prod_returns_false(self): os.environ["ENV"] = "production" os.environ.pop("STRIPE_SECRET_KEY", None) pc = _reload_pricing_config() assert pc.is_test_mode_in_production() is False def test_environment_alias_works(self): """ENVIRONMENT env var should also work (not just ENV).""" os.environ.pop("ENV", None) os.environ["ENVIRONMENT"] = "production" os.environ["STRIPE_SECRET_KEY"] = "sk_test_xxx" pc = _reload_pricing_config() assert pc.is_test_mode_in_production() is True