@@ -2403,6 +2403,51 @@ describe('Record', () => {
2403
2403
} ) ;
2404
2404
2405
2405
describe ( 'update()' , ( ) => {
2406
+ let notesProtocol : DwnProtocolDefinition ;
2407
+
2408
+ beforeEach ( async ( ) => {
2409
+ const protocolUri = `http://example.com/notes-${ TestDataGenerator . randomString ( 15 ) } ` ;
2410
+
2411
+ notesProtocol = {
2412
+ published : true ,
2413
+ protocol : protocolUri ,
2414
+ types : {
2415
+ note : {
2416
+ schema : 'http://example.com/note'
2417
+ } ,
2418
+ request : {
2419
+ schema : 'http://example.com/request'
2420
+ }
2421
+ } ,
2422
+ structure : {
2423
+ request : {
2424
+ $actions : [ {
2425
+ who : 'anyone' ,
2426
+ can : [ 'create' , 'update' , 'delete' ]
2427
+ } , {
2428
+ who : 'recipient' ,
2429
+ of : 'request' ,
2430
+ can : [ 'co-update' ]
2431
+ } ]
2432
+ } ,
2433
+ note : {
2434
+ }
2435
+ }
2436
+ } ;
2437
+
2438
+ // alice and bob both configure the protocol
2439
+ const { status : aliceConfigStatus , protocol : aliceNotesProtocol } = await dwnAlice . protocols . configure ( { message : { definition : notesProtocol } } ) ;
2440
+ expect ( aliceConfigStatus . code ) . to . equal ( 202 ) ;
2441
+ const { status : aliceNotesProtocolSend } = await aliceNotesProtocol . send ( aliceDid . uri ) ;
2442
+ expect ( aliceNotesProtocolSend . code ) . to . equal ( 202 ) ;
2443
+
2444
+ const { status : bobConfigStatus , protocol : bobNotesProtocol } = await dwnBob . protocols . configure ( { message : { definition : notesProtocol } } ) ;
2445
+ expect ( bobConfigStatus . code ) . to . equal ( 202 ) ;
2446
+ const { status : bobNotesProtocolSend } = await bobNotesProtocol ! . send ( bobDid . uri ) ;
2447
+ expect ( bobNotesProtocolSend . code ) . to . equal ( 202 ) ;
2448
+
2449
+ } ) ;
2450
+
2406
2451
it ( 'updates a local record on the local DWN' , async ( ) => {
2407
2452
const { status, record } = await dwnAlice . records . write ( {
2408
2453
data : 'Hello, world!' ,
@@ -2906,6 +2951,64 @@ describe('Record', () => {
2906
2951
expect ( record . dataFormat ) . to . equal ( 'application/json' ) ;
2907
2952
expect ( await record . data . json ( ) ) . to . deep . equal ( { subject : 'another subject' , body : 'another body' } ) ;
2908
2953
} ) ;
2954
+
2955
+ it ( 'differentiates between creator and author' , async ( ) => {
2956
+ const { status, record } = await dwnAlice . records . write ( {
2957
+ data : 'Hello, Bob!' ,
2958
+ message : {
2959
+ recipient : bobDid . uri ,
2960
+ protocol : notesProtocol . protocol ,
2961
+ protocolPath : 'request' ,
2962
+ schema : notesProtocol . types . request . schema ,
2963
+ }
2964
+ } ) ;
2965
+ expect ( status . code ) . to . equal ( 202 , 'create' ) ;
2966
+ expect ( record ) . to . not . be . undefined ;
2967
+ const { status : sendStatus } = await record . send ( ) ;
2968
+ expect ( sendStatus . code ) . to . equal ( 202 , 'send' ) ;
2969
+
2970
+ // bob reads the record
2971
+ const readResult = await dwnBob . records . read ( {
2972
+ protocol : notesProtocol . protocol ,
2973
+ from : aliceDid . uri ,
2974
+ message : {
2975
+ filter : {
2976
+ recordId : record . id
2977
+ }
2978
+ }
2979
+ } ) ;
2980
+ expect ( readResult . status . code ) . to . equal ( 200 , 'bob reads record' ) ;
2981
+ expect ( readResult . record ) . to . not . be . undefined ;
2982
+
2983
+ const bobRecord = readResult . record ;
2984
+ const { status : storeStatus } = await bobRecord ! . store ( ) ;
2985
+ expect ( storeStatus . code ) . to . equal ( 202 , 'store' ) ;
2986
+ const { status : updateStatus } = await bobRecord . update ( { data : 'Hello, Alice!' } ) ;
2987
+ expect ( updateStatus . code ) . to . equal ( 202 , 'update' ) ;
2988
+
2989
+ const updatedData = await bobRecord . send ( aliceDid . uri ) ;
2990
+ expect ( updatedData . status . code ) . to . equal ( 202 , 'send update' ) ;
2991
+
2992
+ // alice reads the record
2993
+ const readResultAlice = await dwnAlice . records . read ( {
2994
+ from : aliceDid . uri ,
2995
+ protocol : notesProtocol . protocol ,
2996
+ message : {
2997
+ filter : {
2998
+ recordId : record . id
2999
+ }
3000
+ }
3001
+ } ) ;
3002
+
3003
+ expect ( readResultAlice . status . code ) . to . equal ( 200 , 'alice reads record' ) ;
3004
+ expect ( readResultAlice . record ) . to . not . be . undefined ;
3005
+ expect ( await readResultAlice . record ! . data . text ( ) ) . to . equal ( 'Hello, Alice!' ) ;
3006
+
3007
+ // alice is the creator
3008
+ expect ( readResultAlice . record ! . creator ) . to . equal ( aliceDid . uri ) ;
3009
+ // bob is the author
3010
+ expect ( readResultAlice . record ! . author ) . to . equal ( bobDid . uri ) ;
3011
+ } ) ;
2909
3012
} ) ;
2910
3013
2911
3014
describe ( 'delete()' , ( ) => {
0 commit comments