Initial commit
This commit is contained in:
99
tests/test_client_backend.py
Normal file
99
tests/test_client_backend.py
Normal file
@ -0,0 +1,99 @@
|
||||
"""Tests of client loader."""
|
||||
|
||||
import unittest
|
||||
from sshecret.server import client_loader
|
||||
from sshecret.utils import generate_client_object
|
||||
from sshecret.testing import TestClientSpec, test_context
|
||||
|
||||
|
||||
class TestFileTableBackend(unittest.TestCase):
|
||||
"""Test the file table backend."""
|
||||
|
||||
def setUp(self) -> None:
|
||||
"""Set up tests."""
|
||||
self.test_dataset = [
|
||||
TestClientSpec("webserver", {"SECRET_TOKEN": "mysecrettoken"}),
|
||||
TestClientSpec("dbserver", {"DB_ROOT_PASSWORD": "mysecretpassword"}),
|
||||
]
|
||||
|
||||
def test_init(self) -> None:
|
||||
"""Test instance creation."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
self.assertGreater(len(backend.table), 0)
|
||||
|
||||
def test_lookup_name(self) -> None:
|
||||
"""Test lookup name."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
webserver = backend.lookup_name("webserver")
|
||||
self.assertIsNotNone(webserver)
|
||||
self.assertEqual(webserver.name, "webserver")
|
||||
|
||||
def test_add_client(self) -> None:
|
||||
"""Test whether it is possible to add a client."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
new_client = generate_client_object(
|
||||
"backupserver", {"BACKUP_KEY": "mysecretbackupkey"}
|
||||
)
|
||||
backend.add_client(new_client)
|
||||
expected_file = testdir / "backupserver.json"
|
||||
self.assertTrue(expected_file.exists())
|
||||
result = backend.lookup_name("backupserver")
|
||||
self.assertIsNotNone(result)
|
||||
|
||||
def test_add_secret(self) -> None:
|
||||
"""Test whether it is possible to add a secret."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
backend.add_secret("webserver", "OTHER_SECRET_TOKEN", "myothersecrettoken")
|
||||
webserver = backend.lookup_name("webserver")
|
||||
assert webserver is not None
|
||||
self.assertIsNotNone(webserver.secrets.get("OTHER_SECRET_TOKEN"))
|
||||
self.assertNotEqual(
|
||||
webserver.secrets["OTHER_SECRET_TOKEN"], "myothersecrettoken"
|
||||
)
|
||||
|
||||
backend.add_secret(
|
||||
"dbserver", "UNENCRYPTED_THING", "thisiscleartext", encrypted=True
|
||||
)
|
||||
dbserver = backend.lookup_name("dbserver")
|
||||
assert dbserver is not None
|
||||
self.assertEqual(dbserver.secrets["UNENCRYPTED_THING"], "thisiscleartext")
|
||||
|
||||
def test_update_client(self) -> None:
|
||||
"""Test update_client method."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
webserver = backend.lookup_name("webserver")
|
||||
assert webserver is not None
|
||||
webserver.allowed_ips = "192.0.2.1"
|
||||
backend.update_client("webserver", webserver)
|
||||
new_obj = backend.lookup_name("webserver")
|
||||
assert new_obj is not None
|
||||
self.assertEqual(new_obj.allowed_ips, "192.0.2.1")
|
||||
|
||||
def test_remove_client(self) -> None:
|
||||
"""Test removal of client."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
backend.remove_client("webserver", persistent=False)
|
||||
webserver = backend.lookup_name("webserver")
|
||||
self.assertIsNone(webserver)
|
||||
webserver_file = testdir / "webserver.json"
|
||||
self.assertTrue(webserver_file.exists())
|
||||
|
||||
def test_remove_client_persistent(self) -> None:
|
||||
"""Test removal of client."""
|
||||
with test_context(self.test_dataset) as testdir:
|
||||
backend = client_loader.FileTableBackend(testdir)
|
||||
backend.remove_client("webserver", persistent=True)
|
||||
webserver = backend.lookup_name("webserver")
|
||||
self.assertIsNone(webserver)
|
||||
webserver_file = testdir / "webserver.json"
|
||||
self.assertFalse(webserver_file.exists())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user