diff --git a/server/v1/tests/put_handler_test.go b/server/v1/tests/put_handler_test.go new file mode 100644 index 000000000..87d2f9c8d --- /dev/null +++ b/server/v1/tests/put_handler_test.go @@ -0,0 +1,29 @@ +package v2 + +import ( + "fmt" + "net/http" + "net/url" + "testing" + + "github.com/coreos/etcd/server" + "github.com/coreos/etcd/tests" + "github.com/coreos/etcd/third_party/github.com/stretchr/testify/assert" +) + +// Ensures that a key is set to a given value. +// +// $ curl -X PUT localhost:4001/v1/keys/foo/bar -d value=XXX +// +func TestV1SetKey(t *testing.T) { + tests.RunServer(func(s *server.Server) { + v := url.Values{} + v.Set("value", "XXX") + resp, err := tests.PutForm(fmt.Sprintf("%s%s", s.URL(), "/v1/keys/foo/bar"), v) + assert.Equal(t, resp.StatusCode, http.StatusOK) + body := tests.ReadBody(resp) + assert.Nil(t, err, "") + + assert.Equal(t, string(body), `{"action":"set","key":"/foo/bar","value":"XXX","newKey":true,"index":2}`, "") + }) +} diff --git a/store/event.go b/store/event.go index cd7e0815d..13bbbf162 100644 --- a/store/event.go +++ b/store/event.go @@ -53,12 +53,15 @@ func (event *Event) Response(currentIndex uint64) interface{} { Action: event.Action, Key: event.Node.Key, Value: event.Node.Value, - PrevValue: event.PrevNode.Value, Index: event.Node.ModifiedIndex, TTL: event.Node.TTL, Expiration: event.Node.Expiration, } + if event.PrevNode != nil { + response.PrevValue = event.PrevNode.Value + } + if currentIndex != 0 { response.Index = currentIndex } diff --git a/test.sh b/test.sh index c6551cffa..f6a6bb58c 100755 --- a/test.sh +++ b/test.sh @@ -14,6 +14,9 @@ go test -v ./server go test -i ./config go test -v ./config +go test -i ./server/v1/tests +go test -v ./server/v1/tests + go test -i ./server/v2/tests go test -v ./server/v2/tests