Exemple #1
0
    def testNotificationIsSent(self):
        fixture_test_lib.ClientFixture(self.client_id, token=self.token)

        args = vfs_plugin.ApiCreateVfsRefreshOperationArgs(
            client_id=self.client_id,
            file_path=self.file_path,
            max_depth=0,
            notify_user=True)
        result = self.handler.Handle(args, token=self.token)

        # Finish flow and check if there are any new notifications.
        flow_urn = rdfvalue.RDFURN(result.operation_id)
        client_mock = action_mocks.ActionMock()
        for _ in flow_test_lib.TestFlowHelper(flow_urn,
                                              client_mock,
                                              client_id=self.client_id,
                                              token=self.token,
                                              check_flow_errors=False):
            pass

        # Get pending notifications and check the newest one.
        user_record = aff4.FACTORY.Open(aff4.ROOT_URN.Add("users").Add(
            self.token.username),
                                        aff4_type=aff4_users.GRRUser,
                                        mode="r",
                                        token=self.token)

        pending_notifications = user_record.Get(
            user_record.Schema.PENDING_NOTIFICATIONS)

        self.assertIn("Recursive Directory Listing complete",
                      pending_notifications[0].message)
        self.assertEqual(pending_notifications[0].source, str(flow_urn))
Exemple #2
0
    def testNotificationIsSent(self):
        fixture_test_lib.ClientFixture(self.client_id, token=self.token)

        args = vfs_plugin.ApiCreateVfsRefreshOperationArgs(
            client_id=self.client_id,
            file_path=self.file_path,
            max_depth=0,
            notify_user=True)
        result = self.handler.Handle(args, token=self.token)

        # Finish flow and check if there are any new notifications.
        flow_urn = rdfvalue.RDFURN(result.operation_id)
        client_mock = action_mocks.ActionMock()
        flow_test_lib.TestFlowHelper(flow_urn,
                                     client_mock,
                                     client_id=self.client_id,
                                     token=self.token,
                                     check_flow_errors=False)

        pending_notifications = self.GetUserNotifications(self.token.username)

        self.assertIn("Recursive Directory Listing complete",
                      pending_notifications[0].message)
        self.assertEqual(pending_notifications[0].subject,
                         self.client_id.Add(self.file_path))
    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 #4
0
    def testHandlerRefreshStartsRecursiveListDirectoryFlow(self):
        fixture_test_lib.ClientFixture(self.client_id, token=self.token)

        args = vfs_plugin.ApiCreateVfsRefreshOperationArgs(
            client_id=self.client_id, file_path=self.file_path, max_depth=5)
        result = self.handler.Handle(args, token=self.token)

        # Check returned operation_id to references a RecursiveListDirectory flow.
        flow_obj = aff4.FACTORY.Open(result.operation_id, token=self.token)
        self.assertEqual(flow_obj.Get(flow_obj.Schema.TYPE),
                         filesystem.RecursiveListDirectory.__name__)
Exemple #5
0
  def Run(self):
    fixture_test_lib.ClientFixture(self.client_id, token=self.token)

    def ReplaceFlowId():
      flows_dir_fd = aff4.FACTORY.Open(
          self.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(
          "CreateVfsRefreshOperation",
          args=vfs_plugin.ApiCreateVfsRefreshOperationArgs(
              client_id=self.client_id.Basename(),
              file_path=self.file_path,
              max_depth=1),
          replace=ReplaceFlowId)
Exemple #6
0
 def testRaisesIfFirstComponentNotInWhitelist(self):
     args = vfs_plugin.ApiCreateVfsRefreshOperationArgs(
         client_id=self.client_id, file_path="/analysis")
     with self.assertRaises(ValueError):
         self.handler.Handle(args, token=self.token)
Exemple #7
0
 def testRaisesOnRootPath(self):
     args = vfs_plugin.ApiCreateVfsRefreshOperationArgs(
         client_id=self.client_id, file_path="/")
     with self.assertRaises(ValueError):
         self.handler.Handle(args, token=self.token)