blob: 5cf2af0660f97de3fae6569631518e8707f4821c [file]
import pytest
from app.utility.base_service import BaseService
@pytest.fixture
async def setup_running_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.RUNNING.value
@pytest.fixture
async def setup_run_one_link_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.RUN_ONE_LINK.value
@pytest.fixture
async def setup_paused_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.PAUSED.value
@pytest.fixture
async def setup_cleanup_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.CLEANUP.value
@pytest.fixture
async def setup_out_of_time_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.OUT_OF_TIME.value
@pytest.fixture
async def setup_finished_operation(setup_operations_api_test, test_agent, test_operation):
operation = (await BaseService.get_service('data_svc').locate('operations', {'id': test_operation['id']}))[0]
operation.agents.append(test_agent)
operation.state = operation.States.FINISHED.value
class TestAppService:
async def test_mark_agent_as_untrusted_running_operation(self, setup_running_operation, test_agent, app_svc, mocker,
async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.RUNNING.value
assert test_agent in operation.agents
assert test_agent.paw in operation.untrusted_agents
async def test_mark_agent_as_untrusted_run_one_link_operation(self, setup_run_one_link_operation, test_agent,
app_svc, mocker, async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.RUN_ONE_LINK.value
assert test_agent in operation.agents
assert test_agent.paw in operation.untrusted_agents
async def test_mark_agent_as_untrusted_paused_operation(self, setup_paused_operation, test_agent, app_svc, mocker,
async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.PAUSED.value
assert test_agent in operation.agents
assert test_agent.paw in operation.untrusted_agents
async def test_mark_agent_as_untrusted_out_of_time_operation(self, setup_out_of_time_operation, test_agent, app_svc,
mocker, async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.OUT_OF_TIME.value
assert test_agent in operation.agents
assert not operation.untrusted_agents
async def test_mark_agent_as_untrusted_finished_operation(self, setup_finished_operation, test_agent, app_svc,
mocker, async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.FINISHED.value
assert test_agent in operation.agents
assert not operation.untrusted_agents
async def test_mark_agent_as_untrusted_cleanup_operation(self, setup_cleanup_operation, test_agent, app_svc, mocker,
async_return, test_operation):
with mocker.patch('app.objects.c_operation.Operation.all_facts') as mock_all_facts:
mock_all_facts.return_value = async_return([])
with mocker.patch('app.objects.c_objective.Objective.completed') as mock_completed:
mock_completed.return_value = False
operation = (await BaseService.get_service('data_svc').locate('operations',
{'id': test_operation['id']}))[0]
test_agent.trusted = False
await app_svc.update_operations_with_untrusted_agent(test_agent)
assert operation.state == operation.States.CLEANUP.value
assert test_agent in operation.agents
assert not operation.untrusted_agents