55from urllib .parse import quote_plus as quote
66from urllib .parse import urljoin
77
8- import asyncpg
8+ import psycopg
99import pytest
1010from fastapi import APIRouter
1111from httpx import ASGITransport , AsyncClient
@@ -63,12 +63,6 @@ def database(postgresql_proc):
6363 version = postgresql_proc .version ,
6464 password = "a2Vw:yk=)CdSis[fek]tW=/o" ,
6565 ) as jan :
66- connection = f"postgresql://{ jan .user } :{ quote (jan .password )} @{ jan .host } :{ jan .port } /{ jan .dbname } "
67- with PgstacDB (dsn = connection ) as db :
68- migrator = Migrate (db )
69- version = migrator .run_migration ()
70- assert version
71-
7266 yield jan
7367
7468
@@ -77,25 +71,26 @@ def database(postgresql_proc):
7771 # "0.8.6",
7872 "0.9.8" ,
7973 ],
80- autouse = True ,
74+ # autouse=True,
8175)
82- async def pgstac (request , database ):
76+ def pgstac (request , database ):
77+ pgstac_version = request .param
78+
8379 connection = f"postgresql://{ database .user } :{ quote (database .password )} @{ database .host } :{ database .port } /{ database .dbname } "
84- yield
85- conn = await asyncpg .connect (dsn = connection )
86- await conn .execute (
87- """
88- DROP SCHEMA IF EXISTS pgstac CASCADE;
89- """
90- )
91- await conn .close ()
80+ # Clear PgSTAC
81+ with psycopg .connect (connection ) as conn :
82+ with conn .cursor () as cur :
83+ cur .execute ("DROP SCHEMA IF EXISTS pgstac CASCADE;" )
84+
9285 with PgstacDB (dsn = connection ) as db :
9386 migrator = Migrate (db )
94- version = migrator .run_migration (toversion = request . param )
87+ version = migrator .run_migration (toversion = pgstac_version )
9588
9689 assert version == request .param
9790 logger .info (f"PGStac Migrated to { version } " )
9891
92+ yield database
93+
9994
10095# Run all the tests that use the api_client in both db hydrate and api hydrate mode
10196@pytest .fixture (
@@ -199,13 +194,13 @@ def api_client(request):
199194
200195
201196@pytest .fixture (scope = "function" )
202- async def app (api_client , database ):
197+ async def app (api_client , pgstac ):
203198 postgres_settings = PostgresSettings (
204- pguser = database .user ,
205- pgpassword = database .password ,
206- pghost = database .host ,
207- pgport = database .port ,
208- pgdatabase = database .dbname ,
199+ pguser = pgstac .user ,
200+ pgpassword = pgstac .password ,
201+ pghost = pgstac .host ,
202+ pgport = pgstac .port ,
203+ pgdatabase = pgstac .dbname ,
209204 )
210205 logger .info ("Creating app Fixture" )
211206 app = api_client .app
@@ -294,7 +289,7 @@ async def load_test2_item(app_client, load_test_data, load_test2_collection):
294289
295290
296291@pytest .fixture (scope = "function" )
297- async def app_no_ext (database ):
292+ async def app_no_ext (pgstac ):
298293 """Default stac-fastapi-pgstac application without only the transaction extensions."""
299294 api_settings = Settings (testing = True )
300295 api_client_no_ext = StacApi (
@@ -307,11 +302,11 @@ async def app_no_ext(database):
307302 )
308303
309304 postgres_settings = PostgresSettings (
310- pguser = database .user ,
311- pgpassword = database .password ,
312- pghost = database .host ,
313- pgport = database .port ,
314- pgdatabase = database .dbname ,
305+ pguser = pgstac .user ,
306+ pgpassword = pgstac .password ,
307+ pghost = pgstac .host ,
308+ pgport = pgstac .port ,
309+ pgdatabase = pgstac .dbname ,
315310 )
316311 logger .info ("Creating app Fixture" )
317312 await connect_to_db (
@@ -335,7 +330,7 @@ async def app_client_no_ext(app_no_ext):
335330
336331
337332@pytest .fixture (scope = "function" )
338- async def app_no_transaction (database ):
333+ async def app_no_transaction (pgstac ):
339334 """Default stac-fastapi-pgstac application without any extensions."""
340335 api_settings = Settings (testing = True )
341336 api = StacApi (
@@ -346,11 +341,11 @@ async def app_no_transaction(database):
346341 )
347342
348343 postgres_settings = PostgresSettings (
349- pguser = database .user ,
350- pgpassword = database .password ,
351- pghost = database .host ,
352- pgport = database .port ,
353- pgdatabase = database .dbname ,
344+ pguser = pgstac .user ,
345+ pgpassword = pgstac .password ,
346+ pghost = pgstac .host ,
347+ pgport = pgstac .port ,
348+ pgdatabase = pgstac .dbname ,
354349 )
355350 logger .info ("Creating app Fixture" )
356351 await connect_to_db (
@@ -374,13 +369,13 @@ async def app_client_no_transaction(app_no_transaction):
374369
375370
376371@pytest .fixture (scope = "function" )
377- async def default_app (database , monkeypatch ):
372+ async def default_app (pgstac , monkeypatch ):
378373 """Test default stac-fastapi-pgstac application."""
379- monkeypatch .setenv ("PGUSER" , database .user )
380- monkeypatch .setenv ("PGPASSWORD" , database .password )
381- monkeypatch .setenv ("PGHOST" , database .host )
382- monkeypatch .setenv ("PGPORT" , str (database .port ))
383- monkeypatch .setenv ("PGDATABASE" , database .dbname )
374+ monkeypatch .setenv ("PGUSER" , pgstac .user )
375+ monkeypatch .setenv ("PGPASSWORD" , pgstac .password )
376+ monkeypatch .setenv ("PGHOST" , pgstac .host )
377+ monkeypatch .setenv ("PGPORT" , str (pgstac .port ))
378+ monkeypatch .setenv ("PGDATABASE" , pgstac .dbname )
384379 monkeypatch .delenv ("ENABLED_EXTENSIONS" , raising = False )
385380
386381 monkeypatch .setenv ("ENABLE_TRANSACTIONS_EXTENSIONS" , "TRUE" )
@@ -403,7 +398,7 @@ async def default_client(default_app):
403398
404399
405400@pytest .fixture (scope = "function" )
406- async def app_advanced_freetext (database ):
401+ async def app_advanced_freetext (pgstac ):
407402 """Default stac-fastapi-pgstac application without only the transaction extensions."""
408403 api_settings = Settings (testing = True )
409404
@@ -429,11 +424,11 @@ async def app_advanced_freetext(database):
429424 )
430425
431426 postgres_settings = PostgresSettings (
432- pguser = database .user ,
433- pgpassword = database .password ,
434- pghost = database .host ,
435- pgport = database .port ,
436- pgdatabase = database .dbname ,
427+ pguser = pgstac .user ,
428+ pgpassword = pgstac .password ,
429+ pghost = pgstac .host ,
430+ pgport = pgstac .port ,
431+ pgdatabase = pgstac .dbname ,
437432 )
438433 logger .info ("Creating app Fixture" )
439434 await connect_to_db (
@@ -457,7 +452,7 @@ async def app_client_advanced_freetext(app_advanced_freetext):
457452
458453
459454@pytest .fixture (scope = "function" )
460- async def app_transaction_validation_ext (database ):
455+ async def app_transaction_validation_ext (pgstac ):
461456 """Default stac-fastapi-pgstac application with extension validation in transaction."""
462457 api_settings = Settings (testing = True , validate_extensions = True )
463458 api = StacApi (
@@ -473,11 +468,11 @@ async def app_transaction_validation_ext(database):
473468 )
474469
475470 postgres_settings = PostgresSettings (
476- pguser = database .user ,
477- pgpassword = database .password ,
478- pghost = database .host ,
479- pgport = database .port ,
480- pgdatabase = database .dbname ,
471+ pguser = pgstac .user ,
472+ pgpassword = pgstac .password ,
473+ pghost = pgstac .host ,
474+ pgport = pgstac .port ,
475+ pgdatabase = pgstac .dbname ,
481476 )
482477 logger .info ("Creating app Fixture" )
483478 await connect_to_db (
0 commit comments