import pytest from app.config.env import env from app.main import app from app.models import Base from app.utils.database import get_db from fastapi.testclient import TestClient from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker # SQLite database URL for testing DATABASE_CONNECTION_URI = env.DB_URI engine = create_engine(DATABASE_CONNECTION_URI) Base.metadata.create_all(engine) TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Generating db_session @pytest.fixture(scope="function") def db_session(): """Create a new database session with a rollback at the end of the test.""" connection = engine.connect() transaction = connection.begin() session = TestingSessionLocal(bind=connection) yield session session.close() transaction.rollback() connection.close() # Create a test client @pytest.fixture(scope="function") def test_client(db_session): """Create a test client that uses the override_get_db fixture to return a session.""" def override_get_db(): try: yield db_session finally: db_session.close() app.dependency_overrides[get_db] = override_get_db with TestClient(app) as test_client: yield test_client # Consumer headers # token valid till 19-oct-2024 (monthly expiry) @pytest.fixture(scope="function") def consumer_header(): consumer_token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im9QXzF3UzN2LXlHUFI1NzhaZ2wyUyJ9.eyJ1c2VyX2VtYWlsIjoibWlyYV90ZXN0dEB5b3BtYWlsLmNvbSIsImZpcnN0X25hbWUiOiJNaXJhIiwibGFzdF9uYW1lIjoiTWlyYSIsInVzZXJfaWQiOjQyNSwidXNlcl9waG9uZV9udW1iZXIiOiI3ODc4Nzg4Nzc4IiwiZW1haWxfdmVyaWZpZWQiOjEsInJvbGUiOiJjb25zdW1lciIsImdvb2dsZVVzZXJJZCI6ImF1dGgwfDQyNSIsIm5ld191c2VyIjowLCJ1c2VyX3Byb2ZpbGVfZXhpc3RzIjoxLCJwZW5kaW5nX2FwcGxpY2F0aW9uX2lkIjowLCJpc3MiOiJodHRwczovL21pcmFsYWJzYWkudXMuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDQyNSIsImF1ZCI6WyJBdXRoMCBVc2VyIEFwaSIsImh0dHBzOi8vbWlyYWxhYnNhaS51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NzQ5NTIxLCJleHAiOjE3MjkzNDE1MjEsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJhenAiOiI3WHg2Q1RUbGtJcm5PYTNwUkJ4ZUkwRzAwVGhoVDlDZCIsInBlcm1pc3Npb25zIjpbImNyZWF0ZTpsb2FuIiwidXBkYXRlOmxvYW4iXX0.GPoJQDr2MXpU3aZ9pc6H7F6rHtvS4SYRQV6sX0RAUOYoTcevyENHyzdN48D_Bbzy78p3oE-e2BEU8tudvufiWDsaZcuHMYtpiO0miKoQaUaRxD9caSpHG1FQHM37y6MzjuL921o_nNWaav4P0hOVCX-yy-e_VprZik8t6h7yQPkVsJEAOyVnnoRGXa1ZhpuWG1otgSk-ztG4MJmShgvUoWqoFV2TT80OEhxfGgNxS3eG-9_1FRD4CVJ4oSnMukWXZpPIb-gRZbbrvk78JkpSGPnxg4sjwhlNPFpuPcjdijGcUOHRxd7cSbQgJyokmmZWlWNS12ynbXoL2-L9VEnHcg" headers = {"Authorization": f"Bearer {consumer_token}"} return headers # Loan officer headers # token valid till 19-oct-2024 (monthly expiry) @pytest.fixture(scope="function") def loan_officer_header(): loan_officer_token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im9QXzF3UzN2LXlHUFI1NzhaZ2wyUyJ9.eyJ1c2VyX2VtYWlsIjoibmF2YWxAbWlyYWxhYnMuYWkiLCJmaXJzdF9uYW1lIjoiTmF2YWwiLCJsYXN0X25hbWUiOiJWZXJtYSIsInVzZXJfaWQiOjM2MSwidXNlcl9waG9uZV9udW1iZXIiOiI4OTg5ODk4OTg5IiwiZW1haWxfdmVyaWZpZWQiOjEsInJvbGUiOiJsb2FuX29mZmljZXIiLCJnb29nbGVVc2VySWQiOiJhdXRoMHwzNjEiLCJuZXdfdXNlciI6MCwidXNlcl9wcm9maWxlX2V4aXN0cyI6MCwicGVuZGluZ19hcHBsaWNhdGlvbl9pZCI6MCwiaXNzIjoiaHR0cHM6Ly9taXJhbGFic2FpLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHwzNjEiLCJhdWQiOlsiQXV0aDAgVXNlciBBcGkiLCJodHRwczovL21pcmFsYWJzYWkudXMuYXV0aDAuY29tL3VzZXJpbmZvIl0sImlhdCI6MTcyNjc0OTM4MiwiZXhwIjoxNzI5MzQxMzgyLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiYXpwIjoidGRVM2pIenhWTWNjWWZsQU5PVW1rcnNjOWU5RDEzdTMiLCJwZXJtaXNzaW9ucyI6WyJjcmVhdGU6bG9hbiIsImdldDpsZWFkIiwidXBkYXRlOmxvYW4iXX0.ac_-0ZFrDqQzCb1iXtSYmucDCgzXLbf6IfealhnMon-oz_qb_v3eF0cTT3aemR9sCJn0jeAWG5k9QPsN2uhOy04mtBBbITRZS-nem2WzC1f3TaAMFrcmR313Bsf7FVLa2wYPYlx-LOl3VtyjsCNPeV11C_RPpzHE4gbqU5TkR0C8bpaogJZIZfqcWrPbm13m_ex1bc8nwQxQmUW24y-gq8ChRVIhmjZOXw8AVvuWcC4-6fGR-AmridTWc1zceRxczcL0uhv-vdBKJuy1Lbu0LjrLvVlQ3KWEKlxpBD0zmNLsdmMKKTj2Sqw_gcP1SjBLylsXfpRjNdn3TNZEEOCjcA" headers = {"Authorization": f"Bearer {loan_officer_token}"} return headers # Loan officer admin headers # token valid till 19-oct-2024 (monthly expiry) @pytest.fixture(scope="function") def loan_officer_admin_header(): loan_officer_admin_token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im9QXzF3UzN2LXlHUFI1NzhaZ2wyUyJ9.eyJ1c2VyX2VtYWlsIjoibmF2YWwudmVybWFAdGVjaGRvbWUubmV0LmluIiwiZmlyc3RfbmFtZSI6Ik5hdmFsIiwibGFzdF9uYW1lIjoiU2luZ2giLCJ1c2VyX2lkIjoxMjIyLCJ1c2VyX3Bob25lX251bWJlciI6Ijk5ODg2NjU1NzciLCJlbWFpbF92ZXJpZmllZCI6MSwicm9sZSI6ImxvYW5fb2ZmaWNlcl9hZG1pbiIsImdvb2dsZVVzZXJJZCI6ImF1dGgwfDEyMjIiLCJuZXdfdXNlciI6MCwidXNlcl9wcm9maWxlX2V4aXN0cyI6MCwicGVuZGluZ19hcHBsaWNhdGlvbl9pZCI6MCwiaXNzIjoiaHR0cHM6Ly9taXJhbGFic2FpLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHwxMjIyIiwiYXVkIjpbIkF1dGgwIFVzZXIgQXBpIiwiaHR0cHM6Ly9taXJhbGFic2FpLnVzLmF1dGgwLmNvbS91c2VyaW5mbyJdLCJpYXQiOjE3MjY3NDk0NDUsImV4cCI6MTcyOTM0MTQ0NSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCIsImF6cCI6InRkVTNqSHp4Vk1jY1lmbEFOT1Vta3JzYzllOUQxM3UzIiwicGVybWlzc2lvbnMiOlsiY3JlYXRlOmxvYW4iLCJnZXQ6bGVhZCIsImdldDpyZXBvcnRzIiwidXBkYXRlOmxvYW4iXX0.WAsPX3n_aCcwkHJXCOA3HUjnecqHvk-xwCILkKQ3lFjdSqCviBPMjD7_cjepQ4a2eyMl858fY5H1nYHkWvmNTRu-gWT8EC7MoxanYlvR5qTH6Qqz53_QzoU6_yWcuyOq2ACOHYhaeLgjwyxYWvNDwLVa85TQwHXfmL1vBGSblAAIPX2AFNfB2YRx0Ogjh7QJa4F25DKARIX4FeKOxN9v4vi8gm_uJOdTPjpN3SS9Iv1lyvyAOE9OVgZLVGdKI7Kx4UXlBGg0W_56JDqLVQ0Bf_-_h98ojSRW_QrVfRwbxq4ZoJ-uArWlvbxm3Psu0uAusY0hU2AwbIyHdfvxAmW2uw" headers = {"Authorization": f"Bearer {loan_officer_admin_token}"} return headers # test application id @pytest.fixture(scope="function") def application_id(): return 275 # test user id @pytest.fixture(scope="function") def user_id(): return 425