Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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"
                       })
Ejemplo n.º 4
0
  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"
          })