From c097fc8d7931e0dd025b76fbcff81e724696c63e Mon Sep 17 00:00:00 2001 From: Manu Gupta Date: Wed, 5 Dec 2018 16:21:47 -0500 Subject: [PATCH] Add test when go mod download fails (#962) * Add test when go mod fails * Do not export the mocked fetcher --- pkg/download/protocol_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/download/protocol_test.go b/pkg/download/protocol_test.go index 881cf725..656e7d10 100644 --- a/pkg/download/protocol_test.go +++ b/pkg/download/protocol_test.go @@ -13,6 +13,7 @@ import ( "time" "github.com/gomods/athens/pkg/config" + "github.com/gomods/athens/pkg/errors" "github.com/gomods/athens/pkg/module" "github.com/gomods/athens/pkg/stash" "github.com/gomods/athens/pkg/storage" @@ -317,3 +318,31 @@ func (m *mockFetcher) Fetch(ctx context.Context, mod, ver string) (*storage.Vers Zip: ioutil.NopCloser(bytes.NewReader(bts)), }, nil } + +func TestDownloadProtocolWhenFetchFails(t *testing.T) { + s, err := mem.NewStorage() + if err != nil { + t.Fatal(err) + } + fakeMod := testMod{"github.com/athens-artifacts/samplelib", "v1.0.0"} + bts := []byte(fakeMod.mod + "@" + fakeMod.ver) + err = s.Save(context.Background(), fakeMod.mod, fakeMod.ver, bts, ioutil.NopCloser(bytes.NewReader(bts)), bts) + if err != nil { + t.Fatal(err) + } + mp := ¬FoundFetcher{} + st := stash.New(mp, s) + dp := New(&Opts{s, st, nil}) + ctx := context.Background() + _, err = dp.GoMod(ctx, fakeMod.mod, fakeMod.ver) + if err != nil { + t.Errorf("Download protocol should succeed, instead it gave error %s \n", err) + } +} + +type notFoundFetcher struct{} + +func (m *notFoundFetcher) Fetch(ctx context.Context, mod, ver string) (*storage.Version, error) { + const op errors.Op = "goGetFetcher.Fetch" + return nil, errors.E(op, "Fetcher error") +}