From da92d6f835da07d9bd383be2daa02f0f08f16118 Mon Sep 17 00:00:00 2001 From: def Date: Sat, 27 Aug 2022 17:10:36 +0200 Subject: [PATCH] add more tests --- tests/test_graphql/test_api_storage.py | 201 ++++++++++++++++++++++++- 1 file changed, 197 insertions(+), 4 deletions(-) diff --git a/tests/test_graphql/test_api_storage.py b/tests/test_graphql/test_api_storage.py index 5d49dda7..2325f8c6 100644 --- a/tests/test_graphql/test_api_storage.py +++ b/tests/test_graphql/test_api_storage.py @@ -27,6 +27,33 @@ class BlockDevicesMock: def get_block_device(self, name: str): return 0 + def mount(self): + return True + + def unmount(self): + return True + + def resize(self): + pass + + returncode = 0 + +class BlockDevicesMockReturnFalse: + """Mock BlockDevices""" + + def __init__(self, args, **kwargs): + self.args = args + self.kwargs = kwargs + + def get_block_device(self, name: str): + return 0 + + def mount(self): + return False + + def unmount(self): + return False + def resize(self): pass @@ -42,7 +69,15 @@ def mock_block_device_return_none(mocker): @pytest.fixture -def mock_block_device_return(mocker): +def mock_block_device_return_true(mocker): + mock = mocker.patch( + "selfprivacy_api.graphql.mutations.storage_mutation.BlockDevices", autospec=True + ) + return mock + + +@pytest.fixture +def mock_block_device_return_false(mocker): mock = mocker.patch( "selfprivacy_api.graphql.mutations.storage_mutation.BlockDevices", autospec=True ) @@ -60,7 +95,7 @@ mutation resizeVolume($name: String!) { """ -def test_graphql_resize_volumea_unathorized_client(client, mock_block_device): +def test_graphql_resize_volumea_unathorized_client(client, mock_block_device_return_true): response = client.post( "/graphql", json={ @@ -73,7 +108,7 @@ def test_graphql_resize_volumea_unathorized_client(client, mock_block_device): def test_graphql_resize_volume_nonexistent_block_device( - authorized_client, mock_block_device + authorized_client, mock_block_device_return_none ): response = authorized_client.post( "/graphql", @@ -90,7 +125,7 @@ def test_graphql_resize_volume_nonexistent_block_device( assert response.json()["data"]["resizeVolume"]["success"] is False -def test_graphql_resize_volume(authorized_client, mock_block_device): +def test_graphql_resize_volume(authorized_client, mock_block_device_return_true): response = authorized_client.post( "/graphql", json={ @@ -104,3 +139,161 @@ def test_graphql_resize_volume(authorized_client, mock_block_device): assert response.json()["data"]["resizeVolume"]["code"] == 200 assert response.json()["data"]["resizeVolume"]["message"] is not None assert response.json()["data"]["resizeVolume"]["success"] is True + + + + +API_MOUNT_VOLUME_MUTATION = """ +mutation mountVolume($name: String!) { + mountVolume(name: $name) { + success + message + code + } +} +""" + + +def test_graphql_mount_volume_unathorized_client(client, mock_block_device_return_true): + response = client.post( + "/graphql", + json={ + "query": API_MOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is None + + +def test_graphql_mount_already_mounted_volume( + authorized_client, mock_block_device_return_false +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_MOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["mountVolume"]["code"] == 409 + assert response.json()["data"]["mountVolume"]["message"] is not None + assert response.json()["data"]["mountVolume"]["success"] is False + + +def test_graphql_mount_not_found_volume( + authorized_client, mock_block_device_return_none +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_MOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["mountVolume"]["code"] == 409 + assert response.json()["data"]["mountVolume"]["message"] is not None + assert response.json()["data"]["mountVolume"]["success"] is False + + + +def test_graphql_mount_volume( + authorized_client, mock_block_device_return_true +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_MOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["mountVolume"]["code"] == 200 + assert response.json()["data"]["mountVolume"]["message"] is not None + assert response.json()["data"]["mountVolume"]["success"] is True + + +API_UNMOUNT_VOLUME_MUTATION = """ +mutation unmountVolume($name: String!) { + unmountVolume(name: $name) { + success + message + code + } +} +""" + + +def test_graphql_unmount_volume_unathorized_client(client, mock_block_device_return_true): + response = client.post( + "/graphql", + json={ + "query": API_UNMOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is None + + +def test_graphql_unmount_not_fount_volume( + authorized_client, mock_block_device_return_none +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_UNMOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["unmountVolume"]["code"] == 404 + assert response.json()["data"]["unmountVolume"]["message"] is not None + assert response.json()["data"]["unmountVolume"]["success"] is False + + +def test_graphql_unmount_volume_false( + authorized_client, mock_block_device_return_false +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_UNMOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["unmountVolume"]["code"] == 409 + assert response.json()["data"]["unmountVolume"]["message"] is not None + assert response.json()["data"]["unmountVolume"]["success"] is False + + +def test_graphql_unmount_volume( + authorized_client, mock_block_device_return_true +): + response = authorized_client.post( + "/graphql", + json={ + "query": API_UNMOUNT_VOLUME_MUTATION, + "variables": {"name": "sdx"}, + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert response.json()["data"]["unmountVolume"]["code"] == 200 + assert response.json()["data"]["unmountVolume"]["message"] is not None + assert response.json()["data"]["unmountVolume"]["success"] is True +