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, ¶ms.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 }