// Schema returns the configuration schema for an environment. func (environProvider) Schema() environschema.Fields { fields, err := config.Schema(configSchema) if err != nil { panic(err) } return fields }
func (*ConfigSuite) TestSchema(c *gc.C) { fields := providerInstance.Schema() // Check that all the fields defined in environs/config // are in the returned schema. globalFields, err := config.Schema(nil) c.Assert(err, gc.IsNil) for name, field := range globalFields { c.Check(fields[name], jc.DeepEquals, field) } }
func (s *ConfigSuite) TestSchemaWithExtraOverlap(c *gc.C) { schema, err := config.Schema(environschema.Fields{ "type": environschema.Attr{ Description: "duplicate", Type: environschema.Tstring, }, }) c.Assert(err, gc.ErrorMatches, `config field "type" clashes with global config`) c.Assert(schema, gc.IsNil) }
func (s *ConfigSuite) TestSchemaNoExtra(c *gc.C) { schema, err := config.Schema(nil) c.Assert(err, gc.IsNil) orig := make(environschema.Fields) for name, field := range config.ConfigSchema { orig[name] = field } c.Assert(schema, jc.DeepEquals, orig) // Check that we actually returned a copy, not the original. schema["foo"] = environschema.Attr{} _, ok := orig["foo"] c.Assert(ok, jc.IsFalse) }
func (s *ConfigSuite) TestSchemaWithExtraFields(c *gc.C) { extraField := environschema.Attr{ Description: "fooish", Type: environschema.Tstring, } schema, err := config.Schema(environschema.Fields{ "foo": extraField, }) c.Assert(err, gc.IsNil) c.Assert(schema["foo"], gc.DeepEquals, extraField) delete(schema, "foo") orig := make(environschema.Fields) for name, field := range config.ConfigSchema { orig[name] = field } c.Assert(schema, jc.DeepEquals, orig) }