def testVfsMethodsAreAccessChecked(self):
        args = api_vfs.ApiListFilesArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.ListFiles,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetVfsFilesArchiveArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetVfsFilesArchive,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetFileDetailsArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetFileDetails,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetFileTextArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetFileText,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetFileBlobArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetFileBlob,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetFileVersionTimesArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetFileVersionTimes,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetFileDownloadCommandArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetFileDownloadCommand,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiCreateVfsRefreshOperationArgs(
            client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.CreateVfsRefreshOperation,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetVfsTimelineArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetVfsTimeline,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiGetVfsTimelineAsCsvArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.GetVfsTimelineAsCsv,
                                        "CheckClientAccess",
                                        args=args)

        args = api_vfs.ApiUpdateVfsFileContentArgs(client_id=self.client_id)
        self.CheckMethodIsAccessChecked(self.router.UpdateVfsFileContent,
                                        "CheckClientAccess",
                                        args=args)
Exemple #2
0
  def testHandlerStartsFlow(self):
    fixture_test_lib.ClientFixture(self.client_id)

    args = vfs_plugin.ApiUpdateVfsFileContentArgs(
        client_id=self.client_id, file_path=self.file_path)
    result = self.handler.Handle(args, context=self.context)

    flow_obj = data_store.REL_DB.ReadFlowObject(self.client_id,
                                                result.operation_id)
    self.assertEqual(flow_obj.flow_class_name, transfer.MultiGetFile.__name__)
    self.assertEqual(flow_obj.creator, self.context.username)
Exemple #3
0
    def testHandlerStartsFlow(self):
        fixture_test_lib.ClientFixture(self.client_id, token=self.token)

        args = vfs_plugin.ApiUpdateVfsFileContentArgs(client_id=self.client_id,
                                                      file_path=self.file_path)
        result = self.handler.Handle(args, token=self.token)

        # Check returned operation_id to references a MultiGetFile flow.
        flow_obj = aff4.FACTORY.Open(result.operation_id, token=self.token)
        self.assertEqual(flow_obj.Get(flow_obj.Schema.TYPE),
                         transfer.MultiGetFile.__name__)
    def Run(self):
        client_id = self.SetupClient(0)
        self.file_path = "fs/os/c/bin/bash"

        fixture_test_lib.ClientFixture(client_id)

        def ReplaceFlowId():
            flows = data_store.REL_DB.ReadAllFlowObjects(client_id=client_id)
            return {flows[0].flow_id: "ABCDEF"}

        with test_lib.FakeTime(42):
            self.Check("UpdateVfsFileContent",
                       args=vfs_plugin.ApiUpdateVfsFileContentArgs(
                           client_id=client_id, file_path=self.file_path),
                       replace=ReplaceFlowId)
Exemple #5
0
    def Run(self):
        client_id = self.SetupClient(0)
        self.file_path = "fs/os/c/bin/bash"

        fixture_test_lib.ClientFixture(client_id, token=self.token)

        def ReplaceFlowId():
            flows_dir_fd = aff4.FACTORY.Open(client_id.Add("flows"),
                                             token=self.token)
            flow_urn = list(flows_dir_fd.ListChildren())[0]
            return {flow_urn.Basename(): "W:ABCDEF"}

        with test_lib.FakeTime(42):
            self.Check("UpdateVfsFileContent",
                       args=vfs_plugin.ApiUpdateVfsFileContentArgs(
                           client_id=client_id.Basename(),
                           file_path=self.file_path),
                       replace=ReplaceFlowId)
Exemple #6
0
  def testHandlerStartsFlow(self):
    fixture_test_lib.ClientFixture(self.client_id, token=self.token)

    args = vfs_plugin.ApiUpdateVfsFileContentArgs(
        client_id=self.client_id, file_path=self.file_path)
    result = self.handler.Handle(args, token=self.token)

    if data_store.RelationalDBFlowsEnabled():
      flow_obj = data_store.REL_DB.ReadFlowObject(self.client_id.Basename(),
                                                  result.operation_id)
      self.assertEqual(flow_obj.flow_class_name, transfer.MultiGetFile.__name__)
      self.assertEqual(flow_obj.creator, self.token.username)
    else:
      # Check returned operation_id to references a MultiGetFile flow.
      flow_urn = self.client_id.Add("flows").Add(result.operation_id)
      flow_obj = aff4.FACTORY.Open(flow_urn, token=self.token)
      self.assertEqual(
          flow_obj.Get(flow_obj.Schema.TYPE), transfer.MultiGetFile.__name__)
    def Run(self):
        client_urn = self.SetupClient(0)
        client_id = client_urn.Basename()
        self.file_path = "fs/os/c/bin/bash"

        fixture_test_lib.ClientFixture(client_urn, token=self.token)

        def ReplaceFlowId():
            if data_store.RelationalDBEnabled():
                flows = data_store.REL_DB.ReadAllFlowObjects(
                    client_id=client_id)
                return {flows[0].flow_id: "W:ABCDEF"}
            else:
                flows_dir_fd = aff4.FACTORY.Open(client_urn.Add("flows"),
                                                 token=self.token)
                flow_urn = list(flows_dir_fd.ListChildren())[0]
                return {flow_urn.Basename(): "W:ABCDEF"}

        with test_lib.FakeTime(42):
            self.Check("UpdateVfsFileContent",
                       args=vfs_plugin.ApiUpdateVfsFileContentArgs(
                           client_id=client_id, file_path=self.file_path),
                       replace=ReplaceFlowId)
Exemple #8
0
 def testRaisesIfFirstComponentNotInAllowlist(self):
   args = vfs_plugin.ApiUpdateVfsFileContentArgs(
       client_id=self.client_id, file_path="/analysis")
   with self.assertRaises(ValueError):
     self.handler.Handle(args, context=self.context)
Exemple #9
0
 def testRaisesOnRootPath(self):
   args = vfs_plugin.ApiUpdateVfsFileContentArgs(
       client_id=self.client_id, file_path="/")
   with self.assertRaises(ValueError):
     self.handler.Handle(args, context=self.context)
Exemple #10
0
 def testRaisesOnEmptyPath(self):
   args = vfs_plugin.ApiUpdateVfsFileContentArgs(
       client_id=self.client_id, file_path="")
   with self.assertRaises(ValueError):
     self.handler.Handle(args, token=self.token)