package Ġcom . world pay . access . checkout . api . serialization Ċ Ċ import Ġcom . world pay . access . checkout . client . api . exception . Access Checkout Exception Ċ import Ġcom . world pay . access . checkout . client . api . exception . Validation Rule Ċ import Ġkotlin . test . assert Fails With Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ class ĠClient Error Deserializer Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient Error Deserializer Ġ= ĠClient Error Deserializer () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Empty Response Then Should Throw Deserialization Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġassert Fails With < Access Checkout Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Error Deserializer . deserialize ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" Cannot Ġdeserialize Ġempty Ġstring ", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Bad Json String Then Should Throw Deserialization Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ" abc " ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġassert Fails With < Access Checkout Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Error Deserializer . deserialize ( json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" Cannot Ġinterpret Ġjson : Ġ$ json ", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Json String With Missing Object Then Should Throw Deserialization Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ"{ Ġ}" ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġassert Fails With < Access Checkout Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Error Deserializer . deserialize ( json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" Missing Ġproperty : Ġ' error Name '", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Json String With Missing Property Then Should Throw Deserialization Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" method Not Allowed " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġassert Fails With < Access Checkout Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Error Deserializer . deserialize ( json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" Missing Ġproperty : Ġ' message '", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Json String With Invalid StringType Then Should Throw Deserialization Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ 2 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Requested Ġmethod Ġis Ġnot Ġallowed " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġassert Fails With < Access Checkout Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Error Deserializer . deserialize ( json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" Invalid Ġproperty Ġtype : Ġ' error Name ', Ġexpected Ġ' String '", Ġexception . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Valid Method Not Allowed Error Json Then Should Successfully Deserialize To Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" method Not Allowed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Requested Ġmethod Ġis Ġnot Ġallowed " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Response Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Error Object Ġ= ĠAccess Checkout Exception (" method Not Allowed Ġ: ĠRequest ed Ġmethod Ġis Ġnot Ġallowed ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Error Object , Ġdeserialized Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Valid Body Schema Error Json With Multiple Broken Rules Then Should Successfully Deserialize To Exception With Complete Validation Rules List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" integer Is Too Large ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Card Ġexpiry Ġyear Ġmust Ġbe Ġless Ġthan Ġ 9 9 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. card Expiry Date . year " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" field Has Invalid Value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Card Ġnumber Ġmust Ġbe Ġnumeric ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" string Is Too Short ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Card Ġnumber Ġis Ġtoo Ġshort Ġ- Ġmust Ġbe Ġbetween Ġ 1 0 Ġ& Ġ 1 9 Ġdigits ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" field Has Invalid Value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Identity Ġis Ġinvalid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. identity " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Validation Rule List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Is Too Large ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Card Ġexpiry Ġyear Ġmust Ġbe Ġless Ġthan Ġ 9 9 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $. card Expiry Date . year " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" field Has Invalid Value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Card Ġnumber Ġmust Ġbe Ġnumeric ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" string Is Too Short ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Card Ġnumber Ġis Ġtoo Ġshort Ġ- Ġmust Ġbe Ġbetween Ġ 1 0 Ġ& Ġ 1 9 Ġdigits ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule (" field Has Invalid Value ", Ġ" Identity Ġis Ġinvalid ", Ġ"\ $. identity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Error Object Ġ= ĠAccess Checkout Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Rules Ġ= Ġexpected Validation Rule List ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Error Object , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Valid Body Not Json Error Json Then Should Successfully Deserialize To Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body IsNot Json ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġbody Ġwithin Ġthe Ġrequest Ġis Ġnot Ġvalid Ġjson " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Error Object Ġ= ĠAccess Checkout Exception (" body IsNot Json Ġ: ĠThe Ġbody Ġwithin Ġthe Ġrequest Ġis Ġnot Ġvalid Ġjson ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Error Object , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Valid Body Schema Error With Lu hn Invalid Card Error Then Should Successfully Deserialize To Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" pan Failed Lu hn Check ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġidentified Ġfield Ġcontains Ġa ĠPAN Ġthat Ġhas Ġfailed Ġthe ĠLu hn Ġcheck .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Checkout Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Rules Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pan Failed Lu hn Check ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġidentified Ġfield Ġcontains Ġa ĠPAN Ġthat Ġhas Ġfailed Ġthe ĠLu hn Ġcheck .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $. card Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Valid Body Schema Error With Unknown FieldError Then Should Successfully Deserialize To Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa ": Ġ" bbb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" unrecognized Field ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Field Ġis Ġnot Ġrecognized ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. aaa " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Checkout Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Rules Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unrecognized Field ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Field Ġis Ġnot Ġrecognized ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $. aaa " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Empty Body ErrorResponse Then Should Successfully Deserialize Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body IsEmpty ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġbody Ġwithin Ġthe Ġrequest Ġis Ġempty " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĠAccess Checkout Exception (" body IsEmpty Ġ: ĠThe Ġbody Ġwithin Ġthe Ġrequest Ġis Ġempty ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Un document ed ErrorResponse Then Should Successfully Deserialize Unknown Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" this Ġis Ġan Ġund ocument ed Ġerror ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" this Ġerror Ġshould Ġbe Ġdocumented " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĠAccess Checkout Exception (" this Ġis Ġan Ġund ocument ed Ġerror Ġ: Ġthis Ġerror Ġshould Ġbe Ġdocumented ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Mal form ated Error With UnknownFields _ when Deserial izing _ should Throw Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa ": Ġ" bbb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" xxxx x ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" yyyy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. aaa " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĠAccess Checkout Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Rules Ġ= ĠlistOf ( Validation Rule (" xxxx x ", Ġ" yyyy ", Ġ"${ '$ ' }. aaa ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġerror ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Empty Validation Rules _ when Deserial izing _ should Throw Exception () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Error Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĠAccess Checkout Exception (" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġdeserialized Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Invalid Validation Rules _ when Deserial izing _ should Throw Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" body DoesNot Match Schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" The Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa ": Ġ" bbb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" validation Errors ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error Name ": Ġ" xxxx x ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" yyyy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" json Path ": Ġ"${ '$ ' }. aaa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" as das d ":" aaa " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġclient Error Deserializer . deserialize ( json Response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Exception Ġ= ĠAccess Checkout Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" body DoesNot Match Schema Ġ: ĠThe Ġjson Ġbody Ġprovided Ġdoes Ġnot Ġmatch Ġthe Ġexpected Ġschema ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Rules Ġ= ĠlistOf ( Validation Rule (" xxxx x ", Ġ" yyyy ", Ġ"${ '$ ' }. aaa ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Exception , Ġerror ) ĊĠĠĠ Ġ} Ċ } Ċ