def testRaisesWhenApprovalIsNotFound(self): args = user_plugin.ApiGetUserClientApprovalArgs(client_id=self.client_id, reason="blah") # TODO(user): throw some standard exception that can be converted to # HTTP 404 status code. with self.assertRaises(IOError): self.handler.Handle(args, token=self.token)
def testRendersRequestedClientApproval(self): flow.GRRFlow.StartFlow(client_id=self.client_id, flow_name="RequestClientApprovalFlow", reason="blah", subject_urn=self.client_id, approver="approver", email_cc_address="*****@*****.**", token=self.token) args = user_plugin.ApiGetUserClientApprovalArgs(client_id=self.client_id, reason="blah") result = self.handler.Handle(args, token=self.token) self.assertEqual(result.subject.urn, self.client_id) self.assertEqual(result.reason, "blah") self.assertEqual(result.is_valid, False) self.assertEqual(result.is_valid_message, "Requires 2 approvers for access.") self.assertEqual(result.notified_users, ["approver"]) self.assertEqual(result.email_cc_addresses, ["*****@*****.**"]) # Every approval is self-approved by default. self.assertEqual(result.approvers, [self.token.username])
def testIncludesApproversInResultWhenApprovalIsGranted(self): flow.GRRFlow.StartFlow(client_id=self.client_id, flow_name="RequestClientApprovalFlow", reason="blah", subject_urn=self.client_id, approver="approver", token=self.token) approver_token = access_control.ACLToken(username="******") flow.GRRFlow.StartFlow(client_id=self.client_id, flow_name="GrantClientApprovalFlow", reason="blah", delegate=self.token.username, subject_urn=self.client_id, token=approver_token) args = user_plugin.ApiGetUserClientApprovalArgs(client_id=self.client_id, reason="blah") result = self.handler.Handle(args, token=self.token) self.assertTrue(result.is_valid) self.assertEqual( sorted(result.approvers), sorted([approver_token.username, self.token.username]))