package Ġcom . r 3 . cord a . sdk . token . workflow Ċ Ċ import Ġcom . r 3 . cord a . sdk . token . contracts . states . E vol vable TokenType Ċ import Ġcom . r 3 . cord a . sdk . token . workflow . factories . Test E vol vable TokenType Factory Ċ import Ġcom . r 3 . cord a . sdk . token . workflow . states . Test E vol vable TokenType Ċ import Ġnet . cord a . core . utilities . get OrThrow Ċ import Ġnet . cord a . testing . node . Started Mock Node Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails Ċ Ċ class ĠCreate E vol vable Token Tests Ġ: ĠJIT Mock Network Tests () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġalice : ĠStarted Mock Node Ġget () Ġ= Ġnode (" Alice ") ĊĠĠĠ Ġprivate Ġval Ġbob : ĠStarted Mock Node Ġget () Ġ= Ġnode (" Bob ") ĊĠĠĠ Ġprivate Ġval Ġchar lie : ĠStarted Mock Node Ġget () Ġ= Ġnode (" Char lie ") ĊĠĠĠ Ġprivate Ġval Ġden ise : ĠStarted Mock Node Ġget () Ġ= Ġnode (" Den ise ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHelper Ġfactory Ġfor Ġassemb ling Ġ[ E vol vable TokenType ] s Ġreli ably . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġfactory Ġ= ĠTest E vol vable TokenType Factory ( this , Ġ" Alice ", Ġ" Bob ", Ġ" Char lie ", Ġ" Den ise ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġjust Ġa Ġmaintainer . ĊĠĠĠĠ Ġ* ĠMaint ainers Ġis Ġequal Ġto Ġparticipants . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 1 Ġmaintainer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with One Maint ainer () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠOnly ĠAlice Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġtwo Ġmaintainers . ĠBoth Ġmust Ġsign . ĊĠĠĠĠ Ġ* ĠMaint ainers Ġis Ġequal Ġto Ġparticipants . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 2 Ġmaintainers `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with Two Maint ainers () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlice Ġand ĠBob Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice , Ġbob ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġa Ġmaintainer Ġand Ġan Ġadditional Ġparticipant . ĠOnly Ġmaintainers Ġmust Ġsign . ĊĠĠĠĠ Ġ* ĠPart icipants Ġis Ġa Ġsuper set Ġof Ġmaintainers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 1 Ġmaintainer Ġand Ġ 1 Ġadditional Ġparticipant `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with One Maint ainer And One Observer () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlice Ġand ĠChar lie Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice , Ġchar lie ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġa Ġmaintainer Ġand Ġtwo Ġadditional Ġparticipants . ĠOnly Ġmaintainers Ġmust Ġsign . ĊĠĠĠĠ Ġ* ĠPart icipants Ġis Ġa Ġsuper set Ġof Ġmaintainers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 1 Ġmaintainer Ġand Ġ 2 Ġadditional Ġparticipants `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with One Maint ainer And Two Observer s () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlice , ĠChar lie , Ġand ĠDen ise Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice , Ġchar lie , Ġden ise ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġtwo Ġmaintainers Ġand Ġan Ġadditional Ġparticipant . ĠOnly Ġmaintainers Ġmust Ġsign . ĊĠĠĠĠ Ġ* ĠPart icipants Ġis Ġa Ġsuper set Ġof Ġmaintainers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 2 Ġmaintainers Ġand Ġ 1 Ġadditional Ġparticipant `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with Two Maint ainers And One Observer () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlice , ĠBob , Ġand ĠChar lie Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice , Ġbob , Ġchar lie ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġbe Ġcre atable Ġwith Ġtwo Ġmaintainers Ġand Ġtwo Ġadditional Ġparticipants . ĠOnly Ġmaintainers Ġmust Ġsign . ĊĠĠĠĠ Ġ* ĠPart icipants Ġis Ġa Ġsuper set Ġof Ġmaintainers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` with Ġ 2 Ġmaintainers Ġand Ġ 2 Ġadditional Ġparticipants `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with Two Maint ainers And Two Observer s () ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Tx Ġ= Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġval Ġcreated Token Ġ= Ġcreate Tx . single Output < Test E vol vable TokenType >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġproposed Ġand Ġcreated Ġtokens Ġto Ġmatch ĊĠĠĠĠĠĠĠ ĠassertEquals ( token , Ġcreated Token . state . data , Ġ" Original Ġtoken Ġdid Ġnot Ġmatch Ġthe Ġpublished Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpect Ġto Ġhave Ġone Ġcreate Ġcommand Ġwith Ġmaintainer Ġsignature ĊĠĠĠĠĠĠĠ Ġval Ġmaintainer Keys Ġ= Ġtoken . maint ainers . map Ġ{ Ġit . own ing Key Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( maintainer Keys , Ġcreate Tx . required Signing Keys , Ġ" Must Ġbe Ġsigned Ġby Ġall Ġmaintainers ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlice , ĠBob , ĠChar lie , Ġand ĠDen ise Ġshould Ġrecord Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġassert Has Transaction ( create Tx , Ġalice , Ġbob , Ġchar lie , Ġden ise ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġe vol vable Ġtoken Ġshould Ġ* not * Ġbe Ġcre atable Ġif Ġnot Ġall Ġmaintainers Ġare Ġparticipants . ĊĠĠĠĠ Ġ* ĠPart icipants Ġis Ġ* not * Ġa Ġsuper set Ġof Ġmaintainers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fails Ġif Ġparticipants Ġis Ġnot Ġa Ġsuper set Ġof Ġmaintainers `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġfactory . with Differ ing Maint ainers And Participants () ĊĊĠĠĠĠĠĠĠ Ġassert Fails (" When Ġcreating Ġan Ġe vol vable Ġtoken Ġall Ġmaintainers Ġmust Ġalso Ġbe Ġparticipants .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalice . create E vol vable Token ( token , Ġnot ary Identity ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }