diff --git a/cmd/cli/app/upload.go b/cmd/cli/app/upload.go index a86fde31667741c58e6fd3993fa344785fbef7df..cc0d1290801125ac3a0bc785ff47cbc59e3bc38a 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 c0889420e79a686bbffa616d763bac402f47bad0..ed5b9502311e60776c0b28a9396a83f97384ef46 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