"""API integration test fixtures.""" from contextlib import contextmanager from os import getenv import pymysql import pytest from tests.consts.sql import ( DELETE_PRODUCT, DELETE_PRODUCT_STORE, INSERT_PRODUCT, INSERT_PRODUCT_STORE, ) from tests.integration.utils.client import APIClient @pytest.fixture def api_client(): """Test client for ows-timed-release.""" return APIClient(7123) @contextmanager def db_conn(): """Connect to QA DB.""" user = getenv('RDS_MYSQL_USER') password = getenv('RDS_MYSQL_PASSWORD') database = getenv('RDS_MYSQL_DATABASE') port = int(getenv('RDS_MYSQL_PORT')) host = getenv('RDS_MYSQL_HOST') connect_timeout = 5 conn = None try: conn = pymysql.connect( host=host, user=user, password=password, database=database, connect_timeout=connect_timeout, port=port, cursorclass=pymysql.cursors.DictCursor) yield conn finally: if conn: conn.close() @pytest.fixture def db_insert(): """Insert and deletes data fixture.""" with db_conn() as conn: with conn.cursor() as cursor: try: cursor.execute(INSERT_PRODUCT) cursor.execute(INSERT_PRODUCT_STORE) conn.commit() yield finally: cursor.execute(DELETE_PRODUCT_STORE) cursor.execute(DELETE_PRODUCT) conn.commit() @pytest.fixture def db_delete(): """Delete data fixture.""" with db_conn() as conn: with conn.cursor() as cursor: try: yield finally: cursor.execute(DELETE_PRODUCT_STORE) cursor.execute(DELETE_PRODUCT) conn.commit()