?Qg;ddlmZddlZddlmZmZddlmZGddeZGddeZ Gd d eZ Gd d eZ Gd deZ dS))TestCaseN)Draft4Validator exceptions)PY3cDeZdZdZdZdZdZdZdZdZ dZ d Z d S) TestBestMatchc2t|}tj|}tjt|}d}|||||||S)Nz:Didn't return a consistent best match! Got: {0} Then: {1})msg)listr best_matchreversed assertEqual _contentsformat)selferrorsbest reversed_bestr s /builddir/build/BUILD/imunify360-venv-2.5.0/opt/imunify360/venv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.pyr zTestBestMatch.best_match sf$V,,"-hv.>.>?? M  NN  m5577 4//     ctddddddiidii}||ddgii}||jddS) N propertiesfoobartypeobject) minPropertiesrrrr iter_errorsr validatorrr!rs r(test_shallower_errors_are_better_matchesz6TestBestMatch.test_shallower_errors_are_better_matchess#)*',vx.@&A    y44eeR[5IJJKK 99999rctdddiddigddiddigd}||i}||jddS)zn A property you *must* match is probably better than one you have to match a part of. rrstringnumber)ranyOfoneOfrNrr"s r%test_oneOf_and_anyOf_are_weak_matchesz3TestBestMatch.test_oneOf_and_anyOf_are_weak_matches"s $!"!8,vx.@A!8,vx.@A    y44R8899 99999rc tdddddiddddiiigiii}||dddii}||jdd S) aL If the most relevant error is an anyOf, then we traverse its context and select the otherwise *least* relevant error, since in this case that means the most specific, deep, error inside the instance. I.e. since only one of the schemas must match, we look for the most relevant one. rrr'rr%rarray Nrr r rvalidator_valuer"s r8test_if_the_most_relevant_error_is_anyOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_anyOf_it_is_traversed2$#X.)EFG3D+EF"    y44eeR[5IJJKK -w77777rc tdddddiddddiiigiii}||dddii}||jdd S) aL If the most relevant error is an oneOf, then we traverse its context and select the otherwise *least* relevant error, since in this case that means the most specific, deep, error inside the instance. I.e. since only one of the schemas must match, we look for the most relevant one. rrr(rr%rr+r,Nr-r"s r8test_if_the_most_relevant_error_is_oneOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_oneOf_it_is_traversedKr0rc tdddddiddddiiigiii}||dddii}||jdd S) z Now, if the error is allOf, we traverse but select the *most* relevant error from the context, because all schemas here must match anyways. rrallOfrr%rr+r,Nr-r"s r8test_if_the_most_relevant_error_is_allOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_allOf_it_is_traversedds $#X.)EFG3D+EF"    y44eeR[5IJJKK -x88888rc tdddddidddiddddiiigigiii}||dddii}||jddS) Nrrr(rr%rr+r,r-r"s rtest_nested_context_for_oneOfz+TestBestMatch.test_nested_context_for_oneOfys##X. '%+X$6(4,1FG3D7*%&*"  "   *y44eeR[5IJJKK -w77777rctddi}|i\}|tj|ijddS)Nrr)rr rrr r!)rr!errors rtest_one_errorzTestBestMatch.test_one_errorsm#_a$899 &&r**   !)"7"7";"; < < F      rcti}|tj|idS)N)r assertIsNonerr r )rr!s rtest_no_errorszTestBestMatch.test_no_errorssB#B''  */ 0E0Eb0I0IJJKKKKKrN) __name__ __module__ __qualname__r r#r)r/r2r5r7r:r=rrrrs    : : :::: 88828882999*8882   LLLLLrrc&eZdZdZdZdZdZdS)TestByRelevancec0tjddg}tjdddg}t||gtj}|||t||gtj}|||dS)NOh no!bazpathOh yes!rrkey)rValidationErrormax relevanceassertIs)rshallowdeepmatchs r#test_short_paths_are_better_matchesz3TestByRelevance.test_short_paths_are_better_matchess,XUGDDD))5%.IIIWdO)=>>> eW%%%T7O)=>>> eW%%%%%rc`tjdg}tjddg}t||gtj}|d|Ddgggt||gtj}|d|DdgggdS)NrErGrIrrJc6g|]}t|jSrAr rH.0r9s r zNTestByRelevance.test_global_errors_are_even_better_matches.." 2 2 2%T%*   2 2 2rc6g|]}t|jSrArVrWs rrYzNTestByRelevance.test_global_errors_are_even_better_matches..rZr)rrLsortedrNr)rrPrQrs r*test_global_errors_are_even_better_matchesz:TestByRelevance.test_global_errors_are_even_better_matchess,XB???))5'BBB$Z-ABBB  2 26 2 2 2WbM   wZ-ABBB  2 26 2 2 2WbM     rc0tjdgd}tjdgd}tjd}t||g|}|||t||g|}|||dS)NrEarHr!rIb)weakrJrrL by_relevancerMrO)rrbnormalr rRs r'test_weak_validators_are_lower_priorityz7TestByRelevance.test_weak_validators_are_lower_prioritys)(sKKK+IB#NNN,#666 T6N 333 eV$$$VTN 333 eV$$$$$rcdtjdgd}tjdgd}tjdgd}tjdd}t|||g| }|||t|||g| }|||dS) NrEr_r`rIrazOh fine!c)rbstrongrJrc)rrbrerir rRs r*test_strong_validators_are_higher_priorityz:TestByRelevance.test_strong_validators_are_higher_prioritys)(sKKK+IB#NNN+JR3OOO,#cBBB T66* ;;; eV$$$VVT* ;;; eV$$$$$rN)r>r?r@rSr]rfrjrArrrCrCsP&&&   % % % % % % % %rrCcDeZdZdZdZdZdZdZdZdZ dZ d Z d S) TestErrorTreecdtdD}tj|}||jddS)Nc:g|]}tjd|S) Somethingr!)rrL)rXis rrYzQTestErrorTree.test_it_knows_how_many_total_errors_it_contains..s8     &{a @ @ @   r)ranger ErrorTreer total_errorsrrtrees r/test_it_knows_how_many_total_errors_it_containsz=TestErrorTree.test_it_knows_how_many_total_errors_it_containssW  1XX   #F++ *A.....rctjddgg}tj|}|d|dS)N a messagerrG)rrLrtassertInrvs r1test_it_contains_an_item_if_the_item_had_an_errorz?TestErrorTree.test_it_contains_an_item_if_the_item_had_an_errorsF,[wGGGH#F++ eT"""""rctjddgg}tj|}|d|dS)NrzrrGr)rrLrt assertNotInrvs r9test_it_does_not_contain_an_item_if_the_item_had_no_errorzGTestErrorTree.test_it_does_not_contain_an_item_if_the_item_had_no_errorsH,[wGGGH#F++ %%%%%rctjdd}tj|g}||jd|idS)NrzrrprrLrtrrrr9rws r1test_validators_that_failed_appear_in_errors_dictz?TestErrorTree.test_validators_that_failed_appear_in_errors_dictsK*;%HHH#UG,, uen55555rctjddgtjdddgg}tj|}|d|d|d|ddS)Nz a bar messagerrGza bar -> 0 messager)rrLrtr{r~rvs r1test_it_creates_a_child_tree_for_each_nested_pathz?TestErrorTree.test_it_creates_a_child_tree_for_each_nested_paths  &eW E E E  &';5!* M M M #F++ ae%%% DK(((((rctjddddgtjddddg}}tj||g}||ddj||ddS) N1rrr)r!rH2quux)rrr)re1e2rws r+test_children_have_their_errors_dicts_builtz9TestErrorTree.test_children_have_their_errors_dicts_builts  &se5!* M M M  &sfE1: N N N #RH-- eQ.B0G0GHHHHHrctjddddgdtjddd d gd }}tj||gdS) Nrrrbar2i1)r!rHinstancerrfoobarri2)rrLrt)rrrs r"test_multiple_errors_with_instancez0TestErrorTree.test_multiple_errors_with_instancesr  &V_      & ]      b"X&&&&&rctjddg}tj|g}|t5|dddddS#1swxYwYdS)N123r)r!rr)rrLrt assertRaises IndexErrorrs r>test_it_does_not_contain_subtrees_that_are_not_in_the_instancezLTestErrorTree.test_it_does_not_contain_subtrees_that_are_not_in_the_instance s*5EBOOO#UG,,   z * *   GG                  s AA!$A!ctjddidg}tj|g}||dtjdS)z If a validator is dumb (like :validator:`required` in draft 3) and refers to a path that isn't in the instance, the tree still properly returns a subtree for that path. rzr)r!rrHN)rrLrtassertIsInstancers r9test_if_its_in_the_tree_anyhow_it_does_not_raise_an_errorzGTestErrorTree.test_if_its_in_the_tree_anyhow_it_does_not_raise_an_errors]* 52UG   #UG,, d5k:+?@@@@@rN) r>r?r@rxr|rrrrrrrrArrrlrls///### &&& 666 )))III ' ' ' A A A A ArrlcJeZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) TestErrorInitReprStrc ztddddddi}||tjdi|S)Nhellorr%)messager!r.rschemarA)dictupdaterrL)rkwargsdefaultss r make_errorzTestErrorInitReprStr.make_error"sU%Y'     )55H555rc Vtr|dd}tj|d}|jdi|}t |d\}}}|||j |||dS)Nzu'' rA) rreplacetextwrapdedentrstriprstr partitionrr)rexpectedrr9 message_line_rests r assertShowsz TestErrorInitReprStr.assertShows-s  3''c22H?8,,33D99))&)) #E 4 4T : : a u}555 x(((((rc~|}|t|jddS)Nr)r assertGreaterlenargs)rr9s r!test_it_calls_super_and_sets_argsz6TestErrorInitReprStr.test_it_calls_super_and_sets_args7s5!! 3uz??A.....rcx|ttjdddzdS)NzHello!rz)rreprrrLrs r test_reprzTestErrorInitReprStr.test_repr;sE  +H=== > > #h .     rctjd}|t|ddddddid}|D]H}t |}||=tjdi|}|t|dIdS)Nrrr%r)r!r.rrr)rrLrrr)rr9rattrks rtest_unset_errorz%TestErrorInitReprStr.test_unset_errorAs*955 UY/// 'x(    4 4DV A$.>>A>>E   SZZ 3 3 3 3  4 4rc6|dggdS)Nz Failed validating u'type' in schema: {u'type': u'string'} On instance: 5 rH schema_pathrrs rtest_empty_pathsz%TestErrorInitReprStr.test_empty_pathsRs6    rc:|ddgdgdS)Nz Failed validating u'type' in schema: {u'type': u'string'} On instance[0]: 5 ritemsrrrs rtest_one_item_pathsz(TestErrorInitReprStr.test_one_item_paths_s:     rc>|dddggddS)Nz Failed validating u'type' in schema[u'items'][0]: {u'type': u'string'} On instance[0][u'a']: 5 rr_)rrrrrrs rtest_multiple_item_pathsz-TestErrorInitReprStr.test_multiple_item_pathsls@  T(((  rc |dttdtt tdtdddS)Na@ Failed validating u'maxLength' in schema: {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19} On instance: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]  maxLength)rrr!)rr rsrziprs rtest_uses_pprintz%TestErrorInitReprStr.test_uses_pprintyse 1 d%))__E"IIuRyy1122"k 6 6 6 6 6 rcGfddt}|}tjdd|dd}t |t |dS) z Check for https://github.com/Julian/jsonschema/issues/164 which rendered exceptions unusable when a `ValidationError` involved instances with an `__eq__` method that returned truthy values. c$eZdZfdZfdZdS)dTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator..DontEQMeBroc2ddSNzDon't!failthisotherrs r__eq__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator..DontEQMeBro.__eq__ (#####rc2ddSrrrs r__ne__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator..DontEQMeBro.__ne__rrN)r>r?r@rrrsr DontEQMeBrorsG $ $ $ $ $ $ $ $ $ $ $ $rrrzrsomer)r!rr.rN)rrrLr{rr)rrrr9s` r:test_str_works_with_instances_having_overriden_eq_operatorzOTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operators $ $ $ $ $ $ $& $ $ $;==* "     d8nnc%jj11111rN) r>r?r@rrrrrrrrrrrArrrr!s 6 6 6)))///   444"            7 7 7 r22222rrceZdZdZdS) TestHashablecttjdgttjdgdS)N)setrrL SchemaErrorrs r test_hashablezTestHashable.test_hashables@ Z ' + + ,--- Z #B ' ' ()))))rN)r>r?r@rrArrrrs#*****rr) unittestrr jsonschemarrjsonschema.compatrrrCrlrrrArrrsR22222222!!!!!!TLTLTLTLTLHTLTLTLn1%1%1%1%1%h1%1%1%hKAKAKAKAKAHKAKAKA\g2g2g2g2g28g2g2g2T*****8*****r