Charmed-Kubernetes/kubernetes-control-plane/tests/unit/conftest.py

53 lines
1.7 KiB
Python

import os
import pytest
from charms.unit_test import patch_module, identity, MockKV, flags, MockEndpoint
ch = patch_module("charmhelpers")
ch.core.hookenv.atexit = identity
ch.core.hookenv.charm_dir.return_value = "charm_dir"
ch.core.unitdata.kv.return_value = MockKV()
reactive = patch_module("charms.reactive")
reactive.when.return_value = identity
reactive.when_all.return_value = identity
reactive.when_any.return_value = identity
reactive.when_not.return_value = identity
reactive.when_not_all.return_value = identity
reactive.when_none.return_value = identity
reactive.hook.return_value = identity
reactive.set_flag.side_effect = flags.add
reactive.clear_flag.side_effect = flags.discard
reactive.set_state.side_effect = flags.add
reactive.remove_state.side_effect = flags.discard
reactive.toggle_flag.side_effect = lambda f, s: (
flags.add(f) if s else flags.discard(f)
)
reactive.is_flag_set.side_effect = lambda f: f in flags
reactive.is_state.side_effect = lambda f: f in flags
reactive.get_flags.side_effect = lambda: sorted(flags)
reactive.get_unset_flags.side_effect = lambda *f: sorted(set(f) - flags)
reactive.Endpoint = MockEndpoint
os.environ["JUJU_MODEL_UUID"] = "test-1234"
os.environ["JUJU_UNIT_NAME"] = "test/0"
os.environ["JUJU_MACHINE_ID"] = "0"
os.environ["JUJU_AVAILABILITY_ZONE"] = ""
options = patch_module("charms.layer.options")
options.get.return_value = "charm-{app}"
from charms.layer.vault_kv import VaultAppKV, VaultUnitKV # noqa: E402
@pytest.fixture(autouse=True)
def destroy_vault_kv():
"""Teardown singleton instance created in each unit test."""
yield
for cls in (VaultAppKV, VaultUnitKV):
if hasattr(cls, "_singleton_instance"):
del cls._singleton_instance