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"
                        }
                    }
                })
Beispiel #3
0
  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)])
Beispiel #4
0
  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)])
Beispiel #5
0
  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)])
Beispiel #6
0
  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"
                              }
                          }})
Beispiel #10
0
  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)])