@@ -54,6 +54,8 @@ func TestDelayedEvents(t *testing.T) {
5454
5555 _ , token := user .MustSync (t , client.SyncReq {})
5656
57+ defer cleanupDelayedEvents (t , user )
58+
5759 txnIdBase := "txn-delayed-msg-timeout-%d"
5860
5961 countKey := "count"
@@ -85,24 +87,11 @@ func TestDelayedEvents(t *testing.T) {
8587 })
8688 }
8789
88- checkContent := func (val gjson.Result ) error {
89- content := val .Get ("content" ).Map ()
90- if l := len (content ); l != 1 {
91- return fmt .Errorf ("wrong number of content fields: expected 1, got %d" , l )
92- }
93- countExpected ++
94- if countActual := content [countKey ].Uint (); countActual != countExpected {
95- return fmt .Errorf ("wrong count in delayed event content: expected %v, got %v" , countExpected , countActual )
96- }
97- return nil
98- }
99-
10090 res = getDelayedEvents (t , user )
10191 countExpected = 0
10292 must .MatchResponse (t , res , match.HTTPResponse {
10393 JSON : []match.JSON {
10494 match .JSONKeyArrayOfSize ("delayed_events" , numEvents ),
105- match .JSONArrayEach ("delayed_events" , checkContent ),
10695 },
10796 })
10897
@@ -129,14 +118,26 @@ func TestDelayedEvents(t *testing.T) {
129118 countExpected = 0
130119 must .MatchResponse (t , res , match.HTTPResponse {
131120 JSON : []match.JSON {
132- match .JSONArrayEach ("chunk" , checkContent ),
121+ match .JSONArrayEach ("chunk" , func (val gjson.Result ) error {
122+ content := val .Get ("content" ).Map ()
123+ if l := len (content ); l != 1 {
124+ return fmt .Errorf ("wrong number of content fields: expected 1, got %d" , l )
125+ }
126+ countExpected ++
127+ if countActual := content [countKey ].Uint (); countActual != countExpected {
128+ return fmt .Errorf ("wrong count in delayed event content: expected %v, got %v" , countExpected , countActual )
129+ }
130+ return nil
131+ }),
133132 },
134133 })
135134 })
136135
137136 t .Run ("delayed state events are sent on timeout" , func (t * testing.T ) {
138137 var res * http.Response
139138
139+ defer cleanupDelayedEvents (t , user )
140+
140141 stateKey := "to_send_on_timeout"
141142
142143 setterKey := "setter"
@@ -309,6 +310,8 @@ func TestDelayedEvents(t *testing.T) {
309310 t .Run ("delayed state events can be sent on request" , func (t * testing.T ) {
310311 var res * http.Response
311312
313+ defer cleanupDelayedEvents (t , user )
314+
312315 stateKey := "to_send_on_request"
313316
314317 setterKey := "setter"
@@ -363,6 +366,8 @@ func TestDelayedEvents(t *testing.T) {
363366
364367 stateKey := "to_send_on_restarted_timeout"
365368
369+ defer cleanupDelayedEvents (t , user )
370+
366371 setterKey := "setter"
367372 setterExpected := "on_timeout"
368373 res = user .MustDo (
@@ -429,6 +434,8 @@ func TestDelayedEvents(t *testing.T) {
429434
430435 stateKey := "to_be_cancelled_by_same_user"
431436
437+ defer cleanupDelayedEvents (t , user )
438+
432439 setterKey := "setter"
433440 user .MustDo (
434441 t ,
@@ -476,6 +483,9 @@ func TestDelayedEvents(t *testing.T) {
476483
477484 stateKey := "to_be_cancelled_by_other_user"
478485
486+ defer cleanupDelayedEvents (t , user )
487+ defer cleanupDelayedEvents (t , user2 )
488+
479489 setterKey := "setter"
480490 user .MustDo (
481491 t ,
@@ -524,6 +534,8 @@ func TestDelayedEvents(t *testing.T) {
524534
525535 var res * http.Response
526536
537+ defer cleanupDelayedEvents (t , user )
538+
527539 stateKey1 := "1"
528540 stateKey2 := "2"
529541
@@ -593,3 +605,27 @@ func getDelayedEvents(t *testing.T, user *client.CSAPI) *http.Response {
593605 t .Helper ()
594606 return user .MustDo (t , "GET" , getPathForUpdateDelayedEvents ())
595607}
608+
609+ func cleanupDelayedEvents (t * testing.T , user * client.CSAPI ) {
610+ t .Helper ()
611+ res := getDelayedEvents (t , user )
612+ defer res .Body .Close ()
613+ body := must .ParseJSON (t , res .Body )
614+ for _ , delayedEvent := range body .Get ("delayed_events" ).Array () {
615+ delayID := delayedEvent .Get ("delay_id" ).String ()
616+ user .MustDo (
617+ t ,
618+ "POST" ,
619+ append (getPathForUpdateDelayedEvents (), delayID ),
620+ client .WithJSONBody (t , map [string ]interface {}{
621+ "action" : "cancel" ,
622+ }),
623+ )
624+ }
625+
626+ must .MatchResponse (t , getDelayedEvents (t , user ), match.HTTPResponse {
627+ JSON : []match.JSON {
628+ match .JSONKeyArrayOfSize ("delayed_events" , 0 ),
629+ },
630+ })
631+ }
0 commit comments