-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathconftest.py
105 lines (86 loc) · 3.37 KB
/
conftest.py
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Copyright 2024 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
import pytest
from django.conf import settings
from aap_eda.core import enums, models
from aap_eda.core.management.commands.create_initial_data import (
CREDENTIAL_TYPES,
populate_credential_types,
)
from aap_eda.settings import redis as redis_settings
#################################################################
# Log capture factory
#################################################################
@pytest.fixture
def caplog_factory(caplog, request):
def _factory(logger, level=logging.INFO):
logger.setLevel(level)
original_handlers = logger.handlers[:]
logger.addHandler(caplog.handler)
def restore_handlers():
logger.removeHandler(caplog.handler)
logger.handlers = original_handlers
request.addfinalizer(restore_handlers)
return caplog
return _factory
#################################################################
# Organization
#################################################################
@pytest.fixture
def default_organization() -> models.Organization:
"Corresponds to migration add_default_organization"
return models.Organization.objects.get_or_create(
name=settings.DEFAULT_ORGANIZATION_NAME,
description="The default organization",
)[0]
#################################################################
# DB
#################################################################
@pytest.fixture
def preseed_credential_types(
default_organization: models.Organization,
) -> list[models.CredentialType]:
"""Preseed Credential Types."""
return populate_credential_types(CREDENTIAL_TYPES)
@pytest.fixture
def aap_credential_type(preseed_credential_types):
return models.CredentialType.objects.get(
name=enums.DefaultCredentialType.AAP
)
#################################################################
# Redis
#################################################################
@pytest.fixture
def redis_parameters() -> dict:
"""Provide redis parameters based on settings values."""
params = redis_settings.rq_redis_client_instantiation_parameters()
# TODO: figure out the db oddity described here-in.
#
# There's an oddity with non-HA unit tests and the use of
# an alternate db.
#
# For pragmatism we've removed the code here which attempted
# to avoid conflicting with a deployed environment by using a
# different database from that of the settings.
#
#
# One constant is that DAB RedisCluster, which does not support
# alternate dbs passes the EDA unit tests (which are part of
# CI processing) and that by using only the 0 db
# the same unit tests pass for non-HA whereas using an alternate
# db as this code previously did results in non-HA unit tests
# failing.
#
return params