コード例 #1
0
 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()
コード例 #2
0
 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())
コード例 #3
0
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"})
コード例 #4
0
 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')
コード例 #5
0
 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,
         })
コード例 #6
0
ファイル: starttele.py プロジェクト: LeoQuote/Playground
 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 "请输入响应语句"
コード例 #7
0
 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)
コード例 #8
0
 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()
コード例 #9
0
 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)
コード例 #10
0
ファイル: pop_rules.py プロジェクト: ADA-First/fae2
     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:
コード例 #11
0
 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
コード例 #12
0
 def test_str(self):
     rule = Rule(policy='block', surt='https://(org,')
     self.assertEqual(str(rule), 'BLOCK PLAYBACK (https://(org,)')