github.com/release-engineering/exodus-rsync@v1.11.2/internal/gw/client_dryrun_test.go (about) 1 package gw 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 "testing" 8 9 "github.com/golang/mock/gomock" 10 11 "github.com/release-engineering/exodus-rsync/internal/args" 12 "github.com/release-engineering/exodus-rsync/internal/conf" 13 "github.com/release-engineering/exodus-rsync/internal/log" 14 "github.com/release-engineering/exodus-rsync/internal/walk" 15 ) 16 17 func TestNewDryRunClientCertError(t *testing.T) { 18 ctrl := gomock.NewController(t) 19 cfg := conf.NewMockConfig(ctrl) 20 21 cfg.EXPECT().GwCert().Return("cert-does-not-exist") 22 cfg.EXPECT().GwKey().Return("key-does-not-exist") 23 24 _, err := Package.NewDryRunClient(context.Background(), cfg) 25 26 // Should have given us this error 27 if !strings.Contains(fmt.Sprint(err), "can't load cert/key") { 28 t.Error("did not get expected error, err =", err) 29 } 30 } 31 32 func TestDryRunUpload(t *testing.T) { 33 ctx := context.Background() 34 ctx = log.NewContext(ctx, log.Package.NewLogger(args.Config{})) 35 36 c := client{dryRun: true} 37 38 // It should do nothing, successfully, without even looking at the 39 // sync item 40 err := c.uploadBlob(ctx, walk.SyncItem{}) 41 if err != nil { 42 t.Errorf("uploadBlob failed in dry-run mode, err = %v", err) 43 } 44 } 45 46 func TestDryRunPublish(t *testing.T) { 47 ctx := context.Background() 48 ctx = log.NewContext(ctx, log.Package.NewLogger(args.Config{})) 49 50 c := client{dryRun: true} 51 52 type publishGetter func(t *testing.T) Publish 53 54 cases := []struct { 55 name string 56 getter publishGetter 57 }{ 58 {"new publish", 59 func(t *testing.T) Publish { 60 p, err := c.NewPublish(ctx) 61 if err != nil { 62 t.Fatalf("NewPublish failed in dry-run mode, err = %v", err) 63 } 64 return p 65 }, 66 }, 67 68 {"get publish", 69 func(t *testing.T) Publish { 70 p, err := c.GetPublish(ctx, "whatever-id") 71 if err != nil { 72 t.Fatalf("GetPublish failed in dry-run mode, err = %v", err) 73 } 74 return p 75 }, 76 }, 77 } 78 79 for _, testcase := range cases { 80 t.Run(testcase.name, func(t *testing.T) { 81 p := testcase.getter(t) 82 83 // Publish object should "work" but not really do anything. 84 t.Logf("Got publish %s", p.ID()) 85 86 err := p.AddItems(ctx, []ItemInput{}) 87 if err != nil { 88 t.Errorf("AddItems failed in dry-run mode, err = %v", err) 89 } 90 91 err = p.Commit(ctx, "") 92 if err != nil { 93 t.Errorf("Commit failed in dry-run mode, err = %v", err) 94 } 95 }) 96 } 97 } 98 99 func TestNewDryRunClientOk(t *testing.T) { 100 cfg := testConfig(t) 101 102 clientIface, err := Package.NewDryRunClient(context.Background(), cfg) 103 104 // Should have succeeded 105 if clientIface == nil || err != nil { 106 t.Errorf("unexpectedly failed to make client, client = %v, err = %v", clientIface, err) 107 } 108 109 // The client should be marked as dry-run 110 client := clientIface.(*client) 111 if !client.dryRun { 112 t.Errorf("NewDryRunClient didn't create a client in dry-run mode!") 113 } 114 }