bgddlmZddlmZddlmZddlmZddlm Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlZddlmZmZmZmZdd lmZmZdd lmZd ZGd d eZGddeZGdde ZGdde ZGdde Z Gdde!Z"Gdde"e!Z#Gdde!Z$Gdde$e#e Z%Gdde$e#e Z&Gd d!e#e Z'Gd"d#e#e Z(Gd$d%eZ)Gd&d'eZ*Gd(d)eZ+d*Z,ej-Gd+d,e!Z.ej-Gd-d.e!Z/dS)/)deque)contextmanager)Decimal)BytesIO)TestCaseN)SynchronousTestCase) FormatChecker TypeChecker exceptions validators)PY3 pathname2url)bugc#dK||stjdVdSdS)NWhoops!) startswithr ValidationError) validatorrinstanceschemas q/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/jsonschema/tests/test_validators.pyrrsC   z * *5(444444455cPeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) TestCreateAndExtendc*||jtjt tjddi|_dt i|_t|_tj |j|j|j|_ dS)N$idzsome://meta/schemar meta_schemar type_checker) addCleanup assertEqualr meta_schemasdictrrr rcreate Validatorselfs rsetUpzTestCreateAndExtend.setUps     # ( ) )   #$89(*5'MM#*(*   rc||jj|jj|jjf|j|j|jfdSN)r!r% VALIDATORS META_SCHEMA TYPE_CHECKERr rrr&s r test_attrszTestCreateAndExtend.test_attrs*sY )*+   ! rcjddi}|||j|dS)Nrfoo)r!r%rr'rs r test_initzTestCreateAndExtend.test_init7s7( //6?????rc ddi}||j}t|d}||gt jdd|ddt dg}t|d}|t|d||d|dS) Nrhelhellorgoodbye)rrrvalidator_value schema_pathr) r% iter_errorslistr!r rrlen _contents)r'rr:errorsexpected_errors rtest_iter_errorsz$TestCreateAndExtend.test_iter_errors;s(nnV,,8 kk(++,, $$$#3 #"}o..    kk*--.. Va((( ,,..0H0H0J0JKKKKKrctjddid}|tjjd||jddS)Nr something my versionrversionMyVersionValidator)r r$r r"popr!__name__r'r%s r.test_if_a_version_is_provided_it_is_registeredzBTestCreateAndExtend.test_if_a_version_is_provided_it_is_registeredOs`%-      /3[AAA +-ABBBBBrcttj}tjddi|tj|dS)Nid)r)r#r r"r$r!)r'originals r6test_if_a_version_is_not_provided_it_is_not_registeredzJTestCreateAndExtend.test_if_a_version_is_not_provided_it_is_not_registeredWsI /00udm4444 0(;;;;;rcd}d|i}tj|dd|tjj|||tjdS)Nmeta schema idrLrCc.|ddSNrLgetss rzMTestCreateAndExtend.test_validates_registers_meta_schema_id..cAEE$OOrrrEid_ofr r$r r"rGassertInr'meta_schema_keymy_meta_schemas r'test_validates_registers_meta_schema_idz;TestCreateAndExtend.test_validates_registers_meta_schema_id\sp*1& ++     /3_EEE oz'>?????rcd}d|i}tj|d|tjj|||tjdS)Nmeta schema $idrrCrDr\r^s r.test_validates_registers_meta_schema_draft6_idzBTestCreateAndExtend.test_validates_registers_meta_schema_draft6_idisj+ /2&       /3_EEE oz'>?????rc tjid|tfddgfddddd ifd fDdS) Nrr c3^K|]'\}}i||V(dS))rtypeN)is_type).0rirr%s r z@TestCreateAndExtend.test_create_default_types..xsV  "D( " %%xd%CC      rarray)booleanT)integer )nullN)numberg(@object)stringr0)r r$ assertTrueallrIs @rtest_create_default_typesz-TestCreateAndExtend.test_create_default_typesus%"DDD       rN&$#%O''      rcBt|jj}t}t j|jd|i}||j|j|j|jjft|||jj|jj|fdS)Nnewr ry) r#r%r+rsr extendr!r,r-)r'rMryExtendeds r test_extendzTestCreateAndExtend.test_extends122hh$ N}    #$%)   X3'''*+  rcDfd}d}d|d}tj|jj|}||j|tj|}||j|dS)zK Extending a validator preserves its notion of schema IDs. c`|dj|S)N__test__)rUr%ID_OF)rr's rr[z3TestCreateAndExtend.test_extend_idof..id_ofs'::k4>+?+?+G+GHH Hrzthe://correct/id/zthe://wrong/id/)rr)rr rr[N)r r$rr!rr,r|)r'r[ correct_idrOriginalDeriveds` rtest_extend_idofz$TestCreateAndExtend.test_extend_idofs I I I I I( %#  $#*     (<==zJJJ#H-- w':;;ZHHHHHrN)rH __module__ __qualname__r(r.r2r@rJrNrardrwr~rrfrrrrs      @@@LLL(CCC<<< @ @ @ @ @ @   "   ,IIIIIrrc\eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)TestLegacyTypeCheckingctjid}|t|jhd|dS)Nrfrg>rqrmrrrsrtrnro)r r$r!set DEFAULT_TYPES flushWarningsrIs rrwz0TestLegacyTypeChecking.test_create_default_typessf%"DDD    ' ( (+++  rc tjid}t|j}t }tj|d|i}||j|j|j|j|j |ij | ddft|||j|j||j |j | ddfdS)Nrfrgryrzrmessager{) r r$r#r+rsr|r!r,r-rr)r'r%rMryr}s rr~z"TestLegacyTypeChecking.test_extends %"DDD  ,--hh$ }    #$%$& *""$$Q' 2 X3'''%&''""$$Q' 2      rcBddi}|tj|dtj|dtt fi}||d|dS)Nrirtrp)types) assertFalser Draft7Validatoris_validstrintrur)r'rrs r0test_types_redefines_the_validators_type_checkerzGTestLegacyTypeChecking.test_types_redefines_the_validators_type_checkers(# 3F;;DDRHHIII. c3Z(     **2../// rc |tdtj|jjjt jiidtidS)NzPThe default_types argument is deprecated. Use the type_checker argument instead.r0)categoryrfilenamefrr default_types) assertWarnsDeprecationWarningsysmodulesr__file__r r$rsr&s r"test_providing_default_types_warnsz9TestLegacyTypeChecking.test_providing_default_types_warnssY '9[!1!<=F &/  rctjiit}|tj5}|jdddn #1swxYwY|dt|j|tj5|ijdddn #1swxYwY| | dS)a We raise an error when you ask a validator with non-default type checker for its DEFAULT_TYPES. The type checker argument is new, so no one but this library itself should be trying to use it, and doing so while then asking for DEFAULT_TYPES makes no sense (not to mention is deprecated), since type checkers are not strictly about Python type. rNz=DEFAULT_TYPES cannot be used on Validators using TypeCheckers) r r$r assertRaises _DontDoThatrr]r exceptionrrr'r%es r?test_cannot_ask_for_default_types_with_non_default_type_checkerzVTestLegacyTypeChecking.test_cannot_ask_for_default_types_with_non_default_type_checkersk%$     z5 6 6 $!  # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ K        z5 6 6 ( ( IbMM ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ++--.....s$AAA)CC  C ctjiit}|||i||dS)Nr)r r$r rrrIs r2test_providing_explicit_type_checker_does_not_warnzITestLegacyTypeChecking.test_providing_explicit_type_checker_does_not_warns{%$   ++--... "  ++--.....rctjii}|||i||dS)Nrg)r r$rrrIs r$test_providing_neither_does_not_warnz;TestLegacyTypeChecking.test_providing_neither_does_not_warn#sj%"DDD  ++--... "  ++--.....rc^|t5}tjiidtit dddn #1swxYwY|dt|j| | dS)Nr0)rr rrz:Do not specify default_types when providing a type checker) r TypeErrorr r$rsr r]rrrrr'rs r5test_providing_default_types_with_type_checker_errorszLTestLegacyTypeChecking.test_providing_default_types_with_type_checker_errors*s   y ) ) Q  $fo(]]                     H       ++--.....s,AAAcdtjiidti}|t5}tj|it dddn #1swxYwY|dt|j | dS)Nrm)rr r)r rzCannot extend a validator created with default_types with a type_checker. Update the validator to use a type_checker when created.) r r$r;rrr|r r]rrrrs r      ///8 / / //// / / /.///   $   $     rrc eZdZdZdZdZdS)TestIterErrorsc8tji|_dSr*)r Draft3Validatorrr&s rr(zTestIterErrors.setUps#3B77rcddg}dgdgdgdd}d|j||D}|d d d d |d g}|t|t|dS)Nr9rm)abc)drr)disallowenumminItemsc3$K|] }|jV dSr*)rrkrs rrlz2TestIterErrors.test_iter_errors..s$OOQqyOOOOOOrrz is disallowed for [1, 2]z[1, 2] is too shortz[1, 2] is not one of r)rr:r!sorted)r'rrgotexpecteds rr@zTestIterErrors.test_iter_errorssq6!%oo7   PO$."<"s r0test_iter_errors_multiple_failures_one_validatorz?TestIterErrors.test_iter_errors_multiple_failures_one_validatorsaSVDD *#Q'$&>> dn006BBCC Va(((((rN)rHrrr(r@rrfrrrrsA888888 ) ) ) ) )rrceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdS)TestValidationErrorMessagesc|dtj|tj5}tj||g|Ri|dddn #1swxYwY|jjS)Ncls) setdefaultr rrr rvalidaterr)r'rrargskwargsrs r message_forz'TestValidationErrorMessages.message_fors%!;<<<   z9 : : Ca  & B4 B B B6 B B B C C C C C C C C C C C C C C C{""sA##A'*A'cj|dddi}||ddzdSNr9rirtrrz1 is not of type %rrr!r'rs rtest_single_type_failurez4TestValidationErrorMessages.test_single_type_failuresA""Aw 6J"KK "7)"CDDDDDrcl|dddgi}||ddzdSrrrs rtest_single_type_list_failurez9TestValidationErrorMessages.test_single_type_list_failuresC""Aw 6L"MM "7)"CDDDDDrcd}|ddt|i}||d|zdS)N)rtrsr9rirz1 is not of type %r, %r)rr;r!)r'rrs rtest_multiple_type_failurez6TestValidationErrorMessages.test_multiple_type_failuresL$""AwU 6L"MM ";e"CDDDDDrctdddigi}|dd|gi}||ddS)Nriminimumrr9r1 is less than the minimum of 3r)r'rirs r&test_object_without_title_type_failurezBTestValidationErrorMessages.test_object_without_title_type_failuresO:q/*+""Aw6G"HH "CDDDDDrcpddddgi}|d|}||ddS)NriFoor)namerr9rrrr'rrs r#test_object_with_named_type_failurez?TestValidationErrorMessages.test_object_with_named_type_failuresLe;;<=""Af"== "CDDDDDrcd|dddi}||ddS)Nr9rrrz1 is less than the minimum of 2rrs r test_minimumz(TestValidationErrorMessages.test_minimums;""Ay!n"EE "CDDDDDrcd|dddi}||ddS)Nr9rrrz"1 is greater than the maximum of 0rrs r test_maximumz(TestValidationErrorMessages.test_maximums;""Ay!n"EE "FGGGGGrcd\}}d||ii}|ddi|tj}|||d|dSNrr0 dependenciesrrrrrz is a dependency of rr rr!r'dependonrrs r test_dependencies_single_elementz2""QZ*#   FF"KLLLLLrcd\}}d||gii}|ddi|tj}|||d|dSr)rr rr!r s rtest_dependencies_list_draft7z9TestValidationErrorMessages.test_dependencies_list_draft7rrch|dggdd}|d|dS)NrFitemsadditionalItemsrz(2 was unexpected)rr]rs r#test_additionalItems_single_failurez?TestValidationErrorMessages.test_additionalItems_single_failuresI""S e<<#   *G44444rcj|gdgdd}|d|dS)N)r9rrFrrz(1, 2, 3 were unexpected)rrs r&test_additionalItems_multiple_failureszBTestValidationErrorMessages.test_additionalItems_multiple_failuressK""YY e<<#   17;;;;;rcxd}ddi}||di|}|d|d|dS)Nr0additionalPropertiesFrr(z was unexpected)r)r' additionalrrs r(test_additionalProperties_single_failurezDTestValidationErrorMessages.test_additionalProperties_single_failuresP )51""ZOF"KK zzz;WEEEEErc(ddi}|tddg|}|t d||t d||d|dS)NrFr0rrzwere unexpected))rr#fromkeysr]reprrs r+test_additionalProperties_multiple_failureszGTestValidationErrorMessages.test_additionalProperties_multiple_failures s)51""]]E5>22#   d5kk7+++ d5kk7+++ ('22222rcddi}|ddi|tj}|d|dS)Nconstrpr0rrz12 was expectedrr Draft6Validatorr]rs r test_constz&TestValidationErrorMessages.test_constsRB""U^*#   '11111rcdddii}|digg|tj}|d|dS)Ncontainsr%rprrz4None of [2, {}, []] are valid under the given schemar&rs r test_containsz)TestValidationErrorMessages.test_containssd"~.""R[*#   B      rcTtd}|ddddi}|d||}|t d||t d||d|dS) Nrf)formatsthingcdSNFrf)values rrXzQTestValidationErrorMessages.test_invalid_format_default_message..+surformatbla)rrformat_checkerzis not a)r checksrr]r")r'checkerrrs r#test_invalid_format_default_messagez?TestValidationErrorMessages.test_invalid_format_default_message)s+++ x  !4!4555X&"""#   d5kk7+++ d7mmW--- j'*****rc ddddiddidd}|ddi|tj }||d t dt d t d |dd d|tj }||dt dt dt d t d dS)NrsFrirt)^abc$^def$)rirpatternPropertieszebra{rz,{} does not match any of the regexes: {}, {}r9r:i)r<fishz.{}, {} do not match any of the regexes: {}, {}r>)rr Draft4Validatorr!r2r"rs r1test_additionalProperties_false_patternPropertieszMTestValidationErrorMessages.test_additionalProperties_false_patternProperties8s.$+0!() 4!() 4)) ""_*#     : A AXXX     "" #c22*#     < C CW tH~~tH~~tH~~       rcv|ddtj}|d|dS)NrBFrz'False schema does not allow 'something')rr rr]rs rtest_False_schemaz-TestValidationErrorMessages.test_False_schemaVsE"" *#   ?IIIIIrN)rHrrrrrrrrrrr rrrrrr#r(r+r7r@rBrfrrrrsf### EEEEEEEEE EEE EEE EEEHHHMMMMMMMMM555<<<FFF 3 3 3222     + + +   <JJJJJrrcbeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdS)TestValidationErrorDetailscL d}dddiddigi}tj|}t||}|t |d|d}||jd||j|d||j|||j || |j ||j tg||jtg||jtg||jtdg||jtdg||jtdg|t |jd t)|j\}}||jd||j|ddd||j|||j |dd||j |||j tg||jtg||jtg||jtddg||jtddg||jtgd ||j||jd||j|ddd||j|||j |dd||j |||j tg||jtg||jtg||jtddg||jtddg||jtgd |t |jddS) NanyOfrrirtr9rr)rGrr)rGr9ri)r r?r;r:r!r<rr7rr assertIsNoneparentpathr relative_path absolute_pathr8relative_schema_pathabsolute_schema_pathcontext sorted_errorsassertIsrr'rrrr>re1e2s r test_anyOfz%TestValidationErrorDetails.test_anyOfbs B" .v66 i++H5566 Va((( 1I g... *F7O<<< X... 6*** !(### r+++ %))444 %))444 wi(8(8999 /y1A1ABBB /y1A1ABBB QY+++qy))B y111 +VG_Q-? -JKKK h/// F7OA$6777 bi### %)),,, )599555 )599555 9~)>)>??? 0%I2G2GHHH   #U+B+B+B%C%C    $$$ v... +VG_Q-?-GHHH h/// F7OA$6777 bi### %)),,, )599555 )599555 6{););<<< 0%F 2D2DEEE 0%8L8L8L2M2MNNN RZ!,,,,,rc ddi}dddiddddgiidgi}tj|}t||}|t |d|d }||jd||j|d||j|||j || |j ||j tg||jtg||jtg||jtdg||jtdg||jtdg|t |jdt)|j\}}||jd||j|dd d||j|||j |dd ||j |||j tg||jtg||jtg||jtd dg||jtd dg||jtgd ||j||jd||jdg||jd||j ddgi||j |||j tdg||jtdg||jtdg||jtgd ||jtgd ||jtgd ||jdS) Nr0r9rirorsrrrirr)rirri)r9rr0r)rir9rr0r)r rr;r:r!r<rr7rrrIrJrKrrLrMr8rNrOrPrQrRrrSs r test_typez$TestValidationErrorDetails.test_types1: #$#(6A3-"8 .v66 i++H5566 Va((( 1I f--- *F6N;;; X... 6*** !(### r+++ %))444 %))444 vh888 /xAAA /xAAA QY+++qy))B v... +VF^A->v-FGGG h/// F6N1$5666 bi### %)),,, )599555 )599555 6{););<<< 0%F 2D2DEEE 0%8K8K8K2L2LMMM $$$ v... +aS111 a((( WqcN333 bi### %..111 )5%>>::: )5%>>:::  NE"B"B"BCC      #U+K+K+K%L%L      # ::: ; ;   $$$$$rcbddgddd}dddid did gd d d i}tj|}||}t|\}}}}||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||jt dg||j d ||j d||j d||j ddS)Nrr9rrrrrirtrrrrrrrr0rr) r rr:rQr!rKrrLrMr) r'rrrr>rTrUe3e4s rtest_single_nestingz.TestValidationErrorDetails.test_single_nestingsoaSVDD )"A#%|||<< .v66 &&x00&v..BB %..111 %..111 %..111 %..111 )5%>>::: )5%>>::: )5%>>::: )5%>>::: )5%>>::: )5%>>::: )5%>>::: )5%>>::: z222 v... y111 v.....rcddddgiddg}dddgddd gid d d id diddddd}tj|}||}t|\}}}}} } ||jt g||jt dg||jt ddg||jt gd|| jt gd|| jt ddg||jt dg||jt ddg|t|jgd|t|jgd|t| jgd|t| jgd||j d||j d||j d||j d || j d || j ddS)Nr9rr)r0rrrtrsrrrmrequiredTr)rrrX)rirrr)r9rr)r9rrr0rir)rrrri)rrrrrr_)rrrrrr)rrr0r) r rr:rQr!rKrr8r;r) r'rrrr>rTrUr[r\e5e6s rtest_multiple_nestingz0TestValidationErrorDetails.test_multiple_nestings'q%!66?!8,"QF+ '$.#5$.?''      ".v66 &&x00!.v!6!6BBB %)),,, %**--- %E "3"3444 %(9(9(9":":;;; %(9(9(9":":;;; %E "3"3444 x999 /@)A)ABBB   "H"H"H      K K K      K K K      "H"H"H    v... v... v... z222 z222 v.....rc dddddgddiddd d iid d d giiddgdd d iid}dddddddiid id i}tj|}||\}||jt dg||jt gd|j\}||jt gd||jt gd|j\}||jt gd||jt gddS)NnoderGrsrchildrenrirt^.*$$refz#/definitions/node)rir;)rre)rir_rroot) definitionsrir_rrab)rrhrG)rhrer) rrhrGrrrer;rfrG)rhrerrerj)rrhrGrrrer;rfrGrrrer;rfrG)r r?r:r!rMrrOrP)r'rrrrrTrUs rtest_recursivez)TestValidationErrorDetails.test_recursiveFs/ (%+Z$8!'%)1$*(.0D-&6")) ' '*!F,@#AB1  8  # &#%     .v66  " "8 , , %//:::  "E*I*I*I$J$J   i )51J1J1J+K+KLLL   #U    & &   j   e;;;     #U&&     rcddd}ddddi}tj|}||}t|\}}||jt dg||jt dg||jd ||jd dS) NrrrrrorFrirr0rirr rr:rQr!rKrrr'rrrr>rTrUs rtest_additionalPropertiesz4TestValidationErrorDetails.test_additionalPropertiess ++(9*K*KL.v66 &&x00v&&B %..111 %..111 v... y11111rcddd}dddiddidi}tj|}||}t|\}}||jt d g||jt d g||jd||jddS) Nr9rrr;rirtrrFrr0rnros rtest_patternPropertiesz1TestValidationErrorDetails.test_patternPropertiessQ'' )!1~"" .v66 &&x00v&&B %..111 %..111 v... y11111rcddg}gdddd}tj|}||}t|\}}||jt dg||jt dg||jd||jd dS) Nr0r9rorFrmrrrirrnros rtest_additionalItemsz/TestValidationErrorDetails.test_additionalItemss1:(1a@@   .v66 &&x00v&&B %**--- %**--- v... y11111rcgd}igdddd}tj|}||}t|\}}||jt dg||jt dg||jd||jd dS) N)r0rr9rorFrmrr9rrirrnros rtest_additionalItems_with_itemsz:TestValidationErrorDetails.test_additionalItems_with_itemss$$$T(1a@@   .v66 &&x00v&&B %**--- %**--- v... y11111rcddi}ddddiii}tj|}||\}||jd||jddidd||jtg||jtddgdS)Nr0rp propertyNamesnotr%z is not allowed for r rr:r!rrrKrr8)r'rrrerrors rtest_propertyNamesz-TestValidationErrorDetails.test_propertyNamess2;!EGU+;#<=.v66 &&x00 %000  M+2E*:*:*:EE B    U2YY/// *E?E2J,K,KLLLLLrc~ddiddid}tj|}|d\}||jd||jd||jtg||jtgddS)Nr%rp )ifthen13 was expected)rrr%rzr'rrr{s r test_if_thenz'TestValidationErrorDetails.test_if_thenB-bM   .v66 &&r** '222 (9::: U2YY/// *E2I2I2I,J,JKKKKKrc~ddiddid}tj|}|d\}||jd||jd||jtg||jtgddS)Nr%rpr~)relserr)rrr%rzrs r test_if_elsez'TestValidationErrorDetails.test_if_elserrc tjd}|d\}||j|j|j|j|j|j fdddddtgfdS)NFrpzFalse schema does not allow 12) r rr:r!rrr7rrr8r)r'rr{s rtest_boolean_schema_Falsez4TestValidationErrorDetails.test_boolean_schema_Falses.u55 &&r**  % !  1b       rc rddddii}}tjd|itjdi||i}|d d i\}||j|j|j|j|j |j |j fd ddd td gdditddgfdS) NsomeRefrrirorgrSstoreresolverr0 notAnIntegerz''notAnInteger' is not of type 'integer') r r RefResolverr:r!rrr7rrMrr8r)r'refrrr{s rtest_refz#TestValidationErrorDetails.test_ref-s"869:M!NV. SM+B3-HHH   &&~'>??  %# ! :ug#-v677      rN)rHrrrVrYr]rbrkrprrrtrvr|rrrrrfrrrDrD_s@-@-@-DH%H%H%T / / /D4/4/4/l` ` ` D 2 2 2222&222"222" M M M L L L L L L   .     rrDc&eZdZdZdZdZdZdS)MetaSchemaTestsMixinc|tj5|jddt iiddddS#1swxYwYdS)Nrtest)rr SchemaErrorr% check_schemarsr&s rtest_invalid_propertiesz,MetaSchemaTestsMixin.test_invalid_propertiesMs   z5 6 6 L L N ' '7I(J K K K L L L L L L L L L L L L L L L L L Ls+AAAc|tj5|jddiddddS#1swxYwYdS)Nr1)rr rr%rr&s rtest_minItems_invalid_stringz1MetaSchemaTestsMixin.test_minItems_invalid_stringQs   z5 6 6 ; ; N ' 'S(9 : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sA  AAc>|jdgidS)z Technically, all the spec says is they SHOULD have elements, not MUST. See https://github.com/Julian/jsonschema/issues/529. rNr%rr&s rtest_enum_allows_empty_arraysz2MetaSchemaTestsMixin.test_enum_allows_empty_arraysVs$ ##VRL11111rcB|jdddgidS)z Technically, all the spec says is they SHOULD be unique, not MUST. See https://github.com/Julian/jsonschema/issues/529. rrpNrr&s r!test_enum_allows_non_unique_itemsz6MetaSchemaTestsMixin.test_enum_allows_non_unique_items^s) ##Vb"X$677777rN)rHrrrrrrrfrrrrKsSLLL;;; 22288888rrceZdZdZdZdZdZdZdZdZ dZ d Z e j ed d Zd Zd ZdZdZdZdZdZdS)ValidatorTestMixinc|j\}}||||dSr*)validrur%rr'rrs rtest_valid_instances_are_validz1ValidatorTestMixin.test_valid_instances_are_validhs@: v..77AABBBBBrc|j\}}||||dSr*)invalidrr%rrs r$test_invalid_instances_are_not_validz7ValidatorTestMixin.test_invalid_instances_are_not_validlsB< //88BBCCCCCrc|ttitdS)Nr)r%rsrr&s r(test_non_existent_properties_are_ignoredz;ValidatorTestMixin.test_non_existent_properties_are_ignoredps< &((+,,55vxx5HHHHHrcv||ijtjdSr*)assertIsInstancer%rr rr&s r.test_it_creates_a_ref_resolver_if_not_providedzAValidatorTestMixin.test_it_creates_a_ref_resolver_if_not_providedss<  NN2   '  "     rcdddi}}tjdi||i}|d|i|}|tj5|dddddS#1swxYwYdS)N someCoolRefrirorSrrgr)r rr%rr rr)r'rrrrs r#test_it_delegates_to_a_ref_resolverz6ValidatorTestMixin.test_it_delegates_to_a_ref_resolverys#fi%8V)"bf FFFNNFC=8NDD   z9 : : % %   t $ $ $ % % % % % % % % % % % % % % % % % %sA;;A?A?cGfddt}|}ddi}tj5||dddddS#1swxYwYdS)zb Legacy RefResolvers support only the context manager form of resolution. c*eZdZefdZdS)XValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver..LegacyRefResolverc3DK|dddiVdS)Nthe refriror!)thisrr's r resolvingzbValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver..LegacyRefResolver.resolvings4  i000y))))))rN)rHrrrrr&srLegacyRefResolverrs8  * * * *^ * * *rrrgrrN)rsrr rr%r)r'rrrs` r*test_it_delegates_to_a_legacy_ref_resolverz=ValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolvers  * * * * * * * * * * %$&&)$   z9 : : E E NN6HN 5 5 > >t D D D E E E E E E E E E E E E E E E E E Es+A<<BBc~||idddS)Nr0rt)rur%rjr&s r#test_is_type_is_true_for_valid_typez6ValidatorTestMixin.test_is_type_is_true_for_valid_types6 r**225(CCDDDDDrc~||idddS)Nr0rmrr%rjr&s r&test_is_type_is_false_for_invalid_typez9ValidatorTestMixin.test_is_type_is_false_for_invalid_types8 ++33E7CCDDDDDrc||idd||idddS)NTrorrrr&s r,test_is_type_evades_bool_inheriting_from_intz?ValidatorTestMixin.test_is_type_evades_bool_inheriting_from_intsh ++33D)DDEEE ++33D(CCDDDDDrz-In Python 3 json.load always produces unicodecZ|ddiddS)Nrirtsfoor%rr&s r$test_string_a_bytestring_is_a_stringz7ValidatorTestMixin.test_string_a_bytestring_is_a_strings- )**33F;;;;;rcZ|ddiddS)zF See https://github.com/Julian/jsonschema/issues/611. patternr0Nrr&s r#test_patterns_can_be_native_stringsz6ValidatorTestMixin.test_patterns_can_be_native_stringss/  5)**33E:::::rczdddii}tj|j|jjdd}||}|ddt dt dz gd igd dg}|d ||D|dS) Nrrirrcrt|tttfot|t Sr*) isinstancerfloatrboolr6r.s rrXzGValidatorTestMixin.test_it_can_validate_with_decimals..s4zC0(((2$UD111rrr9g?rr0Tcg|] }|j Srfr)rkr{s r zIValidatorTestMixin.test_it_can_validate_with_decimals..s H H HU^ H H Hr) r r|r%r-redefinerrr!r:)r'rr%rrs r"test_it_can_validate_with_decimalsz5ValidatorTestMixin.test_it_can_validate_with_decimalssFH-.% N4==22   If%% AsGAJJ$;<==="b$-  H H)>)>w)G)G H H H      rcz|ddit}|ddS)Nr2carrotr4bugs)r%r rr'rs r7test_it_returns_true_for_formats_it_does_not_know_aboutzJValidatorTestMixin.test_it_returns_true_for_formats_it_does_not_know_aboutsDNN x #   6"""""rcd|i}||jdSr*)r%rIr4rs r,test_it_does_not_validate_formats_by_defaultz?ValidatorTestMixin.test_it_does_not_validate_formats_by_defaults0NN2&&  )233333rct}td|dtfd}ddi|}|dt j5}|ddddn #1swxYwY|j j dS) NzBad!r0)raisescx|dkrdS|dkrd|dS)NgoodTbadz What is {}? [Baby Don't Hurt Me])failr2)r1rr's rcheckzTValidatorTestMixin.test_it_validates_formats_if_a_checker_is_provided..checksFt%  <CCEJJKKKKKrr2rrr) r ValueErrorr5r%rrr rrRrcause)r'r6rrcmrs` @r2test_it_validates_formats_if_a_checker_is_providedzEValidatorTestMixin.test_it_validates_formats_if_a_checker_is_provideds1//   j 1 1 L L L L L 2 1 LNN u g#   6"""   z9 : : &b   u % % % & & & & & & & & & & & & & & & bl(#.....sB77B;>B;ct}d|gi}tj|j|jj|d}||ddS)Nric,t|tSr*rrrs rrXz@ValidatorTestMixin.test_non_string_custom_type..sz%'='=rrr)rsr r|r%r-rr)r'non_string_typerCrazys rtest_non_string_custom_typez.ValidatorTestMixin.test_non_string_custom_typesy ((?+,! N4====    f r"""""rcxtj|j|jjdd}|t j5}|ddiddddn #1swxYwY| dt|j dS) z A tuple instance properly formats validation errors for uniqueItems. See https://github.com/Julian/jsonschema/pull/224 rmc,t|tSr*)rtuplers rrXzNValidatorTestMixin.test_it_properly_formats_tuples_in_errors..sz%'?'?rr uniqueItemsT)r9r9Nz(1, 1) has non-unique elements) r r|r%r-rrr rrr]rr)r'TupleValidatorrs r)test_it_properly_formats_tuples_in_errorsz>>>>AA A c|tj5}|jddddn #1swxYwY|dt |jdS)NFzFalse is not of typerrs rtest_False_is_not_a_schemaz.AntiDraft6LeakMixin.test_False_is_not_a_schemas   z5 6 6 /! N ' ' . . . / / / / / / / / / / / / / / / ,c!+.>.>?????ri c2tjdi}|t5}|d|ddddn #1swxYwY||jtj dS)NrSTrrp r rr Exceptionr%rassertNotIsInstancerr rr'rrs r5test_True_is_not_a_schema_even_if_you_forget_to_checkzIAntiDraft6LeakMixin.test_True_is_not_a_schema_even_if_you_forget_to_check s)"b11   y ) ) AQ NN4(N 3 3 < .*sj.D.Drrrirpr0N) r r|r%r-rrrr r)r'rrs rtest_any_type_is_redefinablez0TestDraft3Validator.test_any_type_is_redefinable#s! N4==DD    E65/** 2   z9 : : & &   u % % % & & & & & & & & & & & & & & & & & &s<BB#&B#c||itddidSr)rur%rrsr&s r!test_is_type_is_true_for_any_typez5TestDraft3Validator.test_is_type_is_true_for_any_type2s> r**33FHHvuoNNOOOOOrc||idd||idddidS)NTrnrir)rur%rjrr&s r6test_is_type_does_not_evade_bool_if_it_is_being_testedzJTestDraft3Validator.test_is_type_does_not_evade_bool_if_it_is_being_tested5sh r**224CCDDD r**33D65/JJKKKKKrN) rHrrr rr%rrrrrrrfrrr r sx*I FEy!5(G%%% & & &PPPLLLLLrr c0eZdZejZiifZddidfZdS)TestDraft4Validatorriror0N)rHrrr r?r%rrrfrrrr:.*I FEy!5(GGGrrc0eZdZejZiifZddidfZdS)TestDraft6Validatorriror0N)rHrrr r'r%rrrfrrrr@rrrc0eZdZejZiifZddidfZdS)TestDraft7Validatorriror0N)rHrrr rr%rrrfrrrrFrrrcVeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)TestValidatorForcddi}|tj|tjddi}|tj|tjdS)N$schema&http://json-schema.org/draft-03/schema'http://json-schema.org/draft-03/schema#)rRr validator_forrr1s r test_draft_3zTestValidatorFor.test_draft_3MxEF  $V , ,  &   FG  $V , ,  &     rcddi}|tj|tjddi}|tj|tjdS)Nr"&http://json-schema.org/draft-04/schema'http://json-schema.org/draft-04/schema#)rRr r%r?r1s r test_draft_4zTestValidatorFor.test_draft_4Zr'rcddi}|tj|tjddi}|tj|tjdS)Nr"&http://json-schema.org/draft-06/schema'http://json-schema.org/draft-06/schema#)rRr r%r'r1s r test_draft_6zTestValidatorFor.test_draft_6gr'rcddi}|tj|tjddi}|tj|tjdS)Nr"&http://json-schema.org/draft-07/schema'http://json-schema.org/draft-07/schema#)rRr r%rr1s r test_draft_7zTestValidatorFor.test_draft_7tr'rcj|tjdtjdS)NTrRr r%_LATEST_VERSIONr&s r test_TruezTestValidatorFor.test_Trues6  $T * *  &     rcj|tjdtjdSr0r5r&s r test_FalsezTestValidatorFor.test_Falses6  $U + +  &     rctjddidd}ddi}|tj||dS)NrLrP12c.|ddSrRrTrVs rrXz8TestValidatorFor.test_custom_validator..rYrrZr"r r$rRr%r'r%rs rtest_custom_validatorz&TestValidatorFor.test_custom_validatorsi%/0++   -.  $V , ,      rctjddid}ddi}|tj||dS)Nrrc13rDr"r=r>s rtest_custom_validator_draft6z-TestValidatorFor.test_custom_validator_draft6sc% 12   ./  $V , ,      rcj|tjitjdSr*r5r&s r%test_validator_for_jsonschema_defaultz6TestValidatorFor.test_validator_for_jsonschema_defaults* j.r22J4NOOOOOrcZ|tjidddS)N)default)rRr r%r&s r!test_validator_for_custom_defaultz2TestValidatorFor.test_validator_for_custom_defaults, j.r4@@@$GGGGGrc|tdtj|jjjt jddiidS)NzThe metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future.r" unknownSchema)rrrrrrF)rrrrrrr r%r&s r1test_warns_if_meta_schema_specified_was_not_foundzBTestValidatorFor.test_warns_if_meta_schema_specified_was_not_foundsW '* [!1!<=F&0  rctjiif||dS)N)rrF)r r%rrr&s r0test_does_not_warn_if_meta_schema_is_unspecifiedzATestValidatorFor.test_does_not_warn_if_meta_schema_is_unspecifiedsA B77788 ++--.....rN)rHrrr&r+r/r3r7r9r?rBrDrGrJrLrfrrr r Ls                             PPPHHH   /////rr cDeZdZdZdZdZdZdZdZdZ dZ d Z d S) TestValidatecg}||d|jtji||||gdS)Nr)patchappendr rr!)r'rr%results r assertUseszTestValidate.assertUsessP 9nfm<<<B''' &*****rc|dditj|dditjdS)Nr"r$rr%r#)rSr rr&s rtest_draft3_validator_is_chosenz,TestValidate.test_draft3_validator_is_chosenb HI 0    GH 0      rc|dditj|dditjdS)Nr"r*rUr))rSr r?r&s rtest_draft4_validator_is_chosenz,TestValidate.test_draft4_validator_is_chosenrWrc|dditj|dditjdS)Nr"r.rUr-)rSr r'r&s rtest_draft6_validator_is_chosenz,TestValidate.test_draft6_validator_is_chosenrWrc|dditj|dditjdS)Nr"r2rUr1rSr rr&s rtest_draft7_validator_is_chosenz,TestValidate.test_draft7_validator_is_chosenrWrcH|itjdS)NrUr]r&s r$test_draft7_validator_is_the_defaultz1TestValidate.test_draft7_validator_is_the_defaults! rZ-GHHHHHrc|tj5}tjdddidddn #1swxYwY|t |jddS)Nrprirtz3(?s)Failed validating u?'.*' in schema.*On instance)rr rr rassertRegexpMatchesrrrs rtest_validation_error_messagez*TestValidate.test_validation_error_messages   z9 : : 8a  VX$6 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8      A     AA Ac|tj5}tjdddidddn #1swxYwY|t |jddS)Nrpriz5(?s)Failed validating u?'.*' in metaschema.*On schema)rr rr rrbrrrs rtest_schema_error_messagez&TestValidate.test_schema_error_messages   z5 6 6 2!  VRL 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2      C     rdcdddiddigi}|tj5}tjd|dddn #1swxYwY|dt |jdS)NoneOfrirtrmrpz12 is not of type)rr rr rr]rr)r'rrs rtest_it_uses_best_matchz$TestValidate.test_it_uses_best_matchsVX.0ABC   z9 : : ,a  F + + + , , , , , , , , , , , , , , , )3q{+;+;<<<<.sDII.L$M$Mr)r rr,rPrrr!r'rresolveds` r6test_it_does_not_retrieve_schema_urls_from_the_networkzFTestRefResolver.test_it_does_not_retrieve_schema_urls_from_the_networks(4T: M  M M M M   ] $ $S ) ) X                 :#=#IJJJJJsA  A$'A$cd}dti|jd<|j|5}|||jddddddS#1swxYwYdS)Nz#/properties/foor0r)rsrnrrr!rus rtest_it_resolves_local_refsz+TestRefResolver.test_it_resolves_local_refs%s ',fhh&7 l# ] $ $S ) ) KX   Xt}\'B5'I J J J K K K K K K K K K K K K K K K K K Ks(A**A.1A.c~dddid}tj|d}|d5}|||ddddn #1swxYwY|d 5}|||dddddS#1swxYwYdS) Nzhttp://bar/schema#r0r)rLrc.|ddSrRrTrs rrXzETestRefResolver.test_it_resolves_local_refs_with_id../E3!7!7rr[z#/arzhttp://bar/schema#/a)r r from_schemarr!r'rrrvs r#test_it_resolves_local_refs_with_idz3TestRefResolver.test_it_resolves_local_refs_with_id+sK,E5>BB)55 776     & & 4(   Xvc{ 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4    6 7 7 48   Xvc{ 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s#A((A,/A,B22B69B6c^|j|j5}|||jdddn #1swxYwYddi|jjd<|jd5}||dddddS#1swxYwYdS)Nr0rp cached_refzcached_ref#/foo)rrrorRrprr!)r'rvs rtest_it_retrieves_stored_refsz-TestRefResolver.test_it_retrieves_stored_refs6s& ] $ $T_ 5 5 8 MM(D$6 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8.3BK L) ] $ $%6 7 7 +8   Xr * * * + + + + + + + + + + + + + + + + + +s#AA A >B""B&)B&chd}ddi}dtjvr6|tjjdtjdt d|itjd<|j|5}||dddddS#1swxYwYdS)Nhttp://bar#bazrrprequests http://bar)rrr __setitem__ReallyFakeRequestsrrr!)r'rrrvs r,test_it_retrieves_unstored_refs_via_requestszs  $ $ OO 'S[5L   #5lF5K"L"L J ] $ $S ) ) +X   Xr * * * + + + + + + + + + + + + + + + + + +sB''B+.B+cd}ddidtjvr6tjjdtjddtjd<tfd}t t dt j|t _j |5} dddn #1swxYwY |ddS)Nrrrprc3K|dttjdVdS)Nrutf8)r!rjsondumpsencode)urlrr's r fake_urlopenzQTestRefResolver.test_it_retrieves_unstored_refs_via_urlopen..fake_urlopenUsO   S, / / /$*V,,33F;;<< < < < < > ] $ $S ) ) .X   Xu - - - . . . . . . . . . . . . . . . . . .s#=A  A$'A$,CCCcddi}tj|d}||jd||jd|d5}|||dddn #1swxYwY|d5}|||dddn #1swxYwY|d5}|||dddn #1swxYwY|d5}|||ddddS#1swxYwYdS)NrLr0c.|ddSrRrTr|s rrXzPTestRefResolver.test_it_can_construct_a_base_uri_from_a_schema..nr}rr~rS#zfoo#r rrr!rqresolution_scoperrs r.test_it_can_construct_a_base_uri_from_a_schemaz>TestRefResolver.test_it_can_construct_a_base_uri_from_a_schemajsd)55 776   *E222 2E:::    # # /x   Xv . . . / / / / / / / / / / / / / / /    $ $ /   Xv . . . / / / / / / / / / / / / / / /    & & /(   Xv . . . / / / / / / / / / / / / / / /    ' ' /8   Xv . . . / / / / / / / / / / / / / / / / / /sH2BBB5CCC8DD"D;EE#&E#ci}tj|}||jd||jd|d5}|||dddn #1swxYwY|d5}|||ddddS#1swxYwYdS)NrSrrrs r9test_it_can_construct_a_base_uri_from_a_schema_without_idzITestRefResolver.test_it_can_construct_a_base_uri_from_a_schema_without_id{sV)55f== *B/// 2B777    # # /x   Xv . . . / / / / / / / / / / / / / / /    $ $ /   Xv . . . / / / / / / / / / / / / / / / / / /s$-BBB0CCCcfd}ddidtjdid|i}|5}|ddddS#1swxYwYdS)Nc4|Sr*r)rrrr's rhandlerz@TestRefResolver.test_custom_uri_scheme_handlers..handlers   S# & & &Mrr0r foo://barrShandlers)r rrr!)r'rrrvrrs` @@rtest_custom_uri_scheme_handlersz/TestRefResolver.test_custom_uri_scheme_handlerss       )"bE7;KLLL    $ $ /   Xv . . . / / / / / / / / / / / / / / / / / /sA##A'*A'c&tgfd}d}tjdidd|i}||5 dddn #1swxYwY||5 ddddS#1swxYwYdS)Ncz S#t$rdYdSwxYw)Nz#Response must not have been cached!rG IndexErrorrrresponser's rrz5TestRefResolver.test_cache_remote_on..handlersR A||~~% A A A ?@@@@@@ A ::rrSTr0 cache_remoterrsr rrr'rrrrs` @rtest_cache_remote_onz$TestRefResolver.test_cache_remote_onsHHH: A A A A A A ) 0@      $ $                      $ $                     s$ AAA7BB  B ctgfd}d}tjdidd|i}||5 ddddS#1swxYwYdS)Ncz S#t$rdYdSwxYw)NzHandler called twice!rrs rrz6TestRefResolver.test_cache_remote_off..handlersM 3||~~% 3 3 3 1222222 3rrrSFr0rrrs` @rtest_cache_remote_offz%TestRefResolver.test_cache_remote_offsHH: 3 3 3 3 3 3 ) %1A      $ $                     s AAActdfd}d}tjdid|i}|tj5}||5|ddddn #1swxYwYdddn #1swxYwY||j t jdS)NzOh no! What's this?cr*rf)rr{s rrzTTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_error..handlersKrrrSr0rzShouldn't get this far!) rr rrr RefResolutionErrorrrr!r)r'rrrerrr{s @r3test_if_you_give_it_junk_you_get_a_resolution_errorzCTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_errors]011     )"bE7;KLLL   z< = = 5##C(( 5 5 3444 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5  (Ee(L(LMMMMMs6B&B< BB BB BB#&B#c>tjdi}||tj5}|dddn #1swxYwY|dt|jdS)NrSzFailed to pop the scope) r r pop_scoperr rr]rr)r'rexcs r.test_helpful_error_message_on_failed_pop_scopez>TestRefResolver.test_helpful_error_message_on_failed_pop_scopes)"b11   z< = = !     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! /S]1C1CDDDDDs A**A.1A.N)rHrrrqrorpr(rwryrrrrrrrrrrrrrfrrrkrk sHJx(M    K K KKKK 4 4 4+++ + + +''',...///"/// / / /$ N N NEEEEErrkc*d}t||S)NcFd|jDd|jDfS)Nc,g|]}t|Srfrrs rrz.sorted_errors..key..s ( ( (SVV ( ( (rc,g|]}t|Srfrrs rrz.sorted_errors..key..s / / /SVV / / /r)rKr8)r{s rkeyzsorted_errors..keys3 ( (UZ ( ( ( / /U. / / /  r)r)r)r>rs rrQrQs&   &c " " ""rc2eZdZejZdZdS)rc|j|}|tdt|zt t j|S)Nz Unknown URL: ) _responsesrUrr"_ReallyFakeJSONResponserr)r'rrs rrUzReallyFakeRequests.getsM?&&s++ ;_tCyy899 9&tz(';';<<rs%%%%%% 666666 IIIIIIIIIIII////////))))))555 WIWIWIWIWI-WIWIWItY Y Y Y Y 0Y Y Y x)))))X)))DkJkJkJkJkJ(kJkJkJ\i i i i i i i i X8888868888RJRJRJRJRJ-vRJRJRJjJJJJJ&JJJ<LLLLL-/A8LLL@)))))-/A8))) ))))),h))) ))))),h))) p/p/p/p/p/*p/p/p/fK=K=K=K=K=&K=K=K=\wEwEwEwEwE)wEwEwEt###========*****f*****r