github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/client/storage/poolcreate_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package storage_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/apiserver/params"
    12  	jujustorage "github.com/juju/juju/storage"
    13  	"github.com/juju/juju/storage/provider"
    14  )
    15  
    16  type poolCreateSuite struct {
    17  	baseStorageSuite
    18  }
    19  
    20  var _ = gc.Suite(&poolCreateSuite{})
    21  
    22  func (s *poolCreateSuite) TestCreatePool(c *gc.C) {
    23  	const (
    24  		pname = "pname"
    25  		ptype = string(provider.LoopProviderType)
    26  	)
    27  	expected, _ := jujustorage.NewConfig(pname, provider.LoopProviderType, nil)
    28  
    29  	args := params.StoragePoolArgs{
    30  		Pools: []params.StoragePool{{
    31  			Name:     pname,
    32  			Provider: ptype,
    33  			Attrs:    nil,
    34  		}},
    35  	}
    36  	results, err := s.api.CreatePool(args)
    37  	c.Assert(err, jc.ErrorIsNil)
    38  	c.Assert(results.Results, gc.HasLen, 1)
    39  	c.Assert(results.Results[0].Error, gc.IsNil)
    40  
    41  	pools, err := s.poolManager.List()
    42  	c.Assert(err, jc.ErrorIsNil)
    43  	c.Assert(pools, gc.HasLen, 1)
    44  	c.Assert(pools[0], gc.DeepEquals, expected)
    45  }
    46  
    47  func (s *poolCreateSuite) TestCreatePoolError(c *gc.C) {
    48  	msg := "as expected"
    49  	s.baseStorageSuite.poolManager.createPool = func(name string, providerType jujustorage.ProviderType, attrs map[string]interface{}) (*jujustorage.Config, error) {
    50  		return nil, errors.New(msg)
    51  	}
    52  
    53  	args := params.StoragePoolArgs{
    54  		Pools: []params.StoragePool{{
    55  			Name: "doesnt-matter",
    56  		}},
    57  	}
    58  	results, err := s.api.CreatePool(args)
    59  	c.Assert(err, jc.ErrorIsNil)
    60  	c.Assert(results.Results, gc.HasLen, 1)
    61  	c.Assert(results.Results[0].Error, jc.DeepEquals, &params.Error{
    62  		Message: "as expected",
    63  	})
    64  }
    65  
    66  func (s *poolCreateSuite) TestLegacyCreatePool(c *gc.C) {
    67  	const (
    68  		pname = "pname"
    69  		ptype = string(provider.LoopProviderType)
    70  	)
    71  	expected, _ := jujustorage.NewConfig(pname, provider.LoopProviderType, nil)
    72  
    73  	err := s.apiv3.CreatePool(params.StoragePool{
    74  		Name:     pname,
    75  		Provider: ptype,
    76  		Attrs:    nil,
    77  	})
    78  	c.Assert(err, jc.ErrorIsNil)
    79  
    80  	pools, err := s.poolManager.List()
    81  	c.Assert(err, jc.ErrorIsNil)
    82  	c.Assert(pools, gc.HasLen, 1)
    83  	c.Assert(pools[0], gc.DeepEquals, expected)
    84  }
    85  
    86  func (s *poolCreateSuite) TestLegacyCreatePoolError(c *gc.C) {
    87  	msg := "as expected"
    88  	s.baseStorageSuite.poolManager.createPool = func(name string, providerType jujustorage.ProviderType, attrs map[string]interface{}) (*jujustorage.Config, error) {
    89  		return nil, errors.New(msg)
    90  	}
    91  
    92  	err := s.apiv3.CreatePool(params.StoragePool{})
    93  	c.Assert(errors.Cause(err), gc.ErrorMatches, msg)
    94  }