github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/oracle/storage_provider_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package oracle_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	gitjujutesting "github.com/juju/testing"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/environs"
    13  	"github.com/juju/juju/provider/oracle"
    14  	oracletesting "github.com/juju/juju/provider/oracle/testing"
    15  	"github.com/juju/juju/storage"
    16  	"github.com/juju/juju/testing"
    17  )
    18  
    19  type storageProviderSuite struct {
    20  	gitjujutesting.IsolationSuite
    21  }
    22  
    23  var _ = gc.Suite(&storageProviderSuite{})
    24  
    25  func NewStorageProviderTest(c *gc.C) storage.Provider {
    26  	env, err := oracle.NewOracleEnviron(
    27  		&oracle.EnvironProvider{},
    28  		environs.OpenParams{
    29  			Config: testing.ModelConfig(c),
    30  		},
    31  		oracletesting.DefaultEnvironAPI,
    32  		&advancingClock,
    33  	)
    34  
    35  	c.Assert(err, gc.IsNil)
    36  	c.Assert(env, gc.NotNil)
    37  
    38  	provider, err := env.StorageProvider(
    39  		oracle.DefaultStorageProviderType,
    40  	)
    41  
    42  	c.Assert(err, gc.IsNil)
    43  	c.Assert(provider, gc.NotNil)
    44  
    45  	return provider
    46  }
    47  
    48  func (s *storageProviderSuite) NewStorageProvider(c *gc.C) storage.Provider {
    49  	return NewStorageProviderTest(c)
    50  }
    51  
    52  func (s *storageProviderSuite) TestVolumeSource(c *gc.C) {
    53  	provider := s.NewStorageProvider(c)
    54  	source, err := provider.VolumeSource(nil)
    55  	c.Assert(err, gc.IsNil)
    56  	c.Assert(source, gc.NotNil)
    57  	cfg, err := storage.NewConfig("oracle-latency", oracle.DefaultTypes[0],
    58  		map[string]interface{}{
    59  			oracle.OracleVolumeType: oracle.OracleLatencyPool,
    60  		})
    61  	c.Assert(err, gc.IsNil)
    62  	c.Assert(cfg, gc.NotNil)
    63  
    64  	source, err = provider.VolumeSource(cfg)
    65  	c.Assert(err, gc.IsNil)
    66  	c.Assert(source, gc.NotNil)
    67  }
    68  
    69  func (s *storageProviderSuite) TestFileSystemSource(c *gc.C) {
    70  	provider := s.NewStorageProvider(c)
    71  
    72  	_, err := provider.FilesystemSource(nil)
    73  	c.Assert(err, gc.NotNil)
    74  	c.Assert(errors.IsNotSupported(err), jc.IsTrue)
    75  }
    76  
    77  func (s *storageProviderSuite) TestSupports(c *gc.C) {
    78  	provider := s.NewStorageProvider(c)
    79  
    80  	ok := provider.Supports(storage.StorageKindBlock)
    81  	c.Assert(ok, jc.IsTrue)
    82  
    83  	ok = provider.Supports(storage.StorageKindFilesystem)
    84  	c.Assert(ok, jc.IsFalse)
    85  }
    86  
    87  func (s *storageProviderSuite) TestScope(c *gc.C) {
    88  	provider := s.NewStorageProvider(c)
    89  
    90  	scope := provider.Scope()
    91  	c.Assert(scope, jc.DeepEquals, storage.ScopeEnviron)
    92  }
    93  
    94  func (s *storageProviderSuite) TestDynamic(c *gc.C) {
    95  	provider := s.NewStorageProvider(c)
    96  
    97  	ok := provider.Dynamic()
    98  	c.Assert(ok, jc.IsTrue)
    99  }
   100  
   101  func (s *storageProviderSuite) TestDefaultPools(c *gc.C) {
   102  	provider := s.NewStorageProvider(c)
   103  	cfg := provider.DefaultPools()
   104  	c.Assert(cfg, gc.NotNil)
   105  }
   106  
   107  func (s *storageProviderSuite) TestValidateConfig(c *gc.C) {
   108  	provider := s.NewStorageProvider(c)
   109  	cfg, err := storage.NewConfig("oracle-latency", oracle.DefaultTypes[0],
   110  		map[string]interface{}{
   111  			oracle.OracleVolumeType: oracle.OracleLatencyPool,
   112  		})
   113  	c.Assert(err, gc.IsNil)
   114  	err = provider.ValidateConfig(cfg)
   115  	c.Assert(err, gc.IsNil)
   116  }
   117  
   118  func (s *storageProviderSuite) TestValidateConfigWithError(c *gc.C) {
   119  	provider := s.NewStorageProvider(c)
   120  	cfg, err := storage.NewConfig("some-test-name", oracle.DefaultTypes[0],
   121  		map[string]interface{}{
   122  			"some-werid-type": 321,
   123  		})
   124  	c.Assert(err, gc.IsNil)
   125  
   126  	err = provider.ValidateConfig(cfg)
   127  	c.Assert(err, gc.IsNil)
   128  
   129  	cfg, err = storage.NewConfig("some-test-name", oracle.DefaultTypes[0],
   130  		map[string]interface{}{
   131  			oracle.OracleVolumeType: 321,
   132  		})
   133  	c.Assert(err, gc.IsNil)
   134  
   135  	err = provider.ValidateConfig(cfg)
   136  	c.Assert(err, gc.NotNil)
   137  
   138  	cfg, err = storage.NewConfig("some-test-name", oracle.DefaultTypes[0],
   139  		map[string]interface{}{
   140  			oracle.OracleVolumeType: "some-string",
   141  		})
   142  	c.Assert(err, gc.IsNil)
   143  
   144  	err = provider.ValidateConfig(cfg)
   145  	c.Assert(err, gc.NotNil)
   146  }