github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/caas/config_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caas_test 5 6 import ( 7 "github.com/juju/schema" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 "gopkg.in/juju/environschema.v1" 11 12 "github.com/juju/juju/caas" 13 "github.com/juju/juju/testing" 14 ) 15 16 var baseFields = environschema.Fields{ 17 caas.JujuExternalHostNameKey: { 18 Description: "the external hostname of an exposed application", 19 Type: environschema.Tstring, 20 Group: environschema.EnvironGroup, 21 }, 22 caas.JujuApplicationPath: { 23 Description: "the relative http path used to access an application", 24 Type: environschema.Tstring, 25 Group: environschema.EnvironGroup, 26 }, 27 } 28 29 var baseDefaults = schema.Defaults{ 30 caas.JujuApplicationPath: "/", 31 } 32 33 type ConfigSuite struct { 34 testing.BaseSuite 35 } 36 37 var _ = gc.Suite(&ConfigSuite{}) 38 39 func (s *ConfigSuite) TestConfigSchemaNoProviderFields(c *gc.C) { 40 fields, err := caas.ConfigSchema(nil) 41 c.Assert(err, jc.ErrorIsNil) 42 c.Assert(fields, jc.DeepEquals, baseFields) 43 } 44 45 func (s *ConfigSuite) TestConfigSchemaProviderFields(c *gc.C) { 46 extraFields := environschema.Fields{ 47 "extra": { 48 Description: "some field", 49 Type: environschema.Tstring, 50 }, 51 } 52 fields, err := caas.ConfigSchema(extraFields) 53 c.Assert(err, jc.ErrorIsNil) 54 55 expectedFields := make(environschema.Fields) 56 for name, f := range baseFields { 57 expectedFields[name] = f 58 } 59 for name, f := range extraFields { 60 expectedFields[name] = f 61 } 62 c.Assert(fields, jc.DeepEquals, expectedFields) 63 } 64 65 func (s *ConfigSuite) TestConfigSchemaProviderFieldsConflict(c *gc.C) { 66 extraFields := environschema.Fields{ 67 "juju-external-hostname": { 68 Description: "some field", 69 Type: environschema.Tstring, 70 }, 71 } 72 _, err := caas.ConfigSchema(extraFields) 73 c.Assert(err, gc.ErrorMatches, `config field "juju-external-hostname" clashes with common config`) 74 } 75 76 func (s *ConfigSuite) TestConfigDefaultsNoProviderDefaults(c *gc.C) { 77 defaults := caas.ConfigDefaults(nil) 78 c.Assert(defaults, jc.DeepEquals, baseDefaults) 79 } 80 81 func (s *ConfigSuite) TestConfigSchemaProviderDefaults(c *gc.C) { 82 extraDefaults := schema.Defaults{ 83 "extra": "extra default", 84 } 85 defaults := caas.ConfigDefaults(extraDefaults) 86 87 expectedDefaults := make(schema.Defaults) 88 for name, d := range baseDefaults { 89 expectedDefaults[name] = d 90 } 91 for name, d := range defaults { 92 expectedDefaults[name] = d 93 } 94 c.Assert(defaults, jc.DeepEquals, expectedDefaults) 95 } 96 97 func (s *ConfigSuite) TestOperatorStorageClassLabels(c *gc.C) { 98 labels := caas.OperatorStorageClassLabels("gitlab", "test") 99 c.Assert(labels, jc.DeepEquals, []string{"gitlab-operator-storage", "test", "default"}) 100 } 101 102 func (s *ConfigSuite) TestUnitStorageClassLabels(c *gc.C) { 103 labels := caas.UnitStorageClassLabels("gitlab", "test") 104 c.Assert(labels, jc.DeepEquals, []string{"gitlab-unit-storage", "test", "default"}) 105 }