From 8d357d44cd6a388ecf03ea43233722d4f3840f7a Mon Sep 17 00:00:00 2001 From: Riyaz Faizullabhoy Date: Tue, 19 Apr 2016 10:08:24 -0700 Subject: [PATCH] Error unit tests for bad cli input, include trustpinning merge Signed-off-by: Riyaz Faizullabhoy --- cmd/notary/main_test.go | 49 +++++++++++++++++++++++++++++++++++++++++ cmd/notary/tuf.go | 7 +++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/cmd/notary/main_test.go b/cmd/notary/main_test.go index 14f3b2df88..e11793414c 100644 --- a/cmd/notary/main_test.go +++ b/cmd/notary/main_test.go @@ -98,6 +98,55 @@ func TestRemoteServerCommandLineFlagOverridesConfig(t *testing.T) { require.Equal(t, "http://overridden", getRemoteTrustServer(config)) } +// invalid commands for `notary addhash` +func TestInvalidAddHashCommands(t *testing.T) { + tempDir := tempDirWithConfig(t, `{"remote_server": {"url": "https://myserver"}}`) + defer os.RemoveAll(tempDir) + configFile := filepath.Join(tempDir, "config.json") + + b := new(bytes.Buffer) + cmd := NewNotaryCommand() + cmd.SetOutput(b) + + // No hashes given + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "10")) + err := cmd.Execute() + require.Error(t, err) + require.Contains(t, err.Error(), "Must specify a GUN, target, byte size of target data, and at least one hash") + + // Invalid byte size given + cmd = NewNotaryCommand() + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "sizeNotAnInt", "--sha256", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) + err = cmd.Execute() + require.Error(t, err) + + // Invalid sha256 size given + cmd = NewNotaryCommand() + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "1", "--sha256", "a")) + err = cmd.Execute() + require.Error(t, err) + require.Contains(t, err.Error(), "invalid sha256 hex contents provided") + + // Invalid sha256 hex given + cmd = NewNotaryCommand() + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "1", "--sha256", "***aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa***")) + err = cmd.Execute() + require.Error(t, err) + + // Invalid sha512 size given + cmd = NewNotaryCommand() + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "1", "--sha512", "a")) + err = cmd.Execute() + require.Error(t, err) + require.Contains(t, err.Error(), "invalid sha512 hex contents provided") + + // Invalid sha512 hex given + cmd = NewNotaryCommand() + cmd.SetArgs(append([]string{"-c", configFile, "-d", tempDir}, "addhash", "gun", "test", "1", "--sha512", "***aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa******aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa***")) + err = cmd.Execute() + require.Error(t, err) +} + var exampleValidCommands = []string{ "init repo", "list repo", diff --git a/cmd/notary/tuf.go b/cmd/notary/tuf.go index 78a41a051e..ca6860914f 100644 --- a/cmd/notary/tuf.go +++ b/cmd/notary/tuf.go @@ -139,10 +139,15 @@ func (t *tufCommander) tufAddByHash(cmd *cobra.Command, args []string) error { return err } + trustPin, err := getTrustPinning(config) + if err != nil { + return err + } + // no online operations are performed by add so the transport argument // should be nil nRepo, err := notaryclient.NewNotaryRepository( - config.GetString("trust_dir"), gun, getRemoteTrustServer(config), nil, t.retriever) + config.GetString("trust_dir"), gun, getRemoteTrustServer(config), nil, t.retriever, trustPin) if err != nil { return err }