64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import pytest
|
|
import os
|
|
from app import create_app, db
|
|
|
|
def test_production_config():
|
|
"""Test production configuration settings."""
|
|
app = create_app('production')
|
|
|
|
# Test essential production settings
|
|
assert not app.config['DEBUG']
|
|
assert app.config['TESTING'] is False
|
|
assert 'SECRET_KEY' in app.config
|
|
assert app.config['SQLALCHEMY_DATABASE_URI'] is not None
|
|
assert app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] is False
|
|
|
|
def test_database_connection(app):
|
|
"""Test database connection in production environment."""
|
|
with app.app_context():
|
|
try:
|
|
# Test database connection
|
|
db.engine.connect()
|
|
assert True
|
|
except Exception as e:
|
|
pytest.fail(f"Database connection failed: {str(e)}")
|
|
|
|
def test_environment_variables():
|
|
"""Test required environment variables are set."""
|
|
required_vars = [
|
|
'FLASK_APP',
|
|
'FLASK_ENV',
|
|
'SECRET_KEY',
|
|
'DATABASE_URL'
|
|
]
|
|
|
|
for var in required_vars:
|
|
assert os.getenv(var) is not None, f"Required environment variable {var} is not set"
|
|
|
|
def test_gunicorn_config():
|
|
"""Test Gunicorn configuration settings."""
|
|
import gunicorn_config
|
|
|
|
assert hasattr(gunicorn_config, 'bind')
|
|
assert hasattr(gunicorn_config, 'workers')
|
|
assert hasattr(gunicorn_config, 'timeout')
|
|
assert gunicorn_config.forwarded_allow_ips != '*'
|
|
|
|
def test_container_health_check(client):
|
|
"""Test container health check endpoint."""
|
|
response = client.get('/health')
|
|
assert response.status_code == 200
|
|
assert response.json['status'] == 'healthy'
|
|
|
|
def test_error_handling(client):
|
|
"""Test error handling for common deployment issues."""
|
|
# Test database connection error
|
|
with pytest.raises(Exception):
|
|
client.get('/calculator')
|
|
|
|
# Test rate limiting
|
|
for _ in range(100):
|
|
client.get('/')
|
|
|
|
response = client.get('/')
|
|
assert response.status_code == 429 # Too Many Requests |