Esempio n. 1
0
def test_dump(data_svc, agent):
    test_agent = agent(sleep_min=2, sleep_max=5, watchdog=0)
    dumped_agent = test_agent.schema.dump(test_agent)

    manager = BaseApiManager(data_svc=data_svc)
    manager_dumped_agent = manager.dump_with_include_exclude(test_agent)

    for key in manager_dumped_agent:
        assert manager_dumped_agent[key] == dumped_agent[key]
Esempio n. 2
0
def test_dump(data_svc, agent):
    test_agent = agent(sleep_min=2, sleep_max=5, watchdog=0)
    dumped_agent = test_agent.schema.dump(test_agent)

    manager = BaseApiManager(data_svc=data_svc, file_svc=None)
    manager_dumped_agent = manager.dump_object_with_filters(test_agent)

    for key in manager_dumped_agent:
        assert manager_dumped_agent[key] == dumped_agent[key]
Esempio n. 3
0
def test_create_object_from_schema():
    stub_data_svc = StubDataService()
    stub_data_svc.ram['tests'] = []
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    data = {'name': 'test_name', 'value': 'test_value'}
    access = {'access': (BaseWorld.Access.RED, BaseWorld.Access.APP)}
    obj = manager.create_object_from_schema(TestSchema, data, access)

    assert obj.name == 'test_name' and obj.value == 'test_value'
Esempio n. 4
0
def test_get_objects(agent):
    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent0', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0)
    ]
    manager = BaseApiManager(data_svc=stub_data_svc)

    dumped_agents = manager.get_objects_with_filters('agents')

    assert len(dumped_agents) == len(stub_data_svc.ram['agents'])
Esempio n. 5
0
def test_find_objects(agent):
    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent0', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0)
    ]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    agents = list(manager.find_objects('agents'))

    assert len(agents) == len(stub_data_svc.ram['agents'])
Esempio n. 6
0
def test_replace_object(agent):
    stub_data_svc = StubDataService()
    test_obj = TestObject(name='name0', value='value0')
    stub_data_svc.ram['tests'] = [test_obj]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    data = {'name': 'name0'}
    manager.replace_object(test_obj, data)

    assert len(stub_data_svc.ram['tests']) == 1
    assert not stub_data_svc.ram['tests'][0].value
Esempio n. 7
0
def test_dump_with_exclude(data_svc, agent):
    exclude_key = 'paw'

    test_agent = agent(sleep_min=2, sleep_max=5, watchdog=0)
    dumped_agent = test_agent.schema.dump(test_agent)

    manager = BaseApiManager(data_svc=data_svc)
    manager_dumped_agent = manager.dump_with_include_exclude(
        test_agent, exclude=[exclude_key])

    assert exclude_key in dumped_agent
    assert exclude_key not in manager_dumped_agent
    for key in manager_dumped_agent:
        assert manager_dumped_agent[key] == dumped_agent[key]
Esempio n. 8
0
def test_dump_with_include(data_svc, agent):
    include_key = 'paw'

    test_agent = agent(sleep_min=2, sleep_max=5, watchdog=0)
    dumped_agent = test_agent.schema.dump(test_agent)

    manager = BaseApiManager(data_svc=data_svc)
    manager_dumped_agent = manager.dump_with_include_exclude(
        test_agent, include=[include_key])

    assert include_key in dumped_agent
    assert include_key in manager_dumped_agent
    assert len(manager_dumped_agent.keys()) == 1
    assert manager_dumped_agent[include_key] == dumped_agent[include_key]
Esempio n. 9
0
def test_find_and_update_object(agent):
    stub_data_svc = StubDataService()
    stub_data_svc.ram['tests'] = [
        TestObject(name='name0', value='value0'),
        TestObject(name='name1', value='value1'),
    ]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    data = {'value': 'value1'}
    search = {'name': 'name0'}
    manager.find_and_update_object('tests', data, search)

    assert len(stub_data_svc.ram['tests']) == 2
    for test_obj in stub_data_svc.ram['tests']:
        assert test_obj.value == 'value1'
Esempio n. 10
0
def test_get_object(agent):
    search_property = 'paw'
    search_value = 'agent0'

    test_agent = agent(paw='agent0', sleep_min=1, sleep_max=5, watchdog=0)
    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        test_agent,
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent2', sleep_min=2, sleep_max=5, watchdog=0),
    ]
    manager = BaseApiManager(data_svc=stub_data_svc)

    search = {search_property: search_value}
    dumped_agent = manager.get_object_with_filters('agents', search=search)

    assert dumped_agent == test_agent.display
Esempio n. 11
0
def test_find_object(agent):
    search_property = 'paw'
    search_value = 'agent0'

    test_agent = agent(paw='agent0', sleep_min=1, sleep_max=5, watchdog=0)
    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent2', sleep_min=2, sleep_max=5, watchdog=0),
        test_agent,
    ]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    search = {search_property: search_value}
    agent = manager.find_object('agents', search=search)

    assert agent == test_agent
Esempio n. 12
0
 def __init__(self, services):
     super().__init__(description='Fact Source',
                      obj_class=Source,
                      schema=SourceSchema,
                      ram_key='sources',
                      id_property='id',
                      auth_svc=services['auth_svc'])
     self._api_manager = BaseApiManager(data_svc=services['data_svc'],
                                        file_svc=services['file_svc'])
