17830: Adds controller tests exposing the X-Request-Id header propagation bug.
[arvados.git] / lib / controller / router / router_test.go
index 0330ec4252c9ad3ee8f461faf9ce7508c17bd3fc..0e0edad3178197fc9bdceefa01c22a370767faf7 100644 (file)
@@ -370,6 +370,35 @@ func (s *RouterIntegrationSuite) TestHEAD(c *check.C) {
        c.Check(rr.Code, check.Equals, http.StatusOK)
 }
 
+func (s *RouterIntegrationSuite) TestRequestIDHeader(c *check.C) {
+       token := arvadostest.ActiveTokenV2
+       req := (&testReq{
+               method: "GET",
+               path:   "arvados/v1/collections/" + arvadostest.FooCollection,
+               token:  token,
+       }).Request()
+       rr := httptest.NewRecorder()
+       s.rtr.ServeHTTP(rr, req)
+       c.Check(rr.Code, check.Equals, http.StatusOK)
+       c.Check(rr.Result().Header.Get("X-Request-Id"), check.Matches, "^req-[0-9a-zA-Z]{20}$")
+}
+
+func (s *RouterIntegrationSuite) TestRequestIDHeaderProvidedByClient(c *check.C) {
+       token := arvadostest.ActiveTokenV2
+       req := (&testReq{
+               method: "GET",
+               path:   "arvados/v1/collections/" + arvadostest.FooCollection,
+               token:  token,
+               header: http.Header{
+                       "X-Request-Id": []string{"abcdeG"},
+               },
+       }).Request()
+       rr := httptest.NewRecorder()
+       s.rtr.ServeHTTP(rr, req)
+       c.Check(rr.Code, check.Equals, http.StatusOK)
+       c.Check(rr.Result().Header.Get("X-Request-Id"), check.Equals, "abcdeG")
+}
+
 func (s *RouterIntegrationSuite) TestRouteNotFound(c *check.C) {
        token := arvadostest.ActiveTokenV2
        req := (&testReq{