func (s *shareSuite) TestInit(c *gc.C) { wrappedCmd, shareCmd := environment.NewShareCommand(s.fake) err := testing.InitCommand(wrappedCmd, []string{}) c.Assert(err, gc.ErrorMatches, "no users specified") err = testing.InitCommand(wrappedCmd, []string{"bob@local", "sam"}) c.Assert(err, jc.ErrorIsNil) c.Assert(shareCmd.Users[0], gc.Equals, names.NewUserTag("bob@local")) c.Assert(shareCmd.Users[1], gc.Equals, names.NewUserTag("sam")) err = testing.InitCommand(wrappedCmd, []string{"not valid/0"}) c.Assert(err, gc.ErrorMatches, `invalid username: "******"`) }
func (s *shareSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { command := environment.NewShareCommand(s.fake) return testing.RunCommand(c, envcmd.Wrap(command), args...) }
// registerCommands registers commands in the specified registry. func registerCommands(r commandRegistry, ctx *cmd.Context) { // Creation commands. r.Register(newBootstrapCommand()) r.Register(newDeployCommand()) r.Register(newAddRelationCommand()) // Destruction commands. r.Register(newRemoveRelationCommand()) r.Register(newRemoveServiceCommand()) r.Register(newRemoveUnitCommand()) // Reporting commands. r.Register(status.NewStatusCommand()) r.Register(newSwitchCommand()) r.Register(newEndpointCommand()) r.Register(newAPIInfoCommand()) r.Register(status.NewStatusHistoryCommand()) // Error resolution and debugging commands. r.Register(newRunCommand()) r.Register(newSCPCommand()) r.Register(newSSHCommand()) r.Register(newResolvedCommand()) r.Register(newDebugLogCommand()) r.Register(newDebugHooksCommand()) // Configuration commands. r.Register(newInitCommand()) r.Register(common.NewGetConstraintsCommand()) r.Register(common.NewSetConstraintsCommand()) r.Register(newExposeCommand()) r.Register(newSyncToolsCommand()) r.Register(newUnexposeCommand()) r.Register(newUpgradeJujuCommand(nil)) r.Register(newUpgradeCharmCommand()) // Charm publishing commands. r.Register(newPublishCommand()) // Charm tool commands. r.Register(newHelpToolCommand()) // Manage backups. r.Register(backups.NewSuperCommand()) // Manage authorized ssh keys. r.Register(newAuthorizedKeysCommand()) // Manage users and access r.Register(user.NewAddCommand()) r.Register(user.NewChangePasswordCommand()) r.Register(user.NewCredentialsCommand()) r.Register(user.NewShowUserCommand()) r.Register(user.NewListCommand()) r.Register(user.NewEnableCommand()) r.Register(user.NewDisableCommand()) // Manage cached images r.Register(cachedimages.NewSuperCommand()) // Manage machines r.Register(machine.NewSuperCommand()) r.RegisterSuperAlias("add-machine", "machine", "add", nil) r.RegisterSuperAlias("remove-machine", "machine", "remove", nil) r.RegisterSuperAlias("destroy-machine", "machine", "remove", nil) r.RegisterSuperAlias("terminate-machine", "machine", "remove", nil) // Mangage environment r.Register(environment.NewGetCommand()) r.Register(environment.NewSetCommand()) r.Register(environment.NewUnsetCommand()) r.Register(environment.NewRetryProvisioningCommand()) r.Register(environment.NewDestroyCommand()) r.Register(environment.NewShareCommand()) r.Register(environment.NewUnshareCommand()) r.Register(environment.NewUsersCommand()) // Manage and control actions r.Register(action.NewSuperCommand()) // Manage state server availability r.Register(newEnsureAvailabilityCommand()) // Manage and control services r.Register(service.NewSuperCommand()) r.RegisterSuperAlias("add-unit", "service", "add-unit", nil) r.RegisterSuperAlias("get", "service", "get", nil) r.RegisterSuperAlias("set", "service", "set", nil) r.RegisterSuperAlias("unset", "service", "unset", nil) // Operation protection commands r.Register(block.NewSuperBlockCommand()) r.Register(block.NewUnblockCommand()) // Manage storage r.Register(storage.NewSuperCommand()) // Manage spaces r.Register(space.NewSuperCommand()) // Manage subnets r.Register(subnet.NewSuperCommand()) // Manage controllers r.Register(controller.NewCreateEnvironmentCommand()) r.Register(controller.NewDestroyCommand()) r.Register(controller.NewEnvironmentsCommand()) r.Register(controller.NewKillCommand()) r.Register(controller.NewListCommand()) r.Register(controller.NewListBlocksCommand()) r.Register(controller.NewLoginCommand()) r.Register(controller.NewRemoveBlocksCommand()) r.Register(controller.NewUseEnvironmentCommand()) // Commands registered elsewhere. for _, newCommand := range registeredCommands { command := newCommand() r.Register(command) } for _, newCommand := range registeredEnvCommands { command := newCommand() r.Register(envcmd.Wrap(command)) } }