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  }