github.com/release-engineering/exodus-rsync@v1.11.2/internal/gw/client_task_errors_test.go (about) 1 package gw 2 3 import ( 4 "context" 5 "strings" 6 "testing" 7 8 "github.com/release-engineering/exodus-rsync/internal/args" 9 "github.com/release-engineering/exodus-rsync/internal/log" 10 ) 11 12 func TestClientTaskErrors(t *testing.T) { 13 cfg := testConfig(t) 14 15 clientIface, err := Package.NewClient(context.Background(), cfg) 16 if clientIface == nil { 17 t.Errorf("failed to create client, err = %v", err) 18 } 19 20 ctx := context.Background() 21 ctx = log.NewContext(ctx, log.Package.NewLogger(args.Config{})) 22 23 t.Run("can't Await without link", func(t *testing.T) { 24 task := task{client: clientIface.(*client)} 25 task.raw.State = "IN_PROGRESS" 26 task.raw.ID = "1234" 27 28 err := task.Await(ctx) 29 30 if err == nil { 31 t.Error("Unexpectedly failed to return an error") 32 } 33 if !strings.Contains(err.Error(), "polling task 1234: task object is missing 'self'") { 34 t.Errorf("Did not get expected error, got: %v", err) 35 } 36 }) 37 38 t.Run("Await propagates cancel", func(t *testing.T) { 39 cancelCtx, cancelFn := context.WithCancel(ctx) 40 cancelFn() 41 42 task := task{client: clientIface.(*client)} 43 task.raw.State = "IN_PROGRESS" 44 task.raw.ID = "1234" 45 46 err := task.Await(cancelCtx) 47 48 if err == nil { 49 t.Error("Unexpectedly failed to return an error") 50 } 51 if !strings.Contains(err.Error(), "canceled") { 52 t.Errorf("Did not get expected error, got: %v", err) 53 } 54 }) 55 56 }