package Ġde . r ki . cor on aw arn app . dc ct icket ing . core . service . processor Ċ Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . common . D cc Ticket ing ErrorCode Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . common . D cc Ticket ing Exception Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . transaction . D cc J WK Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . transaction . D cc Ticket ing Service Identity Document Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . transaction . D cc Ticket ing Verification Method Ċ import Ġio . kot est . assertions . throw ables . should Not Throw Any Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġtest helpers . Base Test Ċ Ċ class ĠD cc Ticket ing Request Service Helpers Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġempty Service Identity Document Ġ= ĠD cc Ticket ing Service Identity Document ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" D cc Ticket ing Service Identity Document ĠTest ĠID ", ĊĠĠĠĠĠĠĠ Ġverification Method Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġ_ service Ġ= Ġempty List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġempty Verification Method Ġ= ĠD cc Ticket ing Verification Method ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" D cc Ticket ing Verification Method ĠTest Ġid ", ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" D cc Ticket ing Verification Method ĠTest Ġtype ", ĊĠĠĠĠĠĠĠ Ġcontroller Ġ= Ġ" D cc Ticket ing Verification Method ĠTest Ġcontroller ", ĊĠĠĠĠĠĠĠ ĠpublicKey J wk Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġverification Methods Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġempty J wk Ġ= ĠD cc J WK ( ĊĠĠĠĠĠĠĠ Ġx 5 c Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġkid Ġ= Ġ" D cc J WK ĠTest Ġkid ", ĊĠĠĠĠĠĠĠ Ġalg Ġ= Ġ" D cc J WK ĠTest Ġalg ", ĊĠĠĠĠĠĠĠ Ġuse Ġ= ĠD cc J WK . Purpose . SIGNATURE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠaccessToken Sign Key ID Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// test . com / test - system / identity / verification Method / Json Web Key 2 0 2 0 # AccessToken Sign Key - 1 " ĊĠĠĠ Ġprivate Ġval ĠaccessToken Service Key ID Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// test . com / test - system / identity / verification Method / Json Web Key 2 0 2 0 # AccessToken Service Key - 1 " ĊĠĠĠ Ġprivate Ġval Ġvalidation Service Key ID Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// test . com / test - system / identity / verification Method / Json Web Key 2 0 2 0 # Validation Service Key - 1 " ĊĠĠĠ Ġprivate Ġval Ġvalidation Service Sign Key ID Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// test . com / test - system / identity / verification Method / Json Web Key 2 0 2 0 # Validation Service Sign Key - 1 " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Jw ks () Ġ- Ġdocument Ġpasses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= ĠD cc Ticket ing ErrorCode . VD _ ID _ EMPTY _ X 5 C ĊĠĠĠĠĠĠĠ Ġval Ġservice Identity Document With Empty Verification Method Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( empty Verification Method ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Identity Document With Pro per J WK Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Verification Method . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey J wk Ġ= Ġempty J wk . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 5 c Ġ= ĠlistOf (" Not Ġempty Ġx 5 c ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġshould Not Throw Any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Service Identity Document . verify Jw ks ( empty X 5 c ErrorCode Ġ= ĠerrorCode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Identity Document With Empty Verification Method . verify Jw ks ( empty X 5 c ErrorCode Ġ= ĠerrorCode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Identity Document With Pro per J WK . verify Jw ks ( empty X 5 c ErrorCode Ġ= ĠerrorCode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Jw ks () Ġ- Ġdocument Ġfails `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= ĠD cc Ticket ing ErrorCode . VS _ ID _ EMPTY _ X 5 C ĊĠĠĠĠĠĠĠ Ġval Ġservice Identity Document With Bad J WK Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Verification Method . copy ( publicKey J wk Ġ= Ġempty J wk ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Identity Document With Bad J WK . verify Jw ks ( empty X 5 c ErrorCode Ġ= ĠerrorCode ) ĊĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe ĠerrorCode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` find J wk Set () Ġ- Ġdocument Ġcontains Ġrequired Ġverification Ġmethod Ġwith Ġj wk `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Sign Key Method Ġ= Ġcreate Verification Method ( accessToken Sign Key ID ) ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Service Key Method Ġ= Ġcreate Verification Method ( accessToken Service Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Key Method Ġ= Ġcreate Verification Method ( validation Service Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Sign Key Method Ġ= Ġcreate Verification Method ( validation Service Sign Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Sign Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Sign Key Method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= ĠJ wk Set Type . AccessToken Sign J wk Set ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). kid ĠshouldBe ĠaccessToken Sign Key ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= ĠJ wk Set Type . AccessToken Service J wk Set ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). kid ĠshouldBe ĠaccessToken Service Key ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= ĠJ wk Set Type . Validation Service J wk Set ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). kid ĠshouldBe Ġvalidation Service Key ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= ĠJ wk Set Type . Validation Service Sign Key J wk Set ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). kid ĠshouldBe Ġvalidation Service Sign Key ID ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` find J wk Set () Ġ- Ġdocument Ġdoesn 't Ġcontain Ġrequired Ġverification Ġmethod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Sign Key Method Ġ= Ġcreate Verification Method ("$ accessToken Sign Key ID / do Not Find Me ") ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Service Key Method Ġ= Ġcreate Verification Method ( accessToken Service Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Key Method Ġ= Ġcreate Verification Method ( validation Service Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Sign Key Method Ġ= Ġcreate Verification Method ( validation Service Sign Key ID ) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Sign Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Sign Key Method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠJ wk Set Type . AccessToken Sign J wk Set . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Service Identity Document . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` find J wk Set () Ġ- Ġdocument Ġcontains Ġrequired Ġverification Ġmethod Ġbut Ġwithout Ġj wk `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Sign Key Method Ġ= Ġcreate Verification Method ( id Ġ= ĠaccessToken Sign Key ID , Ġj wk Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Service Key Method Ġ= Ġcreate Verification Method ( id Ġ= ĠaccessToken Service Key ID , Ġj wk Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Key Method Ġ= Ġcreate Verification Method ( id Ġ= Ġvalidation Service Key ID , Ġj wk Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Service Sign Key Method Ġ= Ġcreate Verification Method ( id Ġ= Ġvalidation Service Sign Key ID , Ġj wk Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġempty Service Identity Document . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Method Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Sign Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Key Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Service Sign Key Method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠJ wk Set Type . AccessToken Sign J wk Set . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠJ wk Set Type . AccessToken Service J wk Set . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠJ wk Set Type . Validation Service J wk Set . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠJ wk Set Type . Validation Service Sign Key J wk Set . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < D cc Ticket ing Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . find J wk Set ( j wk Set Type Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. errorCode ĠshouldBe Ġit . no Matching Entry ErrorCode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Verification Method ( id : ĠString , Ġj wk : ĠD cc J WK ? Ġ= Ġempty J wk ) Ġ= Ġempty Verification Method . copy ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠ ĠpublicKey J wk Ġ= Ġj wk ?. copy ( kid Ġ= Ġid ) ĊĠĠĠ Ġ) Ċ } Ċ