Skip to content

Commit

Permalink
Prepare tests
Browse files Browse the repository at this point in the history
  • Loading branch information
adferrand committed Aug 11, 2023
1 parent 98745e7 commit cb6729b
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 10 deletions.
7 changes: 4 additions & 3 deletions src/lexicon/client.py
Expand Up @@ -17,6 +17,7 @@ class _ClientExecutor:
Represents one set of commands against the Client
for a given resolved Provider already authenticated.
"""

def __init__(self, provider: Provider):
self.provider = provider

Expand Down Expand Up @@ -134,7 +135,7 @@ def __enter__(self) -> "_ClientExecutor":
self._provider = self.provider_class(self.config)
self._provider.authenticate()
return _ClientExecutor(self._provider)

def __exit__(self, exc_type, exc_value, traceback) -> None:
self._provider.cleanup()
self._provider = None
Expand All @@ -145,12 +146,12 @@ def execute(self) -> Union[bool, List[Dict]]:
raise AttributeError("action")
if not self.config.resolve("lexicon:type"):
raise AttributeError("type")

identifier = self.config.resolve("lexicon:identifier")
record_type = self.config.resolve("lexicon:type")
name = self.config.resolve("lexicon:name")
content = self.config.resolve("lexicon:content")

try:
executor = self.__enter__()

Expand Down
110 changes: 103 additions & 7 deletions tests/test_library.py
Expand Up @@ -31,7 +31,9 @@ def test_unknown_provider_raises_error_on_instantiation(lexicon_client):
)


def test_missing_required_client_config_parameter_raises_error_on_instantiation(lexicon_client, mock_provider):
def test_missing_required_client_config_parameter_raises_error_on_instantiation(
lexicon_client, mock_provider
):
with pytest.raises(AttributeError):
lexicon_client.Client(
ConfigResolver().with_dict(
Expand Down Expand Up @@ -79,7 +81,7 @@ def test_missing_required_client_config_parameter_raises_error_on_execute(
).execute()


def test_missing_optional_client_config_parameter_does_not_raise_error(
def test_missing_optional_client_config_parameter_does_not_raise_error_on_execute(
lexicon_client, mock_provider
):
lexicon_client.Client(
Expand All @@ -93,10 +95,10 @@ def test_missing_optional_client_config_parameter_does_not_raise_error(
"no-content": "fake",
}
)
)
).execute()


def test_list_action_is_correctly_handled_by_provider(
def test_list_action_is_correctly_handled_by_provider_on_execute(
capsys, lexicon_client, mock_provider
):
client = lexicon_client.Client(
Expand All @@ -123,7 +125,30 @@ def test_list_action_is_correctly_handled_by_provider(
assert results["content"] == "fake-content"


def test_create_action_is_correctly_handled_by_provider(
def test_list_action_is_correctly_handled_by_provider_on_context_manager(
capsys, lexicon_client, mock_provider
):
with lexicon_client.Client(
ConfigResolver().with_dict(
{
"provider_name": "fakeprovider",
"domain": "example.com",
}
)
) as client:
results = client.list_records("TXT", "fake", "fake-content")

out, _ = capsys.readouterr()

assert "Authenticate action" in out
assert results["action"] == "list"
assert results["domain"] == "example.com"
assert results["type"] == "TXT"
assert results["name"] == "fake"
assert results["content"] == "fake-content"


def test_create_action_is_correctly_handled_by_provider_on_execute(
capsys, lexicon_client, mock_provider
):
client = lexicon_client.Client(
Expand All @@ -150,7 +175,30 @@ def test_create_action_is_correctly_handled_by_provider(
assert results["content"] == "fake-content"


def test_update_action_is_correctly_handled_by_provider(
def test_create_action_is_correctly_handled_by_provider_on_context_manager(
capsys, lexicon_client, mock_provider
):
with lexicon_client.Client(
ConfigResolver().with_dict(
{
"provider_name": "fakeprovider",
"domain": "example.com",
}
)
) as client:
results = client.create_record("TXT", "fake", "fake-content")

out, _ = capsys.readouterr()

assert "Authenticate action" in out
assert results["action"] == "create"
assert results["domain"] == "example.com"
assert results["type"] == "TXT"
assert results["name"] == "fake"
assert results["content"] == "fake-content"


def test_update_action_is_correctly_handled_by_provider_on_execute(
capsys, lexicon_client, mock_provider
):
client = lexicon_client.Client(
Expand Down Expand Up @@ -179,7 +227,31 @@ def test_update_action_is_correctly_handled_by_provider(
assert results["content"] == "fake-content"


def test_delete_action_is_correctly_handled_by_provider(
def test_update_action_is_correctly_handled_by_provider_on_context_manager(
capsys, lexicon_client, mock_provider
):
with lexicon_client.Client(
ConfigResolver().with_dict(
{
"provider_name": "fakeprovider",
"domain": "example.com",
}
)
) as client:
results = client.update_record("fake-id", "TXT", "fake", "fake-content")

out, _ = capsys.readouterr()

assert "Authenticate action" in out
assert results["action"] == "update"
assert results["domain"] == "example.com"
assert results["identifier"] == "fake-id"
assert results["type"] == "TXT"
assert results["name"] == "fake"
assert results["content"] == "fake-content"


def test_delete_action_is_correctly_handled_by_provider_on_execute(
capsys, lexicon_client, mock_provider
):
client = lexicon_client.Client(
Expand All @@ -206,3 +278,27 @@ def test_delete_action_is_correctly_handled_by_provider(
assert results["type"] == "TXT"
assert results["name"] == "fake"
assert results["content"] == "fake-content"


def test_delete_action_is_correctly_handled_by_provider_on_context_manager(
capsys, lexicon_client, mock_provider
):
with lexicon_client.Client(
ConfigResolver().with_dict(
{
"provider_name": "fakeprovider",
"domain": "example.com",
}
)
) as client:
results = client.delete_record("fake-id", "TXT", "fake", "fake-content")

out, _ = capsys.readouterr()

assert "Authenticate action" in out
assert results["action"] == "delete"
assert results["domain"] == "example.com"
assert results["identifier"] == "fake-id"
assert results["type"] == "TXT"
assert results["name"] == "fake"
assert results["content"] == "fake-content"

0 comments on commit cb6729b

Please sign in to comment.