def testRendersSampleCollectionWithTotalCountParameter(self): data = self.renderer.RenderObject( self.fd, api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( count=2, with_total_count=True)) self.assertEqual(len(data["items"]), 2) self.assertEqual(data["total_count"], 10)
def testRendersSampleCollection(self): data = self.renderer.RenderObject( self.fd, api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs()) self.assertEqual(data["offset"], 0) self.assertEqual(data["count"], 10) self.assertEqual(len(data["items"]), 10) for i in range(10): self.assertEqual( data["items"][i], { "age": 42, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-%d" % i }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } } })
def Render(self, args, token=None): results = aff4.FACTORY.Open( HUNTS_ROOT_PATH.Add(args.hunt_id).Add("Results"), mode="r", token=token) return api_aff4_object_renderers.RenderAFF4Object( results, [api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( offset=args.offset, count=args.count, filter=args.filter, with_total_count=True)])
def Render(self, args, token=None): # TODO(user): handle cases when hunt doesn't exists. # TODO(user): Use hunt's logs_collection_urn to open errors collection. errors_collection = aff4.FACTORY.Create( HUNTS_ROOT_PATH.Add(args.hunt_id).Add("ErrorClients"), aff4_type="RDFValueCollection", mode="r", token=token) return api_aff4_object_renderers.RenderAFF4Object( errors_collection, [api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( offset=args.offset, count=args.count, with_total_count=True)])
def Render(self, args, token=None): flow_urn = args.client_id.Add("flows").Add(args.flow_id.Basename()) flow_obj = aff4.FACTORY.Open(flow_urn, aff4_type="GRRFlow", mode="r", token=token) output_urn = flow_obj.GetRunner().output_urn output_collection = aff4.FACTORY.Create( output_urn, aff4_type="RDFValueCollection", mode="r", token=token) return api_aff4_object_renderers.RenderAFF4Object( output_collection, [api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( offset=args.offset, count=args.count, filter=args.filter, with_total_count=True)])
def Render(self, args, token=None): # TODO(user): handle cases when hunt doesn't exists. # TODO(user): Use hunt's logs_collection_urn to open logs collection. try: logs_collection = aff4.FACTORY.Open( HUNTS_ROOT_PATH.Add(args.hunt_id).Add("Logs"), aff4_type=flow_runner.FlowLogCollection.__name__, mode="r", token=token) except IOError: logs_collection = aff4.FACTORY.Create( HUNTS_ROOT_PATH.Add(args.hunt_id).Add("Logs"), aff4_type="RDFValueCollection", mode="r", token=token) return api_aff4_object_renderers.RenderAFF4Object( logs_collection, [api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( offset=args.offset, count=args.count, with_total_count=True)])
def testRendersSampleCollectionWithCountParameter(self): data = self.renderer.RenderObject( self.fd, api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( count=2)) self.assertEqual(data["offset"], 0) self.assertEqual(data["count"], 2) self.assertEqual(len(data["items"]), 2) self.assertEqual( data["items"][0], { "age": 42, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-0" }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } } }) self.assertEqual( data["items"][1], { "age": 42, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-1" }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } } })
def testRendersSampleCollectionWithFilterAndOffsetAndCount(self): data = self.renderer.RenderObject( self.fd, api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( offset=2, count=2, filter="/var/os/tmp")) self.assertEqual(len(data["items"]), 2) self.assertEqual( data["items"][0], { "age": 42, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-2" }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } } }) self.assertEqual( data["items"][1], { "age": 42, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-3" }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } } })
def testRendersSampleCollectionWithFilter(self): data = self.renderer.RenderObject( self.fd, api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( filter="/var/os/tmp-9")) self.assertEqual(len(data["items"]), 1) self.assertEqual(data["items"][0], {"age": 42000000, "type": "PathSpec", "value": { "path": { "age": 0, "type": "unicode", "value": "/var/os/tmp-9" }, "pathtype": { "age": 0, "type": "EnumNamedValue", "value": "OS" } }})
def testAdditionalArgumentsAreParsedCorrectly(self): additional_args = http_api.FillAdditionalArgsFromRequest( { "AFF4Object.limit_lists": "10", "RDFValueCollection.with_total_count": "1" }, { "AFF4Object": api_aff4_object_renderers.ApiAFF4ObjectRendererArgs, "RDFValueCollection": api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs }) additional_args = sorted(additional_args, key=lambda x: x.name) self.assertListEqual( [x.name for x in additional_args], ["AFF4Object", "RDFValueCollection"]) self.assertListEqual( [x.type for x in additional_args], ["ApiAFF4ObjectRendererArgs", "ApiRDFValueCollectionRendererArgs"]) self.assertListEqual( [x.args for x in additional_args], [api_aff4_object_renderers.ApiAFF4ObjectRendererArgs(limit_lists=10), api_aff4_object_renderers.ApiRDFValueCollectionRendererArgs( with_total_count=True)])