Esempio n. 13
0
 def __init__(self, services):
     super().__init__(description='planner',
                      obj_class=Planner,
                      schema=PlannerSchema,
                      ram_key='planners',
                      id_property='planner_id',
                      auth_svc=services['auth_svc'])
     self._api_manager = BaseApiManager(data_svc=services['data_svc'],
                                        file_svc=services['file_svc'])
Esempio n. 14
0
 def __init__(self, services):
     super().__init__(description='obfuscator',
                      obj_class=Obfuscator,
                      schema=ObfuscatorSchema,
                      ram_key='obfuscators',
                      id_property='name',
                      auth_svc=services['auth_svc'])
     self._api_manager = BaseApiManager(data_svc=services['data_svc'],
                                        file_svc=services['file_svc'])
Esempio n. 15
0
def test_find_objects_with_search(agent):
    search_property = 'sleep_min'
    search_value = 2

    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent0', sleep_min=1, sleep_max=5, watchdog=0),
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent2', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent3', sleep_min=3, sleep_max=5, watchdog=0),
    ]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    search = {search_property: search_value}
    agents = list(manager.find_objects('agents', search=search))

    assert len(agents) == 2
    for agent in agents:
        assert getattr(agent, search_property) == search_value
Esempio n. 16
0
def test_find_and_dump_objects_with_sort_and_default(agent):
    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agentF', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agentB', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agentD', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agentA', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agentE', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agentC', sleep_min=2, sleep_max=5, watchdog=0),
    ]
    stub_data_svc.apply_config('objects.agents.default', 'agentE')
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)
    dumped_agents = manager.find_and_dump_objects('agents', sort='paw')
    assert len(dumped_agents) == len(stub_data_svc.ram['agents'])
    assert dumped_agents[0]['paw'] == 'agentE'
    prev_paw = None
    for dumped_agent in dumped_agents[1:]:
        assert not prev_paw or dumped_agent['paw'] > prev_paw
        prev_paw = dumped_agent['paw']
Esempio n. 17
0
def test_get_objects_with_search(agent):
    search_property = 'sleep_min'
    search_value = 2

    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent0', sleep_min=1, sleep_max=5, watchdog=0),
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent2', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent3', sleep_min=3, sleep_max=5, watchdog=0),
    ]
    manager = BaseApiManager(data_svc=stub_data_svc)

    search = {search_property: search_value}
    dumped_agents = manager.get_objects_with_filters('agents', search=search)

    assert len(dumped_agents) == 2
    for dumped_agent in dumped_agents:
        assert dumped_agent[search_property] == search_value
Esempio n. 18
0
class PlannerApi(BaseApi):
    def __init__(self, services):
        super().__init__(auth_svc=services['auth_svc'])
        self._api_manager = BaseApiManager(data_svc=services['data_svc'])

    def add_routes(self, app: web.Application):
        router = app.router
        router.add_get('/planners', self.get_planners)
        router.add_get('/planners/{planner_id}', self.get_planner_by_id)

    @aiohttp_apispec.docs(tags=['planners'])
    @aiohttp_apispec.querystring_schema(BaseGetAllQuerySchema)
    @aiohttp_apispec.response_schema(PlannerSchema(many=True))
    async def get_planners(self, request: web.Request):
        sort = request['querystring'].get('sort', 'name')
        include = request['querystring'].get('include')
        exclude = request['querystring'].get('exclude')

        planners = self._api_manager.get_objects_with_filters('planners',
                                                              sort=sort,
                                                              include=include,
                                                              exclude=exclude)
        return web.json_response(planners)

    @aiohttp_apispec.docs(tags=['planners'])
    @aiohttp_apispec.querystring_schema(BaseGetOneQuerySchema)
    @aiohttp_apispec.response_schema(PlannerSchema)
    async def get_planner_by_id(self, request: web.Request):
        planner_id = request.match_info['planner_id']
        include = request['querystring'].get('include')
        exclude = request['querystring'].get('exclude')

        search = dict(planner_id=planner_id)

        planner = self._api_manager.get_object_with_filters('planners',
                                                            search=search,
                                                            include=include,
                                                            exclude=exclude)
        if not planner:
            raise JsonHttpNotFound(f'Planner not found: {planner_id}')

        return web.json_response(planner)
Esempio n. 19
0
def test_find_and_dump_objects_with_sort(agent):
    sort_property = 'paw'

    stub_data_svc = StubDataService()
    stub_data_svc.ram['agents'] = [
        agent(paw='agent5', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent1', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent3', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent0', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent4', sleep_min=2, sleep_max=5, watchdog=0),
        agent(paw='agent2', sleep_min=2, sleep_max=5, watchdog=0),
    ]
    manager = BaseApiManager(data_svc=stub_data_svc, file_svc=None)

    dumped_agents = manager.find_and_dump_objects('agents', sort=sort_property)

    assert len(dumped_agents) == len(stub_data_svc.ram['agents'])
    prev_paw = None
    for dumped_agent in dumped_agents:
        assert not prev_paw or dumped_agent[sort_property] > prev_paw
        prev_paw = dumped_agent[sort_property]
Esempio n. 20
0
 def __init__(self, services):
     super().__init__(auth_svc=services['auth_svc'])
     self._api_manager = BaseApiManager(data_svc=services['data_svc'])