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)
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)
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)
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")