github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/apiserver/backups/backups_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package backups_test
     5  
     6  import (
     7  	"io"
     8  	"io/ioutil"
     9  
    10  	"github.com/juju/errors"
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  	"gopkg.in/juju/names.v2"
    14  
    15  	backupsAPI "github.com/juju/juju/apiserver/backups"
    16  	"github.com/juju/juju/apiserver/common"
    17  	apiservertesting "github.com/juju/juju/apiserver/testing"
    18  	"github.com/juju/juju/juju/testing"
    19  	"github.com/juju/juju/state/backups"
    20  	backupstesting "github.com/juju/juju/state/backups/testing"
    21  	"github.com/juju/juju/testing/factory"
    22  )
    23  
    24  type backupsSuite struct {
    25  	testing.JujuConnSuite
    26  	resources  *common.Resources
    27  	authorizer *apiservertesting.FakeAuthorizer
    28  	api        *backupsAPI.API
    29  	meta       *backups.Metadata
    30  }
    31  
    32  var _ = gc.Suite(&backupsSuite{})
    33  
    34  func (s *backupsSuite) SetUpTest(c *gc.C) {
    35  	s.JujuConnSuite.SetUpTest(c)
    36  	s.resources = common.NewResources()
    37  	s.resources.RegisterNamed("dataDir", common.StringResource("/var/lib/juju"))
    38  	tag := names.NewLocalUserTag("admin")
    39  	s.authorizer = &apiservertesting.FakeAuthorizer{Tag: tag}
    40  	var err error
    41  	s.api, err = backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer)
    42  	c.Assert(err, jc.ErrorIsNil)
    43  	s.meta = backupstesting.NewMetadataStarted()
    44  }
    45  
    46  func (s *backupsSuite) setBackups(c *gc.C, meta *backups.Metadata, err string) *backupstesting.FakeBackups {
    47  	fake := backupstesting.FakeBackups{
    48  		Meta: meta,
    49  	}
    50  	if meta != nil {
    51  		fake.MetaList = append(fake.MetaList, meta)
    52  	}
    53  	if err != "" {
    54  		fake.Error = errors.Errorf(err)
    55  	}
    56  	s.PatchValue(backupsAPI.NewBackups,
    57  		func(backupsAPI.Backend) (backups.Backups, io.Closer) {
    58  			return &fake, ioutil.NopCloser(nil)
    59  		},
    60  	)
    61  	return &fake
    62  }
    63  
    64  func (s *backupsSuite) TestRegistered(c *gc.C) {
    65  	_, err := common.Facades.GetType("Backups", 1)
    66  	c.Check(err, jc.ErrorIsNil)
    67  }
    68  
    69  func (s *backupsSuite) TestNewAPIOkay(c *gc.C) {
    70  	_, err := backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer)
    71  	c.Check(err, jc.ErrorIsNil)
    72  }
    73  
    74  func (s *backupsSuite) TestNewAPINotAuthorized(c *gc.C) {
    75  	s.authorizer.Tag = names.NewApplicationTag("eggs")
    76  	_, err := backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer)
    77  
    78  	c.Check(errors.Cause(err), gc.Equals, common.ErrPerm)
    79  }
    80  
    81  func (s *backupsSuite) TestNewAPIHostedEnvironmentFails(c *gc.C) {
    82  	otherState := factory.NewFactory(s.State).MakeModel(c, nil)
    83  	defer otherState.Close()
    84  	_, err := backupsAPI.NewAPI(&stateShim{otherState}, s.resources, s.authorizer)
    85  	c.Check(err, gc.ErrorMatches, "backups are not supported for hosted models")
    86  }