/api/v1beta1/operations was returning Not Found

Splitting an empty string returns []string{""}, not []string{}
pull/6/head
Clayton Coleman 2014-08-03 19:35:17 -04:00
parent 2282f9ce3a
commit 75aa364b3c
2 changed files with 42 additions and 0 deletions

View File

@ -42,6 +42,9 @@ func (s *APIServer) handleOperation(w http.ResponseWriter, req *http.Request) {
}
trimmed := strings.TrimLeft(req.URL.Path[len(opPrefix):], "/")
parts := strings.Split(trimmed, "/")
if trimmed == "" {
parts = []string{}
}
if len(parts) > 1 {
notFound(w, req)
return

View File

@ -18,6 +18,7 @@ package apiserver
import (
"bytes"
"io/ioutil"
"net/http"
"net/http/httptest"
"sync/atomic"
@ -90,6 +91,44 @@ func TestOperation(t *testing.T) {
}
}
func TestOperationsList(t *testing.T) {
simpleStorage := &SimpleRESTStorage{}
handler := New(map[string]RESTStorage{
"foo": simpleStorage,
}, "/prefix/version")
handler.asyncOpWait = 0
server := httptest.NewServer(handler)
client := http.Client{}
simple := Simple{
Name: "foo",
}
data, err := api.Encode(simple)
expectNoError(t, err)
response, err := client.Post(server.URL+"/prefix/version/foo", "application/json", bytes.NewBuffer(data))
expectNoError(t, err)
if response.StatusCode != http.StatusAccepted {
t.Errorf("Unexpected response %#v", response)
}
response, err = client.Get(server.URL + "/prefix/version/operations")
expectNoError(t, err)
if response.StatusCode != http.StatusOK {
t.Fatalf("unexpected status code %#v", response)
}
body, err := ioutil.ReadAll(response.Body)
expectNoError(t, err)
obj, err := api.Decode(body)
expectNoError(t, err)
oplist, ok := obj.(*api.ServerOpList)
if !ok {
t.Fatalf("expected ServerOpList, got %#v", obj)
}
if len(oplist.Items) != 1 {
t.Errorf("expected 1 operation, got %#v", obj)
}
}
func TestOpGet(t *testing.T) {
simpleStorage := &SimpleRESTStorage{}
handler := New(map[string]RESTStorage{