From c292201c97b583448212442725e56499ed30b100 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 24 Aug 2021 19:51:42 +0200 Subject: Support document post short form --- client/go/cmd/document.go | 11 +++++------ client/go/cmd/document_test.go | 24 ++++++++++++++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/client/go/cmd/document.go b/client/go/cmd/document.go index 9f9d6a9752c..f2d7b80289d 100644 --- a/client/go/cmd/document.go +++ b/client/go/cmd/document.go @@ -26,10 +26,10 @@ func init() { var documentCmd = &cobra.Command{ Use: "document", Short: "Issue document operations", - Long: `TODO: Example mynamespace/mydocumenttype/myid document.json`, + Long: `TODO: Example vespa document mynamespace/mydocumenttype/myid document.json`, // TODO: Check args Run: func(cmd *cobra.Command, args []string) { - util.Error("Use either document post or document get") + post("", args[0]) }, } @@ -37,10 +37,9 @@ var documentPostCmd = &cobra.Command{ Use: "post", Short: "Posts the document in the given file", Long: `TODO`, - // TODO: Extract document id from the content // TODO: Check args Run: func(cmd *cobra.Command, args []string) { - if len(args) == 10 { + if len(args) == 1 { post("", args[0]) } else { post(args[0], args[1]) @@ -63,8 +62,6 @@ func get(documentId string) { } func post(documentId string, jsonFile string) { - url, _ := url.Parse(getTarget(documentContext).document + "/document/v1/" + documentId) - header := http.Header{} header.Add("Content-Type", "application/json") @@ -90,6 +87,8 @@ func post(documentId string, jsonFile string) { } } + url, _ := url.Parse(getTarget(documentContext).document + "/document/v1/" + documentId) + request := &http.Request{ URL: url, Method: "POST", diff --git a/client/go/cmd/document_test.go b/client/go/cmd/document_test.go index 410cfbb9bfd..c3930247dcd 100644 --- a/client/go/cmd/document_test.go +++ b/client/go/cmd/document_test.go @@ -13,11 +13,18 @@ import ( ) func TestDocumentPostWithIdArg(t *testing.T) { - assertDocumentPost("mynamespace/music/docid/1", "testdata/A-Head-Full-of-Dreams.json", t) + assertDocumentPost([]string{"document", "post", "mynamespace/music/docid/1", "testdata/A-Head-Full-of-Dreams.json"}, + "mynamespace/music/docid/1", "testdata/A-Head-Full-of-Dreams.json", t) } func TestDocumentPostWithIdInDocument(t *testing.T) { - assertDocumentPost("", "testdata/A-Head-Full-of-Dreams-With-Id.json", t) + assertDocumentPost([]string{"document", "post", "testdata/A-Head-Full-of-Dreams-With-Id.json"}, + "mynamespace/music/docid/1", "testdata/A-Head-Full-of-Dreams-With-Id.json", t) +} + +func TestDocumentPostWithIdInDocumentShortForm(t *testing.T) { + assertDocumentPost([]string{"document", "testdata/A-Head-Full-of-Dreams-With-Id.json"}, + "mynamespace/music/docid/1", "testdata/A-Head-Full-of-Dreams-With-Id.json", t) } func TestDocumentPostDocumentError(t *testing.T) { @@ -28,11 +35,11 @@ func TestDocumentPostServerError(t *testing.T) { assertDocumentServerError(t, 501, "Server error") } -func assertDocumentPost(documentId string, jsonFile string, t *testing.T) { +func assertDocumentPost(arguments []string, documentId string, jsonFile string, t *testing.T) { client := &mockHttpClient{} assert.Equal(t, "\x1b[32mSuccess\n", - executeCommand(t, client, []string{"document", "post", documentId, jsonFile}, []string{})) + executeCommand(t, client, arguments, []string{})) target := getTarget(documentContext).document assert.Equal(t, target + "/document/v1/" + documentId, client.lastRequest.URL.String()) assert.Equal(t, "application/json", client.lastRequest.Header.Get("Content-Type")) @@ -42,6 +49,15 @@ func assertDocumentPost(documentId string, jsonFile string, t *testing.T) { assert.Equal(t, string(fileContent), util.ReaderToString(client.lastRequest.Body)) } +func assertDocumentPostShortForm(documentId string, jsonFile string, t *testing.T) { + client := &mockHttpClient{} + assert.Equal(t, + "\x1b[32mSuccess\n", + executeCommand(t, client, []string{"document", jsonFile}, []string{})) + target := getTarget(documentContext).document + assert.Equal(t, target + "/document/v1/" + documentId, client.lastRequest.URL.String()) +} + func assertDocumentError(t *testing.T, status int, errorMessage string) { client := &mockHttpClient{ nextStatus: status, nextBody: errorMessage, } assert.Equal(t, -- cgit v1.2.3