-
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Description
Application doesn't validate required PayFast settings on startup, leading to cryptic errors at runtime.
Tasks
- Create settings validation in AppConfig.ready()
- Check all required settings present
- Validate setting formats
- Fail fast with clear error messages
- Add tests for validation
- Document required settings
Implementation
# payfast/apps.py
from django.apps import AppConfig
from django.core.exceptions import ImproperlyConfigured
class PayFastConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'payfast'
verbose_name = 'PayFast Payments'
def ready(self):
from . import conf
# Validate required settings
required = [
('PAYFAST_MERCHANT_ID', conf.PAYFAST_MERCHANT_ID),
('PAYFAST_MERCHANT_KEY', conf.PAYFAST_MERCHANT_KEY),
]
for name, value in required:
if not value:
raise ImproperlyConfigured(
f"{name} must be set in Django settings. "
f"See documentation for setup instructions."
)
# Warn about production without passphrase
if not conf.PAYFAST_TEST_MODE and not conf.PAYFAST_PASSPHRASE:
import warnings
warnings.warn(
"PAYFAST_PASSPHRASE not set in production. "
"This significantly reduces security.",
SecurityWarning
)
# Import signals
import payfast.signalsAcceptance Criteria
- Settings validated on startup
- Clear error messages
- Application fails fast on misconfiguration
- Tests verify validation
Reactions are currently unavailable