Esempio n. 1
0
  def testErrorDuringStartFlowDoesNotBubbleUpToApprovalApiCall(self):
    flow.ScheduleFlow(
        client_id=self.client_id,
        creator=self.context.username,
        flow_name=file.CollectSingleFile.__name__,
        flow_args=rdf_file_finder.CollectSingleFileArgs(path="/foo"),
        runner_args=rdf_flow_runner.FlowRunnerArgs())

    with mock.patch.object(
        flow, "StartFlow",
        side_effect=ValueError("foobazzle")) as start_flow_mock:
      approval_id = self.RequestAndGrantClientApproval(
          self.client_id,
          reason=u"blah",
          approver=u"approver",
          requestor=self.context.username)

    args = user_plugin.ApiGetClientApprovalArgs(
        client_id=self.client_id,
        approval_id=approval_id,
        username=self.context.username)
    handler = user_plugin.ApiGetClientApprovalHandler()
    approval = handler.Handle(args, context=self.context)

    self.assertTrue(approval.is_valid)
    self.assertTrue(start_flow_mock.called)
Esempio n. 2
0
    def ScheduleFlow(self, **kwargs):
        merged_kwargs = {
            "flow_name":
            file.CollectSingleFile.__name__,
            "flow_args":
            rdf_file_finder.CollectSingleFileArgs(
                path="/foo{}".format(random.randint(0, 1000))),
            "runner_args":
            rdf_flow_runner.FlowRunnerArgs(cpu_limit=random.randint(0, 60)),
            **kwargs
        }

        return flow.ScheduleFlow(**merged_kwargs)
Esempio n. 3
0
File: flow.py Progetto: mmaj5524/grr
  def Handle(self, args, context=None):
    flow_cls, runner_args = _SanitizeApiCreateFlowArgs(args)

    args.flow.args.Validate()

    # TODO: Handle the case where the requesting user already has
    # approval to start the flow on the client.

    scheduled_flow = flow.ScheduleFlow(
        client_id=str(args.client_id),
        creator=context.username,
        flow_name=flow_cls.__name__,
        flow_args=args.flow.args,
        runner_args=runner_args)

    return ApiScheduledFlow.FromScheduledFlow(scheduled_flow)
Esempio n. 4
0
    def testScheduledFlowsAreShown(self):
        client_id = self.SetupClient(0)
        self.CreateUser("requestrick")
        self.CreateUser("approveannie")

        flow.ScheduleFlow(
            client_id=client_id,
            creator="requestrick",
            flow_name=file.CollectSingleFile.__name__,
            flow_args=rdf_file_finder.CollectSingleFileArgs(path="/foo"),
            runner_args=rdf_flow_runner.FlowRunnerArgs())

        approval_id = self.RequestClientApproval(client_id,
                                                 reason="t/1234",
                                                 requestor="requestrick",
                                                 approver="approveannie")

        self.Open(
            f"/v2/clients/{client_id}/users/requestrick/approvals/{approval_id}"
        )

        # TODO(user): Change to pretty display name as soon as ScheduledFlowList
        #  uses these.
        self.WaitUntil(self.IsTextPresent, "CollectSingleFile")