
    <i                        S r SSKrSSKrSSKJr  \R
                  R                  \R
                  R                  \5      S5      r	\
" \	5       r\R                  5        V s/ s H  o R                  5       PM     sn rSSS5        \R                  R!                  S\5      S 5       r/ SQr\R                  R!                  S\5      S	 5       r/ S
Qr\R                  R!                  S\5      S 5       rgs  sn f ! , (       d  f       N= f)z,
Test cases for stix2patterns/validator.py.
    Nvalidatezspec_examples.txt
test_inputc                 (    [        U SSS9nUSL d   eg)z2
Validate patterns from STIX 2.1 Patterning spec.
2.1Tstix_version
print_errsNr   r   	pass_tests     _/home/james-whalen/.local/lib/python3.13/site-packages/stix2patterns/test/v21/test_validator.pytest_spec_patternsr           
 %DII    ))zfile:size = 1280z?FAIL: Error found at line 1:0. input is missing square brackets)z[file:size = ]z4FAIL: Error found at line 1:13. mismatched input ']')z4[file:hashes.MD5 = cead3f77f6cda6ec00f57d76c9a6879f]zSFAIL: Error found at line 1:19. mismatched input 'cead3f77f6cda6ec00f57d76c9a6879f')z[file.size = 1280]zEFAIL: Error found at line 1:5. no viable alternative at input 'file.')z[file:name MATCHES /.*\.dll/]zLFAIL: Error found at line 1:19. mismatched input '/' expecting StringLiteral)z@[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] WITHIN ]z_FAIL: Error found at line 1:63. mismatched input ']' expecting {IntPosLiteral, FloatPosLiteral})zG[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] WITHIN 5 HOURS]zLFAIL: Error found at line 1:65. mismatched input 'HOURS' expecting 'SECONDS')zJ[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] WITHIN -5 SECONDS]z`FAIL: Error found at line 1:63. mismatched input '-5' expecting {IntPosLiteral, FloatPosLiteral})z)[network-traffic:dst_ref.value ISSUBSET ]z<FAIL: Error found at line 1:40. missing StringLiteral at ']')z7[file:hashes.MD5 =? 'cead3f77f6cda6ec00f57d76c9a6879f']z4FAIL: Error found at line 1:18. extraneous input '?')z2[x_whatever:detected == t'2457-73-22T32:81:84.1Z']z4FAIL: Error found at line 1:24. extraneous input 't')z [artifact:payload_bin = b'====']z4FAIL: Error found at line 1:24. extraneous input 'b')z[foo:bar=1] within 2 secondszIFAIL: Error found at line 1:12. mismatched input 'within' expecting <EOF>)z[file:hashes.'SHA-256' = 'f00']z'FAIL: 'f00' is not a valid SHA-256 hash)zY[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] WITHIN 5 SECONDS WITHIN 6 SECONDSz2FAIL: Duplicate qualifier type encountered: WITHIN)zY([win-registry-key:key = 'hkey_local_machine\\foo\\bar'] REPEATS 2 TIMES REPEATS 3 TIMES)z3FAIL: Duplicate qualifier type encountered: REPEATS)z[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] START t'2016-06-01T01:30:00.123Z' STOP t'2016-06-01T02:20:00.123Z' START t'2016-06-01T01:30:00.123Z' STOP t'2016-06-01T02:20:00.123Z'z5FAIL: Duplicate qualifier type encountered: STARTSTOPztest_input,test_outputc                 d    [        U SSSS9u  p#US   R                  U5      (       d   eUSL d   eg)z*
Validate that patterns fail as expected.
r   T)r	   ret_errsr
   r   FN)r   
startswith)r   test_outputr   errorss       r   test_fail_patternsr   A   sA    
 !%$[_`I!9,,,,r   )z[file:size = 1280]z[file:size != 1280]z[file:size < 1024]z[file:size <= 1024]z[file:size > 1024]z[file:size >= 1024]z![file:file_name = 'my_file_name']z1[file:extended_properties.'ntfs-ext'.sid = '234']zY[emailaddr:value MATCHES '.+\\@ibm\\.com$' OR file:name MATCHES '^Final Report.+\\.exe$']z*[ipv4addr:value ISSUBSET '192.168.0.1/24']z.[ipv4addr:value NOT ISSUBSET '192.168.0.1/24']zt[user-account:value = 'Peter'] AND [user-account:value != 'Paul'] AND [user-account:value = 'Mary'] WITHIN 5 SECONDSz4[file:file_system_properties.file_name LIKE 'name%']z7[file:file_name IN ('test.txt', 'test2.exe', 'README')]z![file:size IN (1024, 2048, 4096)]zU[network-connection:extended_properties[0].source_payload MATCHES 'dGVzdHRlc3R0ZXN0']zH[win-registry-key:key = 'hkey_local_machine\\foo\\bar'] WITHIN 5 SECONDSz2[x_whatever:detected == t'2018-03-22T12:11:14.1Z']z0[artifact:payload_bin = b'dGhpcyBpcyBhIHRlc3Q=']z[foo:bar=1] REPEATS 9 TIMESz4[network-traffic:start = '2018-04-20T12:36:24.558Z']zW( [(network-traffic:dst_port IN(443,6443,8443) AND network-traffic:src_packets != 0) ])z[([win-registry-key:key = 'hkey_local_machine\\foo\\bar']) WITHIN 5 SECONDS WITHIN 6 SECONDSzY([win-registry-key:key = 'hkey_local_machine\\foo\\bar'] REPEATS 2 TIMES) REPEATS 2 TIMESz[network-traffic:src_port = 37020 AND user-account:user_id = 'root'] START t'2016-06-01T01:30:00.123Z' STOP t'2016-06-01T02:20:00.123Z' OR [ipv4-addr:value = '192.168.122.83'] START t'2016-06-01T03:55:00.123Z' STOP t'2016-06-01T04:30:24.743Z'z5[file:hashes[*] = '8665c8d477534008b3058b72e2dae8ae']c                 (    [        U SSS9nUSL d   eg)z*
Validate that patterns pass as expected.
r   Tr   Nr   r   s     r   test_pass_patternsr   l   r   r   )__doc__ospyteststix2patterns.validatorr   pathjoindirname__file__TEST_CASE_FILEopenf	readlinesstrip
SPEC_CASESmarkparametrizer   
FAIL_CASESr   
PASS_CASESr   )xs   0r   <module>r,      s    
  ,bggooh79LM	.Q%&[[]3]'')]3J  z2 3&
R 1:> ?
B z2 3C 4 s   C9!C4:C94C99
D