1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
"""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))
|