test: db setup fix
Previous set up seemed to work but the db was persisting between tests, allowing for contamination.
This commit is contained in:
parent
fc6990c43d
commit
c0d353077b
1 changed files with 26 additions and 43 deletions
|
|
@ -20,13 +20,14 @@ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|||
|
||||
@pytest.fixture()
|
||||
def db_session():
|
||||
Base.metadata.drop_all(bind=engine)
|
||||
Base.metadata.create_all(bind=engine)
|
||||
db = SessionLocal()
|
||||
try:
|
||||
_seed(db) # extracted seeding logic into a plain function
|
||||
yield db
|
||||
except:
|
||||
db.rollback()
|
||||
raise
|
||||
finally:
|
||||
db.rollback()
|
||||
db.close()
|
||||
|
||||
|
||||
|
|
@ -43,43 +44,25 @@ async def client(db_session) -> AsyncGenerator[AsyncClient, None]:
|
|||
app.dependency_overrides.clear()
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def setup_database():
|
||||
Base.metadata.create_all(bind=engine)
|
||||
yield
|
||||
Base.metadata.drop_all(bind=engine)
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def seed_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
db.add(User(email="admin@test.com", first_name="Admin", last_name="Test", oidc_id="abcd-efgh-ijkl-mnop"))
|
||||
db.add(Contact(org_id=1))
|
||||
db.add(Contact(org_id=1))
|
||||
db.add(Contact(org_id=1))
|
||||
db.flush()
|
||||
db.add(Org(name="Test Org", root_user_id=1, billing_contact_id=1, owner_contact_id=1, security_contact_id=1,
|
||||
status="approved", intake_questionnaire="{}"))
|
||||
db.add(Service(name="Test Service", api_key="123456789"))
|
||||
db.add(Permission(service_id=1, resource="test_resource", action="read"))
|
||||
db.add(Group(name="Test Group"))
|
||||
db.flush()
|
||||
group_model = db.get(Group, 1)
|
||||
perm_model = db.get(Permission, 1)
|
||||
group_model.permission_rel.append(perm_model)
|
||||
user_model = db.get(User, 1)
|
||||
org_model = db.get(Org, 1)
|
||||
org_model.user_rel.append(user_model)
|
||||
db.flush()
|
||||
group_model.user_rel.append(user_model)
|
||||
db.commit()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def seed_data(setup_database, seed_db):
|
||||
yield
|
||||
|
||||
def _seed(db):
|
||||
db.add(User(email="admin@test.com", first_name="Admin", last_name="Test", oidc_id="abcd-efgh-ijkl-mnop"))
|
||||
db.add(Contact(org_id=1, email="billing@test.org", phonenumber="07521539927"))
|
||||
db.add(Contact(org_id=1, email="owner@test.org", phonenumber="07521539927"))
|
||||
db.add(Contact(org_id=1, email="security@test.org", phonenumber="07521539927"))
|
||||
db.flush()
|
||||
db.add(Org(name="Test Org", root_user_id=1, billing_contact_id=1, owner_contact_id=2, security_contact_id=3,
|
||||
status="approved", intake_questionnaire={"question_two": "answer two"}))
|
||||
db.add(Service(name="Test Service", api_key="123456789"))
|
||||
db.add(Permission(service_id=1, resource="test_resource", action="read"))
|
||||
db.add(Group(name="Test Group"))
|
||||
db.flush()
|
||||
group_model = db.get(Group, 1)
|
||||
perm_model = db.get(Permission, 1)
|
||||
group_model.permission_rel.append(perm_model)
|
||||
user_model = db.get(User, 1)
|
||||
org_model = db.get(Org, 1)
|
||||
org_model.user_rel.append(user_model)
|
||||
org_model.group_rel.append(group_model)
|
||||
db.flush()
|
||||
group_model.user_rel.append(user_model)
|
||||
db.commit()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue