func (s *ImportKeySuite) TestImportKeys(c *gc.C) { key1 := sshtesting.ValidKeyOne.Key + " user@host" s.setAuthorizedKeys(c, key1) context, err := coretesting.RunCommand(c, envcmd.Wrap(&ImportKeysCommand{}), "lp:validuser", "invalid-key") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Matches, `cannot import key id "invalid-key".*\n`) s.assertEnvironKeys(c, key1, sshtesting.ValidKeyThree.Key) }
func (s *destroyEnvSuite) TestDestroyEnvironmentCommandEmptyJenv(c *gc.C) { _, err := s.ConfigStore.CreateInfo("emptyenv") c.Assert(err, gc.IsNil) context, err := coretesting.RunCommand(c, new(DestroyEnvironmentCommand), "-e", "emptyenv") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Equals, "removing empty environment file\n") }
func (s *BootstrapSuite) TestMissingToolsUploadFailedError(c *gc.C) { s.setupAutoUploadTest(c, "1.7.3", "precise") s.PatchValue(&sync.Upload, uploadToolsAlwaysFails) ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{})) c.Check(coretesting.Stderr(ctx), gc.Matches, "uploading tools for series \\[precise .* raring\\]\n") c.Check(err, gc.ErrorMatches, "cannot upload bootstrap tools: an error") }
func (s *AddKeySuite) TestAddKey(c *gc.C) { key1 := sshtesting.ValidKeyOne.Key + " user@host" s.setAuthorizedKeys(c, key1) key2 := sshtesting.ValidKeyTwo.Key + " another@host" context, err := coretesting.RunCommand(c, envcmd.Wrap(&AddKeysCommand{}), key2, "invalid-key") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Matches, `cannot add key "invalid-key".*\n`) s.assertEnvironKeys(c, key1, key2) }
func (s *DeploySuite) TestUpgradeReportsDeprecated(c *gc.C) { coretesting.Charms.ClonedDirPath(s.SeriesPath, "dummy") ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&DeployCommand{}), "local:dummy", "-u") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stdout(ctx), gc.Equals, "") output := strings.Split(coretesting.Stderr(ctx), "\n") c.Check(output[0], gc.Matches, `Added charm ".*" to the environment.`) c.Check(output[1], gc.Equals, "--upgrade (or -u) is deprecated and ignored; charms are always deployed with a unique revision.") }
func (s *SuperCommandSuite) TestMissingCallbackErrors(c *gc.C) { callback := func(ctx *cmd.Context, subcommand string, args []string) error { return fmt.Errorf("command not found %q", subcommand) } ctx := testing.Context(c) code := cmd.Main(NewSuperWithCallback(callback), ctx, []string{"foo"}) c.Assert(code, gc.Equals, 1) c.Assert(testing.Stdout(ctx), gc.Equals, "") c.Assert(testing.Stderr(ctx), gc.Equals, "ERROR command not found \"foo\"\n") }
func (s *ImportKeySuite) TestImportKeyNonDefaultUser(c *gc.C) { key1 := sshtesting.ValidKeyOne.Key + " user@host" s.setAuthorizedKeys(c, key1) _, err := s.State.AddUser("fred", "password") c.Assert(err, gc.IsNil) context, err := coretesting.RunCommand(c, envcmd.Wrap(&ImportKeysCommand{}), "--user", "fred", "lp:validuser") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Equals, "") s.assertEnvironKeys(c, key1, sshtesting.ValidKeyThree.Key) }
func (s *DeleteKeySuite) TestDeleteKeys(c *gc.C) { key1 := sshtesting.ValidKeyOne.Key + " user@host" key2 := sshtesting.ValidKeyTwo.Key + " another@host" s.setAuthorizedKeys(c, key1, key2) context, err := coretesting.RunCommand(c, envcmd.Wrap(&DeleteKeysCommand{}), sshtesting.ValidKeyTwo.Fingerprint, "invalid-key") c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Matches, `cannot delete key id "invalid-key".*\n`) s.assertEnvironKeys(c, key1) }
func (s *RunSuite) TestSingleResponse(c *gc.C) { mock := s.setupMockAPI() mock.setMachinesAlive("0") mockResponse := mockResponse{ stdout: "stdout\n", stderr: "stderr\n", code: 42, machineId: "0", } mock.setResponse("0", mockResponse) unformatted := ConvertRunResults([]params.RunResult{ makeRunResult(mockResponse)}) yamlFormatted, err := cmd.FormatYaml(unformatted) c.Assert(err, gc.IsNil) jsonFormatted, err := cmd.FormatJson(unformatted) c.Assert(err, gc.IsNil) for i, test := range []struct { message string format string stdout string stderr string errorMatch string }{{ message: "smart (default)", stdout: "stdout\n", stderr: "stderr\n", errorMatch: "subprocess encountered error code 42", }, { message: "yaml output", format: "yaml", stdout: string(yamlFormatted) + "\n", }, { message: "json output", format: "json", stdout: string(jsonFormatted) + "\n", }} { c.Log(fmt.Sprintf("%v: %s", i, test.message)) args := []string{} if test.format != "" { args = append(args, "--format", test.format) } args = append(args, "--all", "ignored") context, err := testing.RunCommand(c, envcmd.Wrap(&RunCommand{}), args...) if test.errorMatch != "" { c.Check(err, gc.ErrorMatches, test.errorMatch) } else { c.Check(err, gc.IsNil) } c.Check(testing.Stdout(context), gc.Equals, test.stdout) c.Check(testing.Stderr(context), gc.Equals, test.stderr) } }
func (s *SuperCommandSuite) TestMissingCallbackContextWiredIn(c *gc.C) { callback := func(ctx *cmd.Context, subcommand string, args []string) error { fmt.Fprintf(ctx.Stdout, "this is std out") fmt.Fprintf(ctx.Stderr, "this is std err") return nil } ctx := testing.Context(c) code := cmd.Main(NewSuperWithCallback(callback), ctx, []string{"foo", "bar", "baz", "--debug"}) c.Assert(code, gc.Equals, 0) c.Assert(testing.Stdout(ctx), gc.Equals, "this is std out") c.Assert(testing.Stderr(ctx), gc.Equals, "this is std err") }
func (s *PortsSuite) TestOpenCloseDeprecation(c *gc.C) { hctx := s.GetHookContext(c, -1, "") for _, t := range portsFormatDeprectaionTests { name := t.cmd[0] com, err := jujuc.NewCommand(hctx, name) c.Assert(err, gc.IsNil) ctx := testing.Context(c) code := cmd.Main(com, ctx, t.cmd[1:]) c.Assert(code, gc.Equals, 0) c.Assert(testing.Stdout(ctx), gc.Equals, "") c.Assert(testing.Stderr(ctx), gc.Equals, "--format flag deprecated for command \""+name+"\"") } }
func (s *DeleteKeySuite) TestDeleteKeyNonDefaultUser(c *gc.C) { key1 := sshtesting.ValidKeyOne.Key + " user@host" key2 := sshtesting.ValidKeyTwo.Key + " another@host" s.setAuthorizedKeys(c, key1, key2) _, err := s.State.AddUser("fred", "password") c.Assert(err, gc.IsNil) context, err := coretesting.RunCommand(c, envcmd.Wrap(&DeleteKeysCommand{}), "--user", "fred", sshtesting.ValidKeyTwo.Fingerprint) c.Assert(err, gc.IsNil) c.Assert(coretesting.Stderr(context), gc.Equals, "") s.assertEnvironKeys(c, key1) }
func (s *BootstrapSuite) TestNoDeprecationWithUploadSeries(c *gc.C) { ctx := s.checkSeriesArg(c, "--upload-series") c.Check(coretesting.Stderr(ctx), gc.Equals, "") }
func (s *BootstrapSuite) TestSeriesDeprecation(c *gc.C) { ctx := s.checkSeriesArg(c, "--series") c.Check(coretesting.Stderr(ctx), gc.Equals, "Use of --series is deprecated. Please use --upload-series instead.\n") }
func (s *JujuLogSuite) TestLogDeprecation(c *gc.C) { com := newJujuLogCommand(c) ctx, err := testing.RunCommand(c, com, "--format", "foo", "msg") c.Assert(err, gc.IsNil) c.Assert(testing.Stderr(ctx), gc.Equals, "--format flag deprecated for command \"juju-log\"") }