13497: Send request body when proxying.
authorTom Clegg <tclegg@veritasgenetics.com>
Wed, 13 Jun 2018 19:49:26 +0000 (15:49 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 14 Jun 2018 17:35:40 +0000 (13:35 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

lib/controller/handler.go
lib/controller/handler_test.go

index 6e4f0e3b468ac821f6f1fff742b507f0b7d9e079..013d293f2ac290dcbb37320c7bb8508081063356 100644 (file)
@@ -81,6 +81,7 @@ func (h *Handler) proxyRailsAPI(w http.ResponseWriter, reqIn *http.Request) {
                Method: reqIn.Method,
                URL:    urlOut,
                Header: hdrOut,
+               Body:   reqIn.Body,
        }).WithContext(ctx)
        resp, err := arvados.InsecureHTTPClient.Do(reqOut)
        if err != nil {
index a187ba4433b70c117ba514ead48f7b469dcda8fc..dcd4d26a3bb00e59dd665f47925b57f1de866319 100644 (file)
@@ -8,7 +8,9 @@ import (
        "encoding/json"
        "net/http"
        "net/http/httptest"
+       "net/url"
        "os"
+       "strings"
        "testing"
        "time"
 
@@ -94,6 +96,20 @@ func (s *HandlerSuite) TestProxyWithToken(c *check.C) {
        c.Check(u.UUID, check.Equals, arvadostest.ActiveUserUUID)
 }
 
+func (s *HandlerSuite) TestProxyWithTokenInRequestBody(c *check.C) {
+       req := httptest.NewRequest("POST", "/arvados/v1/users/current", strings.NewReader(url.Values{
+               "_method":   {"GET"},
+               "api_token": {arvadostest.ActiveToken},
+       }.Encode()))
+       resp := httptest.NewRecorder()
+       s.handler.ServeHTTP(resp, req)
+       c.Check(resp.Code, check.Equals, http.StatusOK)
+       var u arvados.User
+       err := json.Unmarshal(resp.Body.Bytes(), &u)
+       c.Check(err, check.IsNil)
+       c.Check(u.UUID, check.Equals, arvadostest.ActiveUserUUID)
+}
+
 func (s *HandlerSuite) TestProxyNotFound(c *check.C) {
        req := httptest.NewRequest("GET", "/arvados/v1/xyzzy", nil)
        resp := httptest.NewRecorder()