From fbaa3ff8662a85ef4eaff571c58e8fce6d8806af Mon Sep 17 00:00:00 2001
From: Dan Lorenc <dlorenc@google.com>
Date: Mon, 4 Jan 2021 13:06:20 -0600
Subject: [PATCH] Add a second test to make sure duplicates are detected.

---
 cmd/cli/app/upload.go | 11 +++++++++--
 tests/e2e-test.sh     | 17 +++++++++++++++--
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/cmd/cli/app/upload.go b/cmd/cli/app/upload.go
index a86fde3..cc0d129 100644
--- a/cmd/cli/app/upload.go
+++ b/cmd/cli/app/upload.go
@@ -16,6 +16,7 @@ limitations under the License.
 package app
 
 import (
+	"fmt"
 	"os"
 
 	"github.com/projectrekor/rekor/pkg/generated/client/entries"
@@ -57,10 +58,16 @@ var uploadCmd = &cobra.Command{
 
 		resp, err := rekorClient.Entries.CreateLogEntry(params)
 		if err != nil {
-			log.Fatal(err)
+			switch err.(type) {
+			case *entries.CreateLogEntryConflict:
+				fmt.Println("Entry already exists.")
+				return
+			default:
+				log.Fatal(err)
+			}
 		}
 
-		log.Infof("Created entry at: %v%v", viper.GetString("rekor_server"), resp.Location)
+		fmt.Printf("Created entry at: %v%v\n", viper.GetString("rekor_server"), resp.Location)
 	},
 }
 
diff --git a/tests/e2e-test.sh b/tests/e2e-test.sh
index c088942..ed5b950 100755
--- a/tests/e2e-test.sh
+++ b/tests/e2e-test.sh
@@ -6,6 +6,19 @@ docker-compose up -d
 
 # Node
 nodedir=${testdir}/node
-go run ./cmd/cli/ upload \
+
+# First time we should get "Created entry"
+out=$(go run ./cmd/cli/ upload \
+    --artifact $(< ${nodedir}/url) --sha $(< ${nodedir}/sha) \
+    --signature=${nodedir}/sig  --public-key=${nodedir}/key)
+if [[ $out != *"Created entry at"* ]]; then
+    echo "Expected 'Created entry at', got $out"
+fi
+
+# Second time we should get "Entry already exists"
+out=$(go run ./cmd/cli/ upload \
     --artifact $(< ${nodedir}/url) --sha $(< ${nodedir}/sha) \
-    --signature=${nodedir}/sig  --public-key=${nodedir}/key
\ No newline at end of file
+    --signature=${nodedir}/sig  --public-key=${nodedir}/key)
+if [[ $out != *"Entry already exists"* ]]; then
+    echo "Expected 'Created entry at', got $out"
+fi
-- 
GitLab