fix: service tests

This commit is contained in:
def 2022-10-21 20:37:32 +04:00 committed by Inex Code
parent e01b8ed8f0
commit b5183948af
3 changed files with 208 additions and 122 deletions

View file

@ -1,100 +1,99 @@
# pylint: disable=redefined-outer-name
# pylint: disable=unused-argument
import pytest import pytest
from tests.common import read_json
def get_service_by_id_return_none_mock():
return None
def get_service_by_id_mock(): class NextcloudMockReturnTrue:
return "nextcloud"
def service_to_graphql_service_mock():
pass
class BlockDevicesMock:
def get_block_device(self, name: str):
pass
class BlockDevicesReturnNoneMock:
def get_block_device(self, name: str):
return None
class NextcloudMock:
def __init__(self, args, **kwargs): def __init__(self, args, **kwargs):
self.args = args self.args = args
self.kwargs = kwargs self.kwargs = kwargs
def enable(self): def enable():
pass pass
def disable(self): def disable():
pass pass
def stop(self): def stop():
pass pass
def is_movable(self): def is_movable():
return True return True
def move_to_volume(self): def move_to_volume(what):
return None
def start():
pass
def restart():
pass pass
returncode = 0 returncode = 0
class NextcloudReturnFalseMock: class BlockDevices:
def get_block_device(location):
return True
class ProcessMock:
"""Mock subprocess.Popen"""
def __init__(self, args, **kwargs): def __init__(self, args, **kwargs):
self.args = args self.args = args
self.kwargs = kwargs self.kwargs = kwargs
def enable(self): def communicate(): # pylint: disable=no-method-argument
pass return (b"", None)
def disable(self):
pass
def stop(self):
pass
def is_movable(self):
return False
def move_to_volume(self):
pass
returncode = 0 returncode = 0
@pytest.fixture
def mock_subprocess_popen(mocker):
mock = mocker.patch("subprocess.Popen", autospec=True, return_value=ProcessMock)
return mock
@pytest.fixture
def one_user(mocker, datadir):
mocker.patch("selfprivacy_api.utils.USERDATA_FILE", new=datadir / "one_user.json")
assert read_json(datadir / "one_user.json")["users"] == [
{
"username": "user1",
"hashedPassword": "HASHED_PASSWORD_1",
"sshKeys": ["ssh-rsa KEY user1@pc"],
}
]
return datadir
@pytest.fixture @pytest.fixture
def mock_service_to_graphql_service(mocker): def mock_service_to_graphql_service(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.graphql.common_types.service.service_to_graphql_service", "selfprivacy_api.graphql.mutations.services_mutations.service_to_graphql_service",
autospec=True, autospec=True,
return_value=service_to_graphql_service_mock, return_value=None,
) )
return mock return mock
@pytest.fixture @pytest.fixture
def mock_nextcloud(mocker): def mock_job_to_api_job(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.services.nextcloud.__init__.Nextcloud", "selfprivacy_api.graphql.mutations.services_mutations.job_to_api_job",
autospec=True, autospec=True,
return_value=NextcloudMock, return_value=None,
) )
return mock return mock
@pytest.fixture @pytest.fixture
def mock_block_devices_return_none(mocker): def mock_block_devices_return_none(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.utils.block_devices.BlockDevices", "selfprivacy_api.utils.block_devices.BlockDevices",
autospec=True, autospec=True,
return_value=BlockDevicesReturnNoneMock, return_value=None,
) )
return mock return mock
@ -102,19 +101,9 @@ def mock_block_devices_return_none(mocker):
@pytest.fixture @pytest.fixture
def mock_block_devices(mocker): def mock_block_devices(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.utils.block_devices.BlockDevices", "selfprivacy_api.graphql.mutations.services_mutations.BlockDevices",
autospec=True, autospec=True,
return_value=BlockDevicesMock, return_value=BlockDevices,
)
return mock
@pytest.fixture
def mock_nextcloud_return_false(mocker):
mock = mocker.patch(
"selfprivacy_api.services.nextcloud.__init__.Nextcloud",
autospec=True,
return_value=NextcloudReturnFalseMock,
) )
return mock return mock
@ -122,9 +111,9 @@ def mock_nextcloud_return_false(mocker):
@pytest.fixture @pytest.fixture
def mock_get_service_by_id_return_none(mocker): def mock_get_service_by_id_return_none(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.services.__init__.get_service_by_id", "selfprivacy_api.graphql.mutations.services_mutations.get_service_by_id",
autospec=True, autospec=True,
return_value=mock_get_service_by_id_return_none, return_value=None,
) )
return mock return mock
@ -132,9 +121,9 @@ def mock_get_service_by_id_return_none(mocker):
@pytest.fixture @pytest.fixture
def mock_get_service_by_id(mocker): def mock_get_service_by_id(mocker):
mock = mocker.patch( mock = mocker.patch(
"selfprivacy_api.services.__init__.get_service_by_id", "selfprivacy_api.graphql.mutations.services_mutations.get_service_by_id",
autospec=True, autospec=True,
return_value=mock_get_service_by_id, return_value=NextcloudMockReturnTrue,
) )
return mock return mock
@ -143,8 +132,8 @@ def mock_get_service_by_id(mocker):
API_ENABLE_SERVICE_MUTATION = """ API_ENABLE_SERVICE_MUTATION = """
mutation enableService($service_id: String!) { mutation enableService($serviceId: String!) {
enableService(service_id: $service_id) { enableService(serviceId: $serviceId) {
success success
message message
code code
@ -154,13 +143,13 @@ mutation enableService($service_id: String!) {
def test_graphql_enable_service_unathorized_client( def test_graphql_enable_service_unathorized_client(
client, mock_get_service_by_id_return_none, mock_nextcloud client, mock_get_service_by_id_return_none, mock_subprocess_popen
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_ENABLE_SERVICE_MUTATION, "query": API_ENABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -168,13 +157,17 @@ def test_graphql_enable_service_unathorized_client(
def test_graphql_enable_not_found_service( def test_graphql_enable_not_found_service(
authorized_client, mock_get_service_by_id_return_none, mock_nextcloud authorized_client,
mock_get_service_by_id_return_none,
mock_subprocess_popen,
one_user,
mock_service_to_graphql_service,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_ENABLE_SERVICE_MUTATION, "query": API_ENABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -186,13 +179,17 @@ def test_graphql_enable_not_found_service(
def test_graphql_enable_service( def test_graphql_enable_service(
authorized_client, mock_get_service_by_id, mock_nextcloud authorized_client,
mock_get_service_by_id,
mock_subprocess_popen,
one_user,
mock_service_to_graphql_service,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_ENABLE_SERVICE_MUTATION, "query": API_ENABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -204,8 +201,8 @@ def test_graphql_enable_service(
API_DISABLE_SERVICE_MUTATION = """ API_DISABLE_SERVICE_MUTATION = """
mutation disableService($service_id: String!) { mutation disableService($serviceId: String!) {
disableService(service_id: $service_id) { disableService(serviceId: $serviceId) {
success success
message message
code code
@ -215,13 +212,17 @@ mutation disableService($service_id: String!) {
def test_graphql_disable_service_unathorized_client( def test_graphql_disable_service_unathorized_client(
client, mock_get_service_by_id_return_none, mock_nextcloud client,
mock_get_service_by_id_return_none,
mock_subprocess_popen,
one_user,
mock_service_to_graphql_service,
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_DISABLE_SERVICE_MUTATION, "query": API_DISABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -229,13 +230,17 @@ def test_graphql_disable_service_unathorized_client(
def test_graphql_disable_not_found_service( def test_graphql_disable_not_found_service(
authorized_client, mock_get_service_by_id_return_none, mock_nextcloud authorized_client,
mock_get_service_by_id_return_none,
mock_subprocess_popen,
one_user,
mock_service_to_graphql_service,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_DISABLE_SERVICE_MUTATION, "query": API_DISABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -247,13 +252,17 @@ def test_graphql_disable_not_found_service(
def test_graphql_disable_services( def test_graphql_disable_services(
authorized_client, mock_get_service_by_id, mock_nextcloud authorized_client,
mock_get_service_by_id,
mock_subprocess_popen,
one_user,
mock_service_to_graphql_service,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_DISABLE_SERVICE_MUTATION, "query": API_DISABLE_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -265,8 +274,8 @@ def test_graphql_disable_services(
API_STOP_SERVICE_MUTATION = """ API_STOP_SERVICE_MUTATION = """
mutation stopService($service_id: String!) { mutation stopService($serviceId: String!) {
stopService(service_id: $service_id) { stopService(serviceId: $serviceId) {
success success
message message
code code
@ -278,14 +287,15 @@ mutation stopService($service_id: String!) {
def test_graphql_stop_service_unathorized_client( def test_graphql_stop_service_unathorized_client(
client, client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_STOP_SERVICE_MUTATION, "query": API_STOP_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -295,14 +305,15 @@ def test_graphql_stop_service_unathorized_client(
def test_graphql_stop_not_found_service( def test_graphql_stop_not_found_service(
authorized_client, authorized_client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_STOP_SERVICE_MUTATION, "query": API_STOP_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -316,14 +327,15 @@ def test_graphql_stop_not_found_service(
def test_graphql_stop_services( def test_graphql_stop_services(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_STOP_SERVICE_MUTATION, "query": API_STOP_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -335,8 +347,8 @@ def test_graphql_stop_services(
API_START_SERVICE_MUTATION = """ API_START_SERVICE_MUTATION = """
mutation startService($service_id: String!) { mutation startService($serviceId: String!) {
startService(service_id: $service_id) { startService(serviceId: $serviceId) {
success success
message message
code code
@ -348,14 +360,15 @@ mutation startService($service_id: String!) {
def test_graphql_start_service_unathorized_client( def test_graphql_start_service_unathorized_client(
client, client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_START_SERVICE_MUTATION, "query": API_START_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -365,14 +378,15 @@ def test_graphql_start_service_unathorized_client(
def test_graphql_start_not_found_service( def test_graphql_start_not_found_service(
authorized_client, authorized_client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_START_SERVICE_MUTATION, "query": API_START_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -386,14 +400,15 @@ def test_graphql_start_not_found_service(
def test_graphql_start_services( def test_graphql_start_services(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_START_SERVICE_MUTATION, "query": API_START_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -405,8 +420,8 @@ def test_graphql_start_services(
API_RESTART_SERVICE_MUTATION = """ API_RESTART_SERVICE_MUTATION = """
mutation restartService($service_id: String!) { mutation restartService($serviceId: String!) {
restartService(service_id: $service_id) { restartService(serviceId: $serviceId) {
success success
message message
code code
@ -418,14 +433,15 @@ mutation restartService($service_id: String!) {
def test_graphql_restart_service_unathorized_client( def test_graphql_restart_service_unathorized_client(
client, client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_RESTART_SERVICE_MUTATION, "query": API_RESTART_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -435,14 +451,15 @@ def test_graphql_restart_service_unathorized_client(
def test_graphql_restart_not_found_service( def test_graphql_restart_not_found_service(
authorized_client, authorized_client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_RESTART_SERVICE_MUTATION, "query": API_RESTART_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -456,14 +473,15 @@ def test_graphql_restart_not_found_service(
def test_graphql_restart_service( def test_graphql_restart_service(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_RESTART_SERVICE_MUTATION, "query": API_RESTART_SERVICE_MUTATION,
"variables": {"service_id": "nextcloud"}, "variables": {"serviceId": "nextcloud"},
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -488,15 +506,16 @@ mutation moveService($input: MoveServiceInput!) {
def test_graphql_move_service_unathorized_client( def test_graphql_move_service_unathorized_client(
client, client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = client.post( response = client.post(
"/graphql", "/graphql",
json={ json={
"query": API_MOVE_SERVICE_MUTATION, "query": API_MOVE_SERVICE_MUTATION,
"variables": { "variables": {
"input": {"service_id": "nextcloud", "location": "sdx"}, "input": {"serviceId": "nextcloud", "location": "sdx"},
}, },
}, },
) )
@ -507,15 +526,16 @@ def test_graphql_move_service_unathorized_client(
def test_graphql_move_not_found_service( def test_graphql_move_not_found_service(
authorized_client, authorized_client,
mock_get_service_by_id_return_none, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_MOVE_SERVICE_MUTATION, "query": API_MOVE_SERVICE_MUTATION,
"variables": { "variables": {
"input": {"service_id": "nextcloud", "location": "sdx"}, "input": {"serviceId": "nextcloud", "location": "sdx"},
}, },
}, },
) )
@ -529,47 +549,50 @@ def test_graphql_move_not_found_service(
def test_graphql_move_not_moveble_service( def test_graphql_move_not_moveble_service(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id_return_none,
mock_nextcloud_return_false,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_MOVE_SERVICE_MUTATION, "query": API_MOVE_SERVICE_MUTATION,
"variables": { "variables": {
"input": {"service_id": "nextcloud", "location": "sdx"}, "input": {"serviceId": "nextcloud", "location": "sdx"},
}, },
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
assert response.json().get("data") is not None assert response.json().get("data") is not None
assert response.json()["data"]["moveService"]["code"] == 400 assert response.json()["data"]["moveService"]["code"] == 404
assert response.json()["data"]["moveService"]["message"] is not None assert response.json()["data"]["moveService"]["message"] is not None
assert response.json()["data"]["moveService"]["success"] is False assert response.json()["data"]["moveService"]["success"] is False
def test_graphql_move_service_volume_not_found( def test_graphql_move_service_volume_not_found(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id_return_none,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_block_devices_return_none, mock_block_devices_return_none,
mock_subprocess_popen,
one_user,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_MOVE_SERVICE_MUTATION, "query": API_MOVE_SERVICE_MUTATION,
"variables": { "variables": {
"input": {"service_id": "nextcloud", "location": "sdx"}, "input": {"serviceId": "nextcloud", "location": "sdx"},
}, },
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
assert response.json().get("data") is not None assert response.json().get("data") is not None
assert response.json()["data"]["moveService"]["code"] == 400 assert response.json()["data"]["moveService"]["code"] == 404
assert response.json()["data"]["moveService"]["message"] is not None assert response.json()["data"]["moveService"]["message"] is not None
assert response.json()["data"]["moveService"]["success"] is False assert response.json()["data"]["moveService"]["success"] is False
@ -577,16 +600,18 @@ def test_graphql_move_service_volume_not_found(
def test_graphql_move_service( def test_graphql_move_service(
authorized_client, authorized_client,
mock_get_service_by_id, mock_get_service_by_id,
mock_nextcloud,
mock_service_to_graphql_service, mock_service_to_graphql_service,
mock_block_devices, mock_block_devices,
mock_subprocess_popen,
one_user,
mock_job_to_api_job,
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
json={ json={
"query": API_MOVE_SERVICE_MUTATION, "query": API_MOVE_SERVICE_MUTATION,
"variables": { "variables": {
"input": {"service_id": "nextcloud", "location": "sdx"}, "input": {"serviceId": "nextcloud", "location": "sdx"},
}, },
}, },
) )

View file

@ -0,0 +1,61 @@
{
"backblaze": {
"accountId": "ID",
"accountKey": "KEY",
"bucket": "selfprivacy"
},
"api": {
"token": "TEST_TOKEN",
"enableSwagger": false
},
"bitwarden": {
"enable": false
},
"cloudflare": {
"apiKey": "TOKEN"
},
"databasePassword": "PASSWORD",
"domain": "test.tld",
"hashedMasterPassword": "HASHED_PASSWORD",
"hostname": "test-instance",
"nextcloud": {
"adminPassword": "ADMIN",
"databasePassword": "ADMIN",
"enable": true
},
"resticPassword": "PASS",
"ssh": {
"enable": true,
"passwordAuthentication": true,
"rootKeys": [
"ssh-ed25519 KEY test@pc"
]
},
"username": "tester",
"gitea": {
"enable": false
},
"ocserv": {
"enable": true
},
"pleroma": {
"enable": true
},
"autoUpgrade": {
"enable": true,
"allowReboot": true
},
"timezone": "Europe/Moscow",
"sshKeys": [
"ssh-rsa KEY test@pc"
],
"users": [
{
"username": "user1",
"hashedPassword": "HASHED_PASSWORD_1",
"sshKeys": [
"ssh-rsa KEY user1@pc"
]
}
]
}

View file

@ -291,7 +291,7 @@ def test_graphql_unmount_volume_unathorized_client(
def test_graphql_unmount_not_fount_volume( def test_graphql_unmount_not_fount_volume(
authorized_client, mock_block_devices_return_true authorized_client, mock_block_devices_return_none
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",
@ -309,7 +309,7 @@ def test_graphql_unmount_not_fount_volume(
def test_graphql_unmount_volume_false( def test_graphql_unmount_volume_false(
authorized_client, mock_block_devices_return_true authorized_client, mock_block_devices_return_none
): ):
response = authorized_client.post( response = authorized_client.post(
"/graphql", "/graphql",