|
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
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
@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()
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def application_id():
|
|
return 275
|
|
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def user_id():
|
|
return 425
|
|
|