github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/container/kvm/sync_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package kvm_test 5 6 import ( 7 "net/http" 8 9 "github.com/juju/errors" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 . "github.com/juju/juju/container/kvm" 15 "github.com/juju/juju/environs/imagedownloads" 16 ) 17 18 // cacheSuite is gocheck boilerplate. 19 type cacheSuite struct { 20 testing.IsolationSuite 21 } 22 23 // _ is gocheck boilerplate. 24 var _ = gc.Suite(&cacheSuite{}) 25 26 func (cacheSuite) TestSyncOnerErrors(c *gc.C) { 27 o := fakeParams{FakeData: nil, Err: errors.New("oner failed")} 28 u := fakeFetcher{} 29 got := Sync(o, u, nil) 30 c.Assert(got, gc.ErrorMatches, "oner failed") 31 } 32 33 func (cacheSuite) TestSyncOnerExists(c *gc.C) { 34 o := fakeParams{ 35 FakeData: nil, 36 Err: errors.AlreadyExistsf("exists")} 37 u := fakeFetcher{} 38 got := Sync(o, u, nil) 39 c.Assert(got, jc.ErrorIsNil) 40 } 41 42 func (cacheSuite) TestSyncUpdaterErrors(c *gc.C) { 43 o := fakeParams{FakeData: &imagedownloads.Metadata{}, Err: nil} 44 u := fakeFetcher{Err: errors.New("updater failed")} 45 got := Sync(o, u, nil) 46 c.Assert(got, gc.ErrorMatches, "updater failed") 47 } 48 49 func (cacheSuite) TestSyncSucceeds(c *gc.C) { 50 o := fakeParams{FakeData: &imagedownloads.Metadata{}} 51 u := fakeFetcher{} 52 got := Sync(o, u, nil) 53 c.Assert(got, jc.ErrorIsNil) 54 } 55 56 type fakeParams struct { 57 FakeData *imagedownloads.Metadata 58 Err error 59 } 60 61 func (f fakeParams) One() (*imagedownloads.Metadata, error) { 62 if f.Err != nil { 63 return nil, f.Err 64 } 65 return f.FakeData, nil 66 } 67 68 type fakeFetcher struct { 69 md *imagedownloads.Metadata 70 fileCache *Image 71 req *http.Request 72 client *http.Client 73 // Used to return an error 74 Err error 75 } 76 77 func (f fakeFetcher) Fetch() error { 78 if f.Err != nil { 79 return f.Err 80 } 81 return nil 82 } 83 84 func (f fakeFetcher) Close() { 85 return 86 }