def GrantHuntApproval(self, hunt_id, requestor=None, approval_id=None, approver=u"approver", admin=True): """Grants an approval for a given hunt.""" if not approval_id: raise ValueError("approval_id can't be empty.") if not requestor: requestor = self.token.username self.CreateUser(requestor) if admin: self.CreateAdminUser(approver) else: self.CreateUser(approver) args = api_user.ApiGrantHuntApprovalArgs(hunt_id=hunt_id, username=requestor, approval_id=approval_id) handler = api_user.ApiGrantHuntApprovalHandler() handler.Handle(args, token=access_control.ACLToken(username=approver))
def testSendsEmailWithApprovalGrantInformation(self): approval_id = self.RequestHuntApproval(self.hunt_id, reason="requestreason", requestor="requestuser") with mock.patch.object(email_alerts.EMAIL_ALERTER, "SendEmail") as send_fn: self.handler.Handle( user_plugin.ApiGrantHuntApprovalArgs(hunt_id=self.hunt_id, approval_id=approval_id, username="******"), self.context) send_fn.assert_called_once() message = send_fn.call_args[1]["message"] self.assertNotIn( (f"href=\"http://localhost:8000/v2/hunts/{self.hunt_id}\""), message) # Check for correct link to legacy UI. # TODO: Remove once new UI is stable. self.assertIn(f"href=\"http://localhost:8000/#/hunts/{self.hunt_id}\"", message) self.assertIn(self.context.username, message) self.assertIn("requestreason", message) self.assertIn(self.hunt_id, message)
def Run(self): with test_lib.FakeTime(42): self.CreateAdminUser(u"requestor") with self.CreateHunt(description="a hunt") as hunt_obj: hunt_urn = hunt_obj.urn hunt_id = hunt_urn.Basename() with test_lib.FakeTime(44): approval_id = self.RequestHuntApproval( hunt_id, requestor=u"requestor", reason="foo", approver=self.token.username) with test_lib.FakeTime(126): self.Check("GrantHuntApproval", args=user_plugin.ApiGrantHuntApprovalArgs( hunt_id=hunt_id, approval_id=approval_id, username=u"requestor"), replace={ hunt_id: "H:123456", approval_id: "approval:111111" })
def Run(self): with test_lib.FakeTime(42): self.CreateAdminUser(u"requestor") hunt_id = self.StartHunt( description="a hunt", paused=True, creator=self.test_username) with test_lib.FakeTime(44): approval_id = self.RequestHuntApproval( hunt_id, requestor=u"requestor", reason="foo", approver=self.test_username) with test_lib.FakeTime(126): self.Check( "GrantHuntApproval", args=user_plugin.ApiGrantHuntApprovalArgs( hunt_id=hunt_id, approval_id=approval_id, username=u"requestor"), replace={ hunt_id: "H:123456", approval_id: "approval:111111" })