a "e@sddlTddlmZddlmZmZzddlmZmZdZ Wn ddl mZmZdZ Yn0Gdd d e j Z ed kre d S) )*)DATA_DIR)RulesRule)patch mock_openz builtins.openz__builtin__.openc@s`eZdZeddZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS) TestRulescCsddtjD|_dS)NcSsg|]}|tr|qS) startswithr.0xr r ;/usr/lib/python3.9/site-packages/tracer/tests/test_rules.py s z(TestRules.setUpClass..)r DEFINITIONS)clsr r r setUpClassszTestRules.setUpClasscCs|jt_dt_dSN)rrZ_rulesselfr r rsetUpszTestRules.setUpcCstD]}||tqdSr)rallZassertIsInstancerrZruler r rtest_rules_typess zTestRules.test_rules_typescCs|d}tD]j}d|vs d|vr2|dt||jtjvrR|d|jt|dkrn|d|j|d7}q dS)NrnameactionzMissing attributes in rule #zUnknown action in rule: z Unsupported attributes in rule: ) rrfailstrrZACTIONSvaluesrlen)rirr r rtest_rules_attributess  zTestRules.test_rules_attributescCs4t}|D]"}||dkr |d|jq dS)NrzDuplicate rules for: )rrcountrr)rrulesr#r r rtest_rules_duplicity*szTestRules.test_rules_duplicitycCs|tddS)NZNON_EXISTING_APPLICATION)Z assertIsNonerfindrr r rtest_app_with_no_rule0szTestRules.test_app_with_no_rulecCs0tddi}|t|d|t|ddS)Nrfooz )r assertEqualrreprrr r rtest_representations3s zTestRules.test_representationscCs8tddd}tddd}||||jddS)Nr*bar)rrZbaz)rupdater+r)rZr1Zr2r r r test_update8s zTestRules.test_updatecCsdgt_d}ttt|dvt}|t|d|tdd|D||dj d||dj d ||d j d Wd n1s0Yd S) z/ Test parsing a single XML file with rules zwhatever-file.xmlzM )Z read_datarcSsg|]}t|tqSr ) isinstancerr r r rrMz'TestRules.test_load..rr*returnrr.N) rrr builtins_openrrr+r!Z assertTruerr)rdatar&r r r test_load?szTestRules.test_loadcCs$d}|D]}|j|kr|d7}q|S)Nrr)r)rZapp_nameZappsr%ar r r_countRs   zTestRules._countN)__name__ __module__ __qualname__ classmethodrrrr$r'r)r-r0r6r8r r r rr s r __main__N)Z__meta__Z tracer.pathsrZtracer.resources.rulesrrZ unittest.mockrrr4ZmockZunittestZTestCaser r9mainr r r rs  M