[TEST] use clean db in postgres tests (#1928)

This commit is contained in:
jackstar12 2023-09-12 12:02:01 +02:00 committed by GitHub
parent bda054415a
commit c29e7a1759
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 2 deletions

View file

@ -7,8 +7,12 @@ import time
from subprocess import PIPE, Popen, TimeoutExpired
from typing import Tuple
import psycopg2
from loguru import logger
from sqlalchemy.engine.url import make_url
from lnbits import core
from lnbits.db import DB_TYPE, POSTGRES
from lnbits.wallets import get_wallet_class, set_wallet_class
@ -131,3 +135,28 @@ def pay_onchain(address: str, sats: int) -> str:
cmd = docker_bitcoin_cli.copy()
cmd.extend(["sendtoaddress", address, str(btc)])
return run_cmd(cmd)
def clean_database(settings):
if DB_TYPE == POSTGRES:
db_url = make_url(settings.lnbits_database_url)
conn = psycopg2.connect(settings.lnbits_database_url)
conn.autocommit = True
with conn.cursor() as cur:
try:
cur.execute("DROP DATABASE lnbits_test")
except psycopg2.errors.InvalidCatalogName:
pass
cur.execute("CREATE DATABASE lnbits_test")
db_url.database = "lnbits_test"
settings.lnbits_database_url = str(db_url)
core.db.__init__("database")
conn.close()
else:
# FIXME: do this once mock data is removed from test data folder
# os.remove(settings.lnbits_data_folder + "/database.sqlite3")
pass