aboutsummaryrefslogtreecommitdiff
"""Fixtures and utilities for resource-related tests"""
import pytest

from gn_auth.auth.db import sqlite3 as db

from .group_fixtures import (
    TEST_RESOURCES,
    TEST_GROUP_01,
    TEST_GROUP_02,
    TEST_RESOURCES_GROUP_01,
    TEST_RESOURCES_GROUP_02)

@pytest.fixture(scope="function")
def fxtr_resources(fxtr_group):# pylint: disable=[redefined-outer-name]
    """fixture: setup test resources in the database"""
    conn, _group = fxtr_group
    ownership = tuple({
        "group_id": str(TEST_GROUP_01.group_id),
        "resource_id": str(res.resource_id)
    } for res in TEST_RESOURCES_GROUP_01) + tuple({
        "group_id": str(TEST_GROUP_02.group_id),
        "resource_id": str(res.resource_id)
    } for res in TEST_RESOURCES_GROUP_02)

    with db.cursor(conn) as cursor:
        cursor.executemany(
            "INSERT INTO resources VALUES (?,?,?,?)",
        ((str(res.resource_id), res.resource_name,
          str(res.resource_category.resource_category_id),
          1 if res.public else 0) for res in TEST_RESOURCES))
        cursor.executemany(
            "INSERT INTO resource_ownership(group_id, resource_id) "
            "VALUES (:group_id, :resource_id)",
            ownership)

    yield (conn, TEST_RESOURCES)

    with db.cursor(conn) as cursor:
        cursor.executemany(
            "DELETE FROM resource_ownership "
            "WHERE group_id=:group_id AND resource_id=:resource_id",
            ownership)
        cursor.executemany("DELETE FROM resources WHERE resource_id=?",
                           ((str(res.resource_id),)
         for res in TEST_RESOURCES))