from app.models import AppSetting, Category, User def test_admin_can_create_category(logged_admin, app): response = logged_admin.post('/admin/categories', data={'key': 'pets', 'name_pl': 'Zwierzęta', 'name_en': 'Pets', 'color': 'info', 'is_active': 'y'}, follow_redirects=True) assert response.status_code == 200 with app.app_context(): assert Category.query.filter_by(key='pets').first() is not None def test_non_admin_forbidden(logged_user): response = logged_user.get('/admin/') assert response.status_code == 403 def test_admin_can_create_user(logged_admin, app): response = logged_admin.post('/admin/users', data={ 'full_name': 'New User', 'email': 'new@example.com', 'role': 'user', 'language': 'en', 'must_change_password': 'y' }, follow_redirects=True) assert response.status_code == 200 with app.app_context(): assert User.query.filter_by(email='new@example.com').first() is not None def test_admin_can_update_settings_and_flags(logged_admin, app): response = logged_admin.post('/admin/settings', data={ 'registration_enabled': 'on', 'max_upload_mb': '12', 'smtp_host': 'smtp.example.com', 'smtp_port': '587', 'smtp_username': 'mailer', 'smtp_password': 'secret', 'smtp_sender': 'noreply@example.com', 'smtp_use_tls': 'on', 'company_name': 'Test Co' }, follow_redirects=True) assert response.status_code == 200 with app.app_context(): assert AppSetting.get('registration_enabled') == 'true' user = User.query.filter_by(email='user@test.com').first() user_id = user.id response = logged_admin.post(f'/admin/users/{user_id}/toggle-password-change', follow_redirects=True) assert response.status_code == 200 with app.app_context(): user = User.query.filter_by(email='user@test.com').first() assert user.must_change_password is True def test_admin_dashboard_system_info(logged_admin): response = logged_admin.get('/admin/') assert response.status_code == 200 assert b'Engine:' in response.data