def InitFromAff4Object(self, approval_obj, approval_subject_obj=None): if not approval_subject_obj: approval_subject_obj = aff4.FACTORY.Open( approval_obj.Get(approval_obj.Schema.SUBJECT), aff4_type=implementation.GRRHunt, token=approval_obj.token) self.subject = api_hunt.ApiHunt().InitFromAff4Object( approval_subject_obj, with_full_summary=True) result = _InitApiApprovalFromAff4Object(self, approval_obj) original_object = approval_subject_obj.runner_args.original_object if original_object.object_type == "FLOW_REFERENCE": urn = original_object.flow_reference.ToFlowURN() original_flow = aff4.FACTORY.Open(urn, aff4_type=flow.GRRFlow, token=approval_obj.token) result.copied_from_flow = api_flow.ApiFlow().InitFromAff4Object( original_flow, flow_id=original_flow.urn.Basename()) elif original_object.object_type == "HUNT_REFERENCE": urn = original_object.hunt_reference.ToHuntURN() original_hunt = aff4.FACTORY.Open(urn, aff4_type=implementation.GRRHunt, token=approval_obj.token) result.copied_from_hunt = api_hunt.ApiHunt().InitFromAff4Object( original_hunt, with_full_summary=True) return result
def testDoesNothingIfArgsHaveNoChanges(self): before = hunt_plugin.ApiHunt().InitFromAff4Object( aff4.FACTORY.Open(self.hunt.urn, token=self.token)) self.handler.Handle(self.args, token=self.token) after = hunt_plugin.ApiHunt().InitFromAff4Object( aff4.FACTORY.Open(self.hunt.urn, token=self.token)) self.assertEqual(before, after)
def testDoesNotModifyHuntIfStateChangeFails(self): with self.assertRaises(hunt_plugin.InvalidHuntStateError): self.args.client_limit = 42 self.args.state = "COMPLETED" self.handler.Handle(self.args, token=self.token) after = hunt_plugin.ApiHunt().InitFromAff4Object( aff4.FACTORY.Open(self.hunt.urn, token=self.token)) self.assertNotEqual(after.client_limit, 42)
def InitFromAff4Object(self, approval_obj, approval_subject_obj=None): if not approval_subject_obj: approval_subject_obj = aff4.FACTORY.Open( approval_obj.Get(approval_obj.Schema.SUBJECT), aff4_type=implementation.GRRHunt, token=approval_obj.token) self.subject = api_hunt.ApiHunt().InitFromAff4Object( approval_subject_obj) return _InitApiApprovalFromAff4Object(self, approval_obj)
def testModifiesHuntCorrectly(self): self.args.client_rate = 100 self.args.client_limit = 42 self.args.expires = rdfvalue.RDFDatetime().FromSecondsFromEpoch(42) self.handler.Handle(self.args, token=self.token) after = hunt_plugin.ApiHunt().InitFromAff4Object( aff4.FACTORY.Open(self.hunt.urn, token=self.token)) self.assertEqual(after.client_rate, 100) self.assertEqual(after.client_limit, 42) self.assertEqual(after.expires, rdfvalue.RDFDatetime().FromSecondsFromEpoch(42))