def setUp(self): self.rule = Rule() now = datetime.now(timezone.utc) self.rule.populate({ 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,archive,', 'capture_date': { 'start': now.isoformat(), 'end': (now + timedelta(days=365)).isoformat(), }, 'retrieve_date': { 'start': now.isoformat(), 'end': (now + timedelta(days=365)).isoformat(), }, 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'private_comment': 'going roman', 'enabled': True, }) self.rule.save() self.client = Client()
def test_add_rule(self): rule = Rule(start_sort='100000', end_sort='100001', mod_rule='MOD10', weight=[0,1,2,3,4,5,6,7,8,9,10,11,12,13], mod_exception='') rule.save() record = Rule.objects.get(pk=rule.id) assert record == rule assert '/rules/detail/' in str(rule.get_absolute_url())
def send_finding_alerts_api(request, finding_id): if request.GET.get("raw", None) and request.GET.get("raw") == "true": finding = get_object_or_404(RawFinding, id=finding_id) else: finding = get_object_or_404(Finding, id=finding_id) # Create a new rule rule = Rule(title="manual", severity=finding.severity.capitalize(), owner_id=request.user.id) if request.GET.get("type", None) and request.GET.get("type") == "slack": rule.target = "slack" rule.notify(finding.title) elif request.GET.get("type", None) and request.GET.get("type") == "thehive": rule.target = "thehive" rule.notify(message=finding.title, asset=finding.asset, description=finding.description) elif request.GET.get("type", None) and request.GET.get("type") == "email": rule.target = "email" rule.notify(message=finding.title, asset=finding.asset, description=finding.description) rule.delete() return JsonResponse({"status": "success"})
def test_save_adds_rule_change(self): now = datetime.now(timezone.utc) rule = Rule() rule.populate({ 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,', 'capture_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'retrieve_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'private_comment': 'going roman', 'enabled': True, }) rule.save() last_change = RuleChange.objects.all().order_by('-pk')[0] self.assertEqual(last_change.change_type, 'c') rule.policy = 'allow' rule.save() last_change = RuleChange.objects.all().order_by('-pk')[0] self.assertEqual(last_change.change_type, 'u') self.assertEqual(last_change.policy, 'block')
def test_summary(self): now = datetime.now() rule = Rule() rule.populate({ 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,', 'neg_surt': 'https://(org,archive,api,)', 'capture_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'retrieve_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'ip_range': { 'start': '4.4.4.4', 'end': '8.8.8.8', }, 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'private_comment': 'going roman', 'enabled': True, }) self.assertEqual( rule.summary(), { 'id': None, # The rule wasn't saved, so this won't be populated. 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,', 'neg_surt': 'https://(org,archive,api,)', 'capture_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'retrieve_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'ip_range': { 'start': '4.4.4.4', 'end': '8.8.8.8', }, 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'enabled': True, })
def on_rule_trigger(self): # 设置规则模式 步骤 2 输入 触发语句 # status: rule_trigger # next_status: rule_response new_rule = Rule(trigger_text=self.message, added_by=self.user) new_rule.save() self.user.status = 'rule_response' self.user.save() return "请输入响应语句"
def test_populate(self): now = datetime.now() base = Rule() base.populate({ 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,', 'neg_surt': 'https://(org,archive,', 'protocol': 'http', 'subdomain': '', 'capture_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'retrieve_date': { 'start': now.isoformat(), 'end': now.isoformat(), }, 'ip_range': { 'start': '4.4.4.4', 'end': '8.8.8.8', }, 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'private_comment': 'going roman', 'enabled': True, }) self.assertEqual(base.policy, 'block') self.assertEqual(base.environment, 'prod') self.assertEqual(base.surt, 'https://(org,') self.assertEqual(base.neg_surt, 'https://(org,archive,') self.assertEqual(base.protocol, 'http') self.assertEqual(base.subdomain, '') self.assertEqual(base.capture_date_start, now) self.assertEqual(base.capture_date_end, now) self.assertEqual(base.retrieve_date_start, now) self.assertEqual(base.retrieve_date_end, now) self.assertEqual(base.ip_range_start, '4.4.4.4') self.assertEqual(base.ip_range_end, '8.8.8.8') self.assertEqual(base.seconds_since_capture, 256) self.assertEqual(base.collection, 'Planets') self.assertEqual(base.partner, 'Holst') self.assertEqual(base.warc_match, 'jupiter') self.assertEqual(base.rewrite_from, 'zeus') self.assertEqual(base.rewrite_to, 'jupiter') self.assertEqual(base.public_comment, 'initial creation') self.assertEqual(base.private_comment, 'going roman') self.assertEqual(base.enabled, True)
def handle(self, *args, **kwargs): # Require the user to go through a step before fuzzing the database. if os.environ.get(self.UNDERSTOOD) != 'understood': self.stderr.write( 'This command adds fuzzed data to the database, no matter ' 'the environment!') self.stderr.write( 'Please run this command with the environment variable ' + self.UNDERSTOOD + ' set to the value `understood`.') sys.exit(1) # Generate the requested number of unique SURTs. surts = [] while len(surts) < kwargs['records'][0]: surt = self.build_surt() if surt not in surts: surts.append(surt) self.stdout.write('{}: {}'.format(len(surts), surt)) # Generate and save a rule for each SURT. for surt in surts: rule = Rule(surt=surt) self.add_constraints(rule) rule.save()
def test_populate_no_dates(self): base = Rule() base.populate({ 'policy': 'block', 'environment': 'prod', 'surt': 'https://(org,', 'neg_surt': 'https://(org,archive,', 'protocol': 'http', 'subdomain': '', 'seconds_since_capture': 256, 'collection': 'Planets', 'partner': 'Holst', 'warc_match': 'jupiter', 'rewrite_from': 'zeus', 'rewrite_to': 'jupiter', 'public_comment': 'initial creation', 'private_comment': 'going roman', 'enabled': True, }) self.assertEqual(base.capture_date_start, None) self.assertEqual(base.capture_date_end, None) self.assertEqual(base.retrieve_date_start, None) self.assertEqual(base.retrieve_date_end, None)
rule.scope=scope rule.category = RuleCategory.objects.get(rule_category_code=r['rule_category']) rule.group=group rule.language_dependancy=r['language_dependency'] rule.primary_property=r['primary_property'] rule.resource_properties=resource_properties rule.validation=r['validate'] rule.wcag_primary = SuccessCriterion.get_by_wcag_number(r['wcag_primary']) rule.updated_date=r['last_updated'] NodeResultMessage.objects.filter(rule=rule).delete() except ObjectDoesNotExist: print(" Creating Rule: " + r['nls_rule_id']) resource_properties = ",".join(r['resource_properties']) rule = Rule(rule_id=r['rule_id'],scope=scope,group=group,language_dependancy=r['language_dependency'],primary_property=r['primary_property'],resource_properties=resource_properties,validation=r['validate'],updated_date=r['last_updated']) rule.wcag_primary = SuccessCriterion.get_by_wcag_number(r['wcag_primary']) rule.category = RuleCategory.objects.get(rule_category_code=r['rule_category']) rule.slug = r['rule_id'].lower().replace('_', '') rule.save() rule.wcag_related.clear(); for related in r['wcag_related']: rule.wcag_related.add(SuccessCriterion.get_by_wcag_number(related)) rule.target_resources.clear(); for m in r['target_resources']: try: rule.target_resources.add(ElementDefinition.get_by_title(m)) except:
def test_delete_rule(self): rule = Rule(start_sort='100000', end_sort='100001', mod_rule='MOD10', weight=[0,1,2,3,4,5,6,7,8,9,10,11,12,13], mod_exception='') rule.save() rule.delete() assert rule.id is None
def test_str(self): rule = Rule(policy='block', surt='https://(org,') self.assertEqual(str(rule), 'BLOCK PLAYBACK (https://(org,)')