import pytest from app import create_app from flask_jwt_extended import create_access_token from models import db, User from werkzeug.security import generate_password_hash @pytest.fixture def test_client(): """Creates a new instance of test app.""" app = create_app("testing") with app.test_client() as client: with app.app_context(): db.create_all() yield client db.session.remove() db.drop_all() @pytest.fixture def test_user(): """Create a new user for testing.""" user = User(username="testuser", email="test@example.com", password=generate_password_hash("testpass"), role="User") db.session.add(user) db.session.commit() return user @pytest.fixture def test_user2(): """Create a user nr 2 for testing.""" user2 = User(username="testuser2", email="test2@example.com", password=generate_password_hash("testpass2"), role="User") db.session.add(user2) db.session.commit() return user2 @pytest.fixture def test_admin(): """Create a new admin user for testing.""" admin = User(username="adminuser", email="admin@example.com", password=generate_password_hash("adminpass"), role="Administrator") db.session.add(admin) db.session.commit() return admin def login_test_user(identity): """Return Bearer auth header for user identified by provided id""" access_token = create_access_token(identity=str(identity)) auth_header = {"Authorization": f"Bearer {access_token}"} return auth_header