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]
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]
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'
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'])
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'])
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
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]
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]
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'
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
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
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'])
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'])
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'])
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
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']
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
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)
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]
def __init__(self, services): super().__init__(auth_svc=services['auth_svc']) self._api_manager = BaseApiManager(data_svc=services['data_svc'])