package Ġservice Ċ Ċ import Ġhelper . TestUtils Ċ import Ġio . p 8 e . crypto . Signer Factory Ċ import Ġio . p 8 e . engine . Contract Engine Ċ import Ġio . p 8 e . proto . Contract Scope Ċ import Ġio . p 8 e . util .* Ċ import Ġio . pro venance . engine . service .* Ċ import Ġio . pro venance . os . client . Os Client Ċ import Ġio . pro venance . os . domain . input stream . DI ME InputStream Ċ import Ġio . pro venance . p 8 e . encryption . model . Key Providers . DATABASE Ċ import Ġio . pro venance . p 8 e . shared . domain .* Ċ import Ġio . pro venance . p 8 e . shared . service . Aff ili ate Service Ċ import Ġio . pro venance . p 8 e . shared . state . Envelope State Engine Ċ import Ġorg . jetbrains . ex posed . dao . id . Entity ID Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . insert Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġorg . jetbrains . ex posed . sql . selectAll Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġjava . security . KeyPair Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . util .* Ċ Ċ class ĠEn velope Service Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġenvelope Record : ĠEn velope Record ĊĊĠĠĠ Ġlateinit Ġvar Ġscope Record : ĠScope Record ĊĊĠĠĠ Ġlateinit Ġvar Ġenvelope Service : ĠEn velope Service ĊĊĠĠĠ Ġlateinit Ġvar Ġaffili ate Service : ĠAff ili ate Service ĊĊĠĠĠ Ġlateinit Ġvar Ġos Client : ĠOs Client ĊĊĠĠĠ Ġlateinit Ġvar Ġmailbox Service : ĠMail box Service ĊĊĠĠĠ Ġlateinit Ġvar Ġenvelope State Engine : ĠEn velope State Engine ĊĊĠĠĠ Ġlateinit Ġvar Ġevent Service : ĠEvent Service ĊĊĠĠĠ Ġlateinit Ġvar Ġmetric Service : ĠMetrics Service ĊĊĠĠĠ Ġlateinit Ġvar Ġcontract Engine : ĠContract Engine ĊĊĠĠĠ Ġlateinit Ġvar Ġd ime InputStream : ĠD IME InputStream ĊĊĠĠĠ Ġlateinit Ġvar Ġsigner Factory : ĠSign er Factory ĊĊĠĠĠ Ġval Ġec Keys : ĠKey Pair Ġ= ĠTestUtils . generate KeyPair () ĊĊĠĠĠ Ġval Ġsigning Keys : ĠKey Pair Ġ= ĠTestUtils . generate KeyPair () ĊĊĠĠĠ Ġval Ġauth Keys : ĠKey Pair Ġ= ĠTestUtils . generate KeyPair () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup (){ ĊĠĠĠĠĠĠĠ ĠTestUtils . Database Connect () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create ( Envelope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create ( Scope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create ( Aff ili ate Table ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Record Ġ= ĠScope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠScope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠContract Scope . Scope . getDefaultInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Execution Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAff ili ate Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ alias ] Ġ= Ġ" alias " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ privateKey ] Ġ= Ġsigning Keys . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ whitelist Data ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PublicKey ] Ġ= Ġec Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PrivateKey ] Ġ= Ġec Keys . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ active ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ index Name ] Ġ= Ġ" scopes " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ signing Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Type ] Ġ= ĠDATABASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ auth PublicKey ] Ġ= Ġauth Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Mock Ġthe Ġservice ĊĠĠĠĠĠĠĠ Ġaffili ate Service Ġ= ĠMockito . mock ( Aff ili ate Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġos Client Ġ= ĠMockito . mock ( Os Client :: class . java ) ĊĠĠĠĠĠĠĠ Ġmailbox Service Ġ= ĠMockito . mock ( Mailbox Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġenvelope State Engine Ġ= ĠMockito . mock ( Envelope State Engine :: class . java ) ĊĠĠĠĠĠĠĠ Ġevent Service Ġ= ĠMockito . mock ( Event Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġmetric Service Ġ= ĠMockito . mock ( Metrics Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġcontract Engine Ġ= ĠMockito . mock ( Contract Engine :: class . java ) ĊĠĠĠĠĠĠĠ Ġd ime InputStream Ġ= ĠMockito . mock ( DI ME InputStream :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġenvelope State Engine Ġ= ĠEn velope State Engine () ĊĊĠĠĠĠĠĠĠ Ġsigner Factory Ġ= ĠMockito . mock ( Signer Factory :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġenvelope Service Ġ= ĠEn velope Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaffili ate Service Ġ= Ġaffili ate Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġos Client Ġ= Ġos Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmailbox Service Ġ= Ġmailbox Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope State Engine Ġ= Ġenvelope State Engine , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Service Ġ= Ġevent Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetrics Service Ġ= Ġmetric Service ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Verify Ġst aged Ġcontract Ġthat Ġdoes Ġnot Ġexist ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing KeyPair ( ec Keys . public )). thenReturn ( signing Keys ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . CREATED , Ġtest Envelope . status ) ĊĊĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Result Ġ= Ġtransaction Ġ{ Ġenvelope Service . stage ( ec Keys . public , Ġtest Envelope ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( Contract Scope . Envelope . Status . CREATED , Ġenvelope Result . status ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . IN BOX , Ġenvelope Result . status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Verify Ġst aged Ġcontracts Ġthat Ġalready Ġexist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CREATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ass umption Ġthat ĠEC Ġkeys Ġand ĠSign ing Ġkeys Ġare Ġthe Ġsame . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing KeyPair ( ec Keys . public )). thenReturn ( signing Keys ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvelope Result Ġ= Ġenvelope Service . stage ( ec Keys . public , Ġtest Envelope ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( envelope Record . scope . scope Uuid , Ġenvelope Result . scope . scope Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( envelope Record . execution Uuid , Ġenvelope Result . execution Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( envelope Record . uuid . value , Ġenvelope Result . uuid . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġread Ġenvelope Ġhas Ġbeen Ġread Ġwith Ġread Ġtimestamp `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CREATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Result Ġ= Ġtransaction Ġ{ Ġenvelope Service . read ( signing Keys . public , Ġtest Envelope . execution Uuid . to Uuid Prov ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Result . read Time ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Result . data . read Time ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( envelope Result . read Time , Ġenvelope Record . read Time ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( envelope Result . data . read Time , Ġenvelope Record . data . read Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġread Ġen velo pes Ġthat Ġhas Ġbeen Ġmark Ġas Ġerro red ` (){ ĊĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Error Ġ= ĠContract Scope . Envelope Error . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uuid ( error Uuid . to Proto Uuid Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Uuid ( test Envelope . ref . group Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Execution Uuid ( test Envelope . execution Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Contract Scope . Envelope Error . Type . CONTRACT _ IN VOC ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" some - error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Read Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Scope Uuid ( test Envelope . scope . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Envelope ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. audit ed Prov () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Errors ( mutable ListOf ( envelope Error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CREATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvelope Result Ġ= Ġenvelope Service . read ( signing Keys . public , Ġtest Envelope . execution Uuid . to Uuid Prov (), Ġerror Uuid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġenvelope Result . data . errors Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope Error . Type . CONTRACT _ IN VOC ATION , Ġenvelope Result . data . errors List [ 0 ]. type ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Error . message , Ġenvelope Result . data . errors List [ 0 ]. message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġenvelope Ġcomplete ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ group Uuid ] Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ execution Uuid ] Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ scope ] Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ data ] Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ status ] Ġ= ĠContract Scope . Envelope . Status . INDEX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ index Time ] Ġ= ĠOffset DateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . complete ( signing Keys . public , Ġtest Envelope . execution Uuid . to Uuid Prov ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvelope Record Ġ= ĠEn velope Table . selectAll (). last () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . COMPLETE , Ġenvelope Record [ Envelope Table . status ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Record [ Envelope Table . complete Time ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠNotFound Exception :: class ) ĊĠĠĠ Ġfun Ġ` Validate ĠNotFound Exception Ġis Ġthrown Ġfor ĠEn velope Record Ġnot Ġin ĠDB ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĊĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠ Ġtransaction { Ġenvelope Service . complete ( TestUtils . generate KeyPair (). public , Ġtest Envelope . execution Uuid . to Uuid Prov ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Validate Ġ- ĠNotFound Exception Ġexpected . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġenvelope Ġmerge ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġother Keys Ġ= ĠTestUtils . generate KeyPair () ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġcontract Ġ= ĠTestUtils . generate Test Contract ( signing Keys , Ġscope Record , Ġencryption Keys Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġcontract Ġ= Ġcontract , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope 2 Ġ= ĠTestUtils . generate Test Envelope ( other Keys , Ġscope Record , Ġexecution UUID Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov (), Ġcontract Ġ= Ġcontract ) ĊĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). minus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing KeyPair ( ec Keys . public )). thenReturn ( signing Keys ) ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMutable ĠEn velope ĠRecord ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ group Uuid ] Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ execution Uuid ] Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ scope ] Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ data ] Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ status ] Ġ= ĠContract Scope . Envelope . Status . FRAGMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ fragment Time ] Ġ= ĠOffset DateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . merge ( ec Keys . public , Ġtest Envelope 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvelope Record Ġ= ĠEn velope Table . selectAll (). last () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . SIGNED , Ġenvelope Record [ Envelope Table . status ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Record [ Envelope Table . signed Time ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġenvelope Record [ Envelope Table . data ]. result . signatures Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġenvelope Ġmerge Ġfor Ġsignature Ġthat Ġalready Ġexists ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). minus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing KeyPair ( ec Keys . public )). thenReturn ( signing Keys ) ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CHAIN CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= Ġenvelope Service . merge ( ec Keys . public , Ġtest Envelope ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( envelope Record . data , Ġrecord . data ) Ġ// ĠNothing Ġhas Ġchanged . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġenvelope Ġindex ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). minus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CHAIN CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . index ( envelope Record , Ġtest Envelope . scope , Ġ" abc - hash ", Ġ 1 0 0 L ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( Contract Scope . Envelope . Status . CHAIN CODE , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . INDEX , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Record . index Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġindexing Ġdoes Ġnot Ġhappen Ġif Ġindex Time Ġis Ġavailable ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Index Time Ġ= ĠOffset DateTime . now (). minus Nan os ( 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Record Ġ= ĠScope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠScope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠContract Scope . Scope . getDefaultInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Execution Uuid Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). minus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Index Time ( test Index Time . to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CHAIN CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Time Ġ= Ġtest Index Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . index ( envelope Record , Ġtest Envelope . scope , Ġ" abc - hash ", Ġ 1 0 0 L ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . CHAIN CODE , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( Contract Scope . Envelope . Status . INDEX , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( envelope Record . index Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġindexing Ġdoes Ġnot Ġhappen Ġif ĠScope Ġhas Ġlast Ġevents ` (){ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġfalse , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" Hel low World Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). minus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CHAIN CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . index ( envelope Record , Ġtest Envelope . scope , Ġ" abc - hash ", Ġ 1 0 0 L ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope . Status . CHAIN CODE , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( Contract Scope . Envelope . Status . INDEX , Ġenvelope Record . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( envelope Record . index Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġerro red Ġenvelope Ġis Ġrecorded `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Error Ġ= ĠContract Scope . Envelope Error . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uuid ( error Uuid . to Proto Uuid Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Uuid ( test Envelope . ref . group Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Execution Uuid ( test Envelope . execution Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Contract Scope . Envelope Error . Type . CONTRACT _ IN VOC ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" some - error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Read Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Scope Uuid ( test Envelope . scope . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Envelope ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. audit ed Prov () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" HelloWorld Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing PublicKey ( ec Keys . public )). thenReturn ( signing Keys . public ) ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ group Uuid ] Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ execution Uuid ] Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ scope ] Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ data ] Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ status ] Ġ= ĠContract Scope . Envelope . Status . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ error Time ] Ġ= ĠOffset DateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . error ( ec Keys . public , Ġenvelope Error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= ĠEn velope Table . selectAll (). last () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( record [ Envelope Table . data ]. errors List [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope Error . Type . CONTRACT _ IN VOC ATION , Ġrecord [ Envelope Table . data ]. errors List [ 0 ]. type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Validate Ġerro red Ġenvelope Ġis Ġrecorded Ġwhen Ġtwo Ġaffiliates Ġare Ġon Ġsame Ġinstance Ġand Ġother Ġis Ġalready Ġerro red `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing Keys , Ġscope Record , Ġencryption KeyPair Ġ= Ġec Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Error Ġ= ĠContract Scope . Envelope Error . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uuid ( error Uuid . to Proto Uuid Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Uuid ( test Envelope . ref . group Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Execution Uuid ( test Envelope . execution Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Contract Scope . Envelope Error . Type . CONTRACT _ RE JECT ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" some - error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Read Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Scope Uuid ( test Envelope . scope . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Envelope ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. audit ed Prov () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" HelloWorld Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond KeyPair Ġ= ĠTestUtils . generate KeyPair () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing PublicKey ( ec Keys . public )). thenReturn ( signing Keys . public ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing PublicKey ( second KeyPair . public )). thenReturn ( second KeyPair . public ) ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAff ili ate Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ alias ] Ġ= Ġ" alias 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsecond KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ privateKey ] Ġ= Ġsecond KeyPair . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ whitelist Data ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PublicKey ] Ġ= Ġsecond KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PrivateKey ] Ġ= Ġsecond KeyPair . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ active ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ index Name ] Ġ= Ġ" scopes " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ signing Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Type ] Ġ= ĠDATABASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ auth PublicKey ] Ġ= Ġsecond KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Record 2 Ġ= ĠScope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠScope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsecond KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . scope Uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġscope Record . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Execution Uuid Ġ= Ġscope Record . last Execution Uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ group Uuid ] Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ execution Uuid ] Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning Keys . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ scope ] Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ data ] Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ status ] Ġ= ĠContract Scope . Envelope . Status . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ error Time ] Ġ= ĠOffset DateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ group Uuid ] Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ execution Uuid ] Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsecond KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ scope ] Ġ= Ġscope Record 2 . uuid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ data ] Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ status ] Ġ= ĠContract Scope . Envelope . Status . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ error Time ] Ġ= ĠOffset DateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . error ( second KeyPair . public , Ġenvelope Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . error ( ec Keys . public , Ġenvelope Error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn velope Table . select Ġ{ ĠEn velope Table . execution Uuid Ġeq Ġtest Envelope . execution Uuid . to Uuid Prov () Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġit [ Envelope Table . data ]. errors List . count ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( it [ Envelope Table . data ]. errors List [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope Error . Type . CONTRACT _ RE JECT ED , Ġit [ Envelope Table . data ]. errors List [ 0 ]. type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Verify Ġenvelope Ġerror Ġcan Ġbe Ġhandled Ġfor Ġaffili ate Ġwith Ġdifferent Ġsigning Ġand Ġencryption Ġkeys Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Setup ĊĠĠĠĠĠĠĠ Ġval Ġencryption KeyPair Ġ= ĠTestUtils . generate KeyPair () ĊĠĠĠĠĠĠĠ Ġval Ġsigning KeyPair Ġ= ĠTestUtils . generate KeyPair () ĊĠĠĠĠĠĠĠ Ġval Ġauth KeyPair Ġ= ĠTestUtils . generate KeyPair () ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAff ili ate Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ alias ] Ġ= Ġ" diff - keys " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publicKey ] Ġ= Ġsigning KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ privateKey ] Ġ= Ġsigning KeyPair . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ whitelist Data ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PublicKey ] Ġ= Ġencryption KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption PrivateKey ] Ġ= Ġencryption KeyPair . private . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ active ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ index Name ] Ġ= Ġ" scopes " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ signing Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ encryption Key Uuid ] Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Type ] Ġ= ĠDATABASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ auth PublicKey ] Ġ= Ġauth KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Record Ġ= ĠScope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠScope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning KeyPair . public . to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠContract Scope . Scope . getDefaultInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Execution Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( aff ili ate Service . get Signing PublicKey ( encryption KeyPair . public )). thenReturn ( signing KeyPair . public ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Envelope Ġ= ĠTestUtils . generate Test Envelope ( signing KeyPair , Ġscope Record , Ġencryption KeyPair Ġ= Ġencryption KeyPair ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Uuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġenvelope Error Ġ= ĠContract Scope . Envelope Error . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uuid ( error Uuid . to Proto Uuid Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Uuid ( test Envelope . ref . group Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Execution Uuid ( test Envelope . execution Uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Contract Scope . Envelope Error . Type . CONTRACT _ RE JECT ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" some - error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Read Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Scope Uuid ( test Envelope . scope . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Envelope ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. audit ed Prov () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġenvelope State Ġ= ĠContract Scope . Envelope State . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInput ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( test Envelope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Invoker ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract Class name (" HelloWorld Contract ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Executed Time ( Offset DateTime . now (). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chain code Time ( Offset DateTime . now (). plus Seconds ( 5 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inbox Time ( Offset DateTime . now (). plus Seconds ( 1 0 ). to Proto Timestamp Prov ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Record Ġ= ĠEn velope Record . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠEntity ID ( UUID . randomUUID (), ĠEn velope Table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Uuid Ġ= Ġtest Envelope . ref . group Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Uuid Ġ= Ġtest Envelope . execution Uuid . to Uuid Prov () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigning KeyPair . public . to Hex () Ġ// Ġdifferent Ġkey Ġthan Ġwhat Ġis Ġsec ified Ġin Ġenvelope Service . error Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġenvelope State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠContract Scope . Envelope . Status . CREATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Uuid Ġ= Ġscope Record . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Execute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvelope Service . error ( encryption KeyPair . public , Ġenvelope Error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Validate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= ĠEn velope Table . selectAll (). last () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( record [ Envelope Table . data ]. errors List [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Contract Scope . Envelope Error . Type . CONTRACT _ RE JECT ED , Ġrecord [ Envelope Table . data ]. errors List [ 0 ]. type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