aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-08-24 19:51:42 +0200
committerJon Bratseth <bratseth@gmail.com>2021-08-24 19:51:42 +0200
commitc292201c97b583448212442725e56499ed30b100 (patch)
tree6737fd8cc9718b2dec18804e67ee269fe195ee64
parent150adadb23ba916ce62beead6b50d52aa43cd5c7 (diff)
Support document post short form
-rw-r--r--client/go/cmd/document.go11
-rw-r--r--client/go/cmd/document_test.go24
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,