Initial commit: Clean Mold Cost Calculator application
- Flask-based mold cost calculation application - PostgreSQL database with SQLAlchemy ORM - Docker/Podman containerization - Comprehensive documentation in docs/ - Clean, organized codebase without obsolete files - Production-ready deployment configuration - Enhanced pytest configuration with coverage reporting - Master/Development branch structure
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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
|
||||
Reference in New Issue
Block a user