15954: Propagate remote param.
authorTom Clegg <tom@tomclegg.ca>
Tue, 25 Feb 2020 17:14:32 +0000 (12:14 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Mon, 2 Mar 2020 20:30:17 +0000 (15:30 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

lib/controller/handler_test.go
sdk/go/arvados/api.go

index 6b1fa1a0b6ef05b539b8113c67d6f18b96c1905b..f09203f72486739d467b88f28b1d6875bc2f1959 100644 (file)
@@ -19,6 +19,7 @@ import (
 
        "git.arvados.org/arvados.git/sdk/go/arvados"
        "git.arvados.org/arvados.git/sdk/go/arvadostest"
+       "git.arvados.org/arvados.git/sdk/go/auth"
        "git.arvados.org/arvados.git/sdk/go/ctxlog"
        "git.arvados.org/arvados.git/sdk/go/httpserver"
        "github.com/prometheus/client_golang/prometheus"
@@ -229,6 +230,26 @@ func (s *HandlerSuite) TestValidateV2APIToken(c *check.C) {
        c.Check(user.Authorization.TokenV2(), check.Equals, arvadostest.ActiveTokenV2)
 }
 
+func (s *HandlerSuite) TestValidateRemoteToken(c *check.C) {
+       saltedToken, err := auth.SaltToken(arvadostest.ActiveTokenV2, "abcde")
+       c.Assert(err, check.IsNil)
+       for _, trial := range []struct {
+               code  int
+               token string
+       }{
+               {http.StatusOK, saltedToken},
+               {http.StatusUnauthorized, "bogus"},
+       } {
+               req := httptest.NewRequest("GET", "https://0.0.0.0:1/arvados/v1/users/current?remote=abcde", nil)
+               req.Header.Set("Authorization", "Bearer "+trial.token)
+               resp := httptest.NewRecorder()
+               s.handler.ServeHTTP(resp, req)
+               if !c.Check(resp.Code, check.Equals, trial.code) {
+                       c.Logf("HTTP %d: %s", resp.Code, resp.Body.String())
+               }
+       }
+}
+
 func (s *HandlerSuite) TestCreateAPIToken(c *check.C) {
        req := httptest.NewRequest("GET", "/arvados/v1/users/current", nil)
        auth, err := s.handler.(*Handler).createAPItoken(req, arvadostest.ActiveUserUUID, nil)
index 5c8d4f629a2503ab91e8d3e2af7eae7d956846d5..0c5d32e8b7e1e96bdab9bbf45b25962963297829 100644 (file)
@@ -64,6 +64,7 @@ type GetOptions struct {
        Select       []string `json:"select"`
        IncludeTrash bool     `json:"include_trash"`
        ForwardedFor string   `json:"forwarded_for"`
+       Remote       string   `json:"remote"`
 }
 
 type UntrashOptions struct {