File size: 7,000 Bytes
ef1ad9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import pytest
from app.config.env import env
from app.main import app
from app.utils.database import Base, get_db
from fastapi.testclient import TestClient
from sqlalchemy import Boolean, String, Table, create_engine, event
from sqlalchemy.dialects.postgresql import ARRAY, BIT
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import StaticPool

# SQLite database URL for testing
# SQLITE_DATABASE_URL = "sqlite:///./test_db.db"
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)

# Create a SQLAlchemy engine
# engine = create_engine(
#     SQLITE_DATABASE_URL,
#     connect_args={"check_same_thread": False},
#     poolclass=StaticPool,
# )

# # Define a listener that will replace BIT with BOOLEAN in SQLite
# @event.listens_for(Table, "before_create")
# def before_create(target, connection, **kw):
#     if connection.dialect.name == "sqlite":
#         for column in target.columns:
#             if isinstance(column.type, BIT):
#                 column.type = Boolean()

# # Define a listener that will replace ARRAY with String in SQLite
# @event.listens_for(Table, "before_create")
# def before_create(target, connection, **kw):
#     if connection.dialect.name == "sqlite":
#         for column in target.columns:
#             if isinstance(column.type, ARRAY):
#                 column.type = String()

# # Create a sessionmaker to manage sessions
# TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# # Create tables in the database
# Base.metadata.create_all(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