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

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package storage_test
     5  
     6  import (
     7  	"fmt"
     8  
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/apiserver/params"
    13  	"github.com/juju/juju/storage"
    14  	"github.com/juju/juju/storage/provider"
    15  )
    16  
    17  type poolUpdateSuite struct {
    18  	baseStorageSuite
    19  }
    20  
    21  var _ = gc.Suite(&poolUpdateSuite{})
    22  
    23  func (s *poolUpdateSuite) createPools(c *gc.C, num int) {
    24  	var err error
    25  	for i := 0; i < num; i++ {
    26  		poolName := fmt.Sprintf("%v%v", tstName, i)
    27  		s.baseStorageSuite.pools[poolName], err =
    28  			storage.NewConfig(poolName, provider.LoopProviderType, map[string]interface{}{
    29  				"zip":  "zap",
    30  				"beep": "boop",
    31  			})
    32  		c.Assert(err, jc.ErrorIsNil)
    33  	}
    34  }
    35  
    36  func (s *poolUpdateSuite) TestUpdatePool(c *gc.C) {
    37  	s.createPools(c, 1)
    38  	poolName := fmt.Sprintf("%v%v", tstName, 0)
    39  	newAttrs := map[string]interface{}{
    40  		"foo1": "bar1",
    41  		"zip":  "zoom",
    42  	}
    43  
    44  	args := params.StoragePoolArgs{
    45  		Pools: []params.StoragePool{{
    46  			Name:  poolName,
    47  			Attrs: newAttrs,
    48  		}},
    49  	}
    50  	results, err := s.api.UpdatePool(args)
    51  	c.Assert(err, jc.ErrorIsNil)
    52  	c.Assert(results.Results, gc.HasLen, 1)
    53  	c.Assert(results.Results[0].Error, gc.IsNil)
    54  
    55  	expected, err := storage.NewConfig(poolName, provider.LoopProviderType, newAttrs)
    56  	c.Assert(err, jc.ErrorIsNil)
    57  
    58  	pools, err := s.poolManager.List()
    59  	c.Assert(err, jc.ErrorIsNil)
    60  	c.Assert(pools, gc.HasLen, 1)
    61  	c.Assert(pools[0], gc.DeepEquals, expected)
    62  }
    63  
    64  func (s *poolUpdateSuite) TestUpdatePoolError(c *gc.C) {
    65  	poolName := fmt.Sprintf("%v%v", tstName, 0)
    66  	args := params.StoragePoolArgs{
    67  		Pools: []params.StoragePool{{
    68  			Name: poolName,
    69  		}},
    70  	}
    71  	results, err := s.api.UpdatePool(args)
    72  	c.Assert(err, gc.IsNil)
    73  	c.Assert(results.Results, gc.HasLen, 1)
    74  	c.Assert(results.Results[0].Error, jc.DeepEquals, &params.Error{
    75  		Message: "mock pool manager: get pool testpool0 not found",
    76  		Code:    "not found",
    77  	})
    78  }