func (s *addSuite) TestInit(c *gc.C) { for i, test := range []struct { args []string err string name string owner string values map[string]interface{} }{ { err: "model name is required", }, { args: []string{"new-model"}, name: "new-model", }, { args: []string{"new-model", "--owner", "foo"}, name: "new-model", owner: "foo", }, { args: []string{"new-model", "--owner", "not=valid"}, err: `"not=valid" is not a valid user`, }, { args: []string{"new-model", "--credential", "secrets"}, err: `invalid cloud credential secrets, expected <cloud>:<credential-name>`, }, { args: []string{"new-model", "--config", "key=value", "--config", "key2=value2"}, name: "new-model", values: map[string]interface{}{"key": "value", "key2": "value2"}, }, } { c.Logf("test %d", i) wrappedCommand, command := controller.NewAddModelCommandForTest(nil, s.store, s.store) err := testing.InitCommand(wrappedCommand, test.args) if test.err != "" { c.Assert(err, gc.ErrorMatches, test.err) continue } c.Assert(err, jc.ErrorIsNil) c.Assert(command.Name, gc.Equals, test.name) c.Assert(command.Owner, gc.Equals, test.owner) attrs, err := command.Config.ReadAttrs(nil) c.Assert(err, jc.ErrorIsNil) if len(test.values) == 0 { c.Assert(attrs, gc.HasLen, 0) } else { c.Assert(attrs, jc.DeepEquals, test.values) } } }
func (s *AddModelSuite) TestInit(c *gc.C) { modelNameErr := "%q is not a valid name: model names may only contain lowercase letters, digits and hyphens" for i, test := range []struct { args []string err string name string owner string cloudRegion string values map[string]interface{} }{ { err: "model name is required", }, { args: []string{"new-model"}, name: "new-model", }, { args: []string{"n"}, name: "n", }, { args: []string{"new model"}, err: fmt.Sprintf(modelNameErr, "new model"), }, { args: []string{"newModel"}, err: fmt.Sprintf(modelNameErr, "newModel"), }, { args: []string{"-"}, err: fmt.Sprintf(modelNameErr, "-"), }, { args: []string{"new@model"}, err: fmt.Sprintf(modelNameErr, "new@model"), }, { args: []string{"new-model", "--owner", "foo"}, name: "new-model", owner: "foo", }, { args: []string{"new-model", "--owner", "not=valid"}, err: `"not=valid" is not a valid user`, }, { args: []string{"new-model", "--config", "key=value", "--config", "key2=value2"}, name: "new-model", values: map[string]interface{}{"key": "value", "key2": "value2"}, }, { args: []string{"new-model", "cloud/region"}, name: "new-model", cloudRegion: "cloud/region", }, { args: []string{"new-model", "cloud/region", "extra", "args"}, err: `unrecognized args: \["extra" "args"\]`, }, } { c.Logf("test %d", i) wrappedCommand, command := controller.NewAddModelCommandForTest(nil, nil, nil, s.store) err := testing.InitCommand(wrappedCommand, test.args) if test.err != "" { c.Assert(err, gc.ErrorMatches, test.err) continue } c.Assert(err, jc.ErrorIsNil) c.Assert(command.Name, gc.Equals, test.name) c.Assert(command.Owner, gc.Equals, test.owner) c.Assert(command.CloudRegion, gc.Equals, test.cloudRegion) attrs, err := command.Config.ReadAttrs(nil) c.Assert(err, jc.ErrorIsNil) if len(test.values) == 0 { c.Assert(attrs, gc.HasLen, 0) } else { c.Assert(attrs, jc.DeepEquals, test.values) } } }
func (s *addSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { command, _ := controller.NewAddModelCommandForTest(s.fake, s.store, s.store) return testing.RunCommand(c, command, args...) }
func (s *AddModelSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { command, _ := controller.NewAddModelCommandForTest(&fakeAPIConnection{}, s.fakeAddModelAPI, s.fakeCloudAPI, s.store) return testing.RunCommand(c, command, args...) }