diff --git a/cmd/fabric-ca-client/enroll.go b/cmd/fabric-ca-client/enroll.go index a775145a1..d1dd93135 100644 --- a/cmd/fabric-ca-client/enroll.go +++ b/cmd/fabric-ca-client/enroll.go @@ -38,8 +38,7 @@ var enrollCmd = &cobra.Command{ Long: "Enroll identity with fabric-ca server", RunE: func(cmd *cobra.Command, args []string) error { if len(args) > 0 { - cmd.Help() - return nil + return fmt.Errorf(extraArgsError, args, cmd.UsageString()) } err := runEnroll(cmd) diff --git a/cmd/fabric-ca-client/getcacert.go b/cmd/fabric-ca-client/getcacert.go index 951778ead..7216b2595 100644 --- a/cmd/fabric-ca-client/getcacert.go +++ b/cmd/fabric-ca-client/getcacert.go @@ -37,8 +37,7 @@ var getCACertCmd = &cobra.Command{ Short: "Get CA certificate chain", RunE: func(cmd *cobra.Command, args []string) error { if len(args) > 0 { - cmd.Help() - return nil + return fmt.Errorf(extraArgsError, args, cmd.UsageString()) } err := runGetCACert() if err != nil { diff --git a/cmd/fabric-ca-client/main.go b/cmd/fabric-ca-client/main.go index 711e541c4..b3d5459b2 100644 --- a/cmd/fabric-ca-client/main.go +++ b/cmd/fabric-ca-client/main.go @@ -54,6 +54,7 @@ var rootCmd = &cobra.Command{ const ( fabricCAClientProfileMode = "FABRIC_CA_CLIENT_PROFILE_MODE" + extraArgsError = "Unrecognized arguments found: %v\n\n%s" ) var ( diff --git a/cmd/fabric-ca-client/main_test.go b/cmd/fabric-ca-client/main_test.go index a6c7a068d..991c0989e 100644 --- a/cmd/fabric-ca-client/main_test.go +++ b/cmd/fabric-ca-client/main_test.go @@ -34,6 +34,7 @@ import ( "github.com/hyperledger/fabric-ca/lib" "github.com/hyperledger/fabric-ca/lib/dbutil" "github.com/hyperledger/fabric-ca/util" + "github.com/stretchr/testify/assert" ) const ( @@ -109,6 +110,24 @@ var ( srv *lib.Server ) +type TestData struct { + input []string // input +} + +func TestExtraArguments(t *testing.T) { + errCases := []TestData{ + {[]string{cmdName, "enroll", "extraArg", "extraArg2"}}, + {[]string{cmdName, "reenroll", "extraArg", "extraArg2"}}, + {[]string{cmdName, "register", "extraArg", "extraArg2"}}, + {[]string{cmdName, "revoke", "extraArg", "extraArg2"}}, + {[]string{cmdName, "getcacert", "extraArg", "extraArg2"}}, + } + + for _, e := range errCases { + extraArgErrorTest(&e, t) + } +} + // TestCreateDefaultConfigFile test to make sure default config file gets generated correctly func TestCreateDefaultConfigFile(t *testing.T) { defYaml = util.GetDefaultConfigFile("fabric-ca-client") @@ -118,7 +137,7 @@ func TestCreateDefaultConfigFile(t *testing.T) { err := RunMain([]string{cmdName, "enroll", "-u", enrollURL, "-m", myhost}) if err == nil { - t.Errorf("No username/password provided, should have errored") + t.Errorf("No server running, should have failed") } fileBytes, err := ioutil.ReadFile(defYaml) @@ -780,3 +799,15 @@ func getSerialAKIByID(id string) (serial, aki string, err error) { return } + +func extraArgErrorTest(in *TestData, t *testing.T) { + err := RunMain(in.input) + if err == nil { + assert.Error(t, errors.New("Should have resulted in an error as extra agruments provided")) + } + if err != nil { + if !strings.Contains(err.Error(), "Extra arguments") { + assert.Error(t, fmt.Errorf("Failed for other reason besides extra argument: %s", err)) + } + } +} diff --git a/cmd/fabric-ca-client/reenroll.go b/cmd/fabric-ca-client/reenroll.go index 739499bc9..3bec5ebd7 100644 --- a/cmd/fabric-ca-client/reenroll.go +++ b/cmd/fabric-ca-client/reenroll.go @@ -31,7 +31,13 @@ var reenrollCmd = &cobra.Command{ Use: "reenroll", Short: "Reenroll an identity", Long: "Reenroll an identity with fabric-ca server", + // PreRunE block for this command will check to make sure enrollment + // information exists before running the command PreRunE: func(cmd *cobra.Command, args []string) error { + if len(args) > 0 { + return fmt.Errorf(extraArgsError, args, cmd.UsageString()) + } + err := configInit(cmd.Name()) if err != nil { return err @@ -42,11 +48,6 @@ var reenrollCmd = &cobra.Command{ return nil }, RunE: func(cmd *cobra.Command, args []string) error { - if len(args) > 0 { - cmd.Help() - return nil - } - err := runReenroll() if err != nil { return err diff --git a/cmd/fabric-ca-client/register.go b/cmd/fabric-ca-client/register.go index e2462a534..0042dc0fa 100644 --- a/cmd/fabric-ca-client/register.go +++ b/cmd/fabric-ca-client/register.go @@ -30,7 +30,13 @@ var registerCmd = &cobra.Command{ Use: "register", Short: "Register an identity", Long: "Register an identity with fabric-ca server", + // PreRunE block for this command will check to make sure enrollment + // information exists before running the command PreRunE: func(cmd *cobra.Command, args []string) error { + if len(args) > 0 { + return fmt.Errorf(extraArgsError, args, cmd.UsageString()) + } + err := configInit(cmd.Name()) if err != nil { return err @@ -41,11 +47,6 @@ var registerCmd = &cobra.Command{ return nil }, RunE: func(cmd *cobra.Command, args []string) error { - if len(args) > 0 { - cmd.Help() - return nil - } - err := runRegister() if err != nil { return err diff --git a/cmd/fabric-ca-client/revoke.go b/cmd/fabric-ca-client/revoke.go index 9f1c10541..b0ae2da40 100644 --- a/cmd/fabric-ca-client/revoke.go +++ b/cmd/fabric-ca-client/revoke.go @@ -18,6 +18,7 @@ package main import ( "errors" + "fmt" "path/filepath" "github.com/cloudflare/cfssl/log" @@ -33,7 +34,13 @@ var revokeCmd = &cobra.Command{ Use: "revoke", Short: "Revoke an identity", Long: "Revoke an identity with fabric-ca server", + // PreRunE block for this command will check to make sure enrollment + // information exists before running the command PreRunE: func(cmd *cobra.Command, args []string) error { + if len(args) > 0 { + return fmt.Errorf(extraArgsError, args, cmd.UsageString()) + } + err := configInit(cmd.Name()) if err != nil { return err @@ -44,11 +51,6 @@ var revokeCmd = &cobra.Command{ return nil }, RunE: func(cmd *cobra.Command, args []string) error { - if len(args) > 0 { - cmd.Help() - return nil - } - err := runRevoke(cmd) if err != nil { return err