Source code for baseplate.testing.lib.secrets
from typing import Dict
from baseplate import Span
from baseplate.lib.secrets import SecretsStore
from baseplate.testing.lib.file_watcher import FakeFileWatcher
[docs]class FakeSecretsStore(SecretsStore):
"""Fake secrets store for testing purposes.
Use this in place of a :py:class:`~baseplate.lib.secrets.SecretsStore` in
tests to avoid having to load an actual file:
.. testsetup::
from baseplate.testing.lib.secrets import FakeSecretsStore
.. doctest::
>>> secrets = FakeSecretsStore({
... "secrets": {
... "secret/foo/bar": {
... "type": "versioned",
... "current": "hunter2",
... },
... },
... })
>>> secrets.get_versioned("secret/foo/bar")
VersionedSecret(previous=None, current=b'hunter2', next=None)
.. versionadded:: 1.5
"""
# pylint: disable=super-init-not-called
def __init__(self, fake_secrets: Dict) -> None:
self._filewatcher = FakeFileWatcher(fake_secrets)
def make_object_for_context(self, name: str, span: Span) -> SecretsStore:
return self