blob: fbea04ffc4ee73cb8426342204ea980fd0052b75 [file]
from app.objects.c_ability import Ability
from app.objects.c_agent import Agent
class TestAbility:
def test_privileged_to_run__1(self, event_loop, data_svc):
""" Test ability.privilege == None """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0)))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123', privilege=None)
))
assert agent.privileged_to_run(ability)
def test_privileged_to_run__2(self, event_loop, data_svc):
""" Test ability.privilege == 'User' """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0)))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123', privilege='User')
))
assert agent.privileged_to_run(ability)
def test_privileged_to_run__3(self, event_loop, data_svc):
""" Test ability.privilege == 'Elevated' """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0)))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123', privilege='Elevated')
))
assert not agent.privileged_to_run(ability)
def test_privileged_to_run__4(self, event_loop, data_svc):
""" Test ability.privilege == 'User' and agent.privilege == 'Elevated' """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0, privilege='Elevated')))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123', privilege='User')
))
assert agent.privileged_to_run(ability)
def test_privileged_to_run__5(self, event_loop, data_svc):
""" Test ability.privilege == 'Elevated' and agent.privilege == 'Elevated' """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0, privilege='Elevated')))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123', privilege='Elevated')
))
assert agent.privileged_to_run(ability)
def test_privileged_to_run__6(self, event_loop, data_svc):
""" Test ability.privilege == 'None' and agent.privilege == 'Elevated' """
agent = event_loop.run_until_complete(data_svc.store(Agent(sleep_min=1, sleep_max=2, watchdog=0, privilege='Elevated')))
ability = event_loop.run_until_complete(data_svc.store(
Ability(ability_id='123')
))
assert agent.privileged_to_run(ability)
def test_executor_store(self, ability, executor):
test_executor = executor()
test_ability = ability(executors=[test_executor])
assert len(list(test_ability.executors)) == 1
def test_executor_store_multiple(self, ability, executor):
test_executor_windows = executor(name='psh', platform='windows')
test_executor_linux = executor(name='sh', platform='linux')
test_ability = ability(executors=[test_executor_windows, test_executor_linux])
assert len(list(test_ability.executors)) == 2
assert list(test_ability.executors) == [test_executor_windows, test_executor_linux]
def test_executor_store_duplicate(self, ability, executor):
test_executor_1 = executor()
test_executor_2 = executor()
test_ability = ability(executors=[test_executor_1, test_executor_2])
assert len(list(test_ability.executors)) == 1
assert next(test_ability.executors) is test_executor_2 # Overwrite
def test_executor_store_duplicate_check_order(self, ability, executor):
test_executor_1 = executor(name='psh', platform='windows')
test_executor_2 = executor(name='sh', platform='linux')
test_executor_3 = executor(name='psh', platform='windows')
test_ability = ability(executors=[test_executor_1, test_executor_2, test_executor_3])
assert list(test_ability.executors) == [test_executor_2, test_executor_3] # FIFO
def test_executor_search(self, ability, executor):
test_executor = executor(name='psh', platform='windows')
test_ability = ability(executors=[test_executor])
assert test_ability.find_executor(name='psh', platform='windows') is test_executor
def test_executor_search_duplicate(self, ability, executor):
test_executor = executor(name='psh', platform='windows')
test_ability = ability(executors=[test_executor])
found_executors = test_ability.find_executors(names=['psh', 'psh'], platform='windows')
assert len(found_executors) == 1
assert found_executors[0] is test_executor
def test_executor_search_duplicate_and_ordered(self, ability, executor):
test_executor_psh = executor(name='psh', platform='windows')
test_executor_cmd = executor(name='cmd', platform='windows')
test_ability = ability(executors=[test_executor_psh, test_executor_cmd])
found_executors = test_ability.find_executors(names=['psh', 'cmd', 'psh'], platform='windows')
assert len(found_executors) == 2
assert found_executors == [test_executor_psh, test_executor_cmd]
def test_executor_removal(self, ability, executor):
test_ability = ability(executors=[executor()])
test_ability.remove_all_executors()
assert len(list(test_ability.executors)) == 0
def test_ability_name_duplication(self, event_loop, data_svc):
ability1 = event_loop.run_until_complete(data_svc.store(Ability(ability_id='12345', name='testA')))
ability2 = event_loop.run_until_complete(data_svc.store(Ability(ability_id='54321', name='testA')))
assert ability1.name != ability2.name
assert ability2.name == 'testA (2)'