Skip to content

Commit

Permalink
Added handler and tests
Browse files Browse the repository at this point in the history
Signed-off-by: Joe Elliott <[email protected]>
  • Loading branch information
joe-elliott committed Feb 8, 2020
1 parent df4dd65 commit 4169a86
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 2 deletions.
30 changes: 30 additions & 0 deletions cmd/query/app/additional_headers_handler.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright (c) 2020 The Jaeger Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package app

import (
"net/http"
)

func additionalHeadersHandler(h http.Handler, additionalHeaders http.Header) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
header := w.Header()
for key, values := range additionalHeaders {
header[key] = values
}

h.ServeHTTP(w, r)
})
}
50 changes: 50 additions & 0 deletions cmd/query/app/additional_headers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Copyright (c) 2020 The Jaeger Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package app

import (
"net/http"
"net/http/httptest"
"testing"

"github.com/stretchr/testify/assert"
)

func TestAdditionalHeadersHandler(t *testing.T) {

additionalHeaders := http.Header{}
additionalHeaders.Add("Access-Control-Allow-Origin", "https://mozilla.org")
additionalHeaders.Add("Access-Control-Expose-Headers", "X-My-Custom-Header")
additionalHeaders.Add("Access-Control-Expose-Headers", "X-Another-Custom-Header")
additionalHeaders.Add("Access-Control-Request-Headers", "field1, field2")

emptyHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte{})
})

handler := additionalHeadersHandler(emptyHandler, additionalHeaders)
server := httptest.NewServer(handler)
defer server.Close()

req, err := http.NewRequest("GET", server.URL, nil)
assert.NoError(t, err)

resp, err := httpClient.Do(req)
assert.NoError(t, err)

for k, v := range additionalHeaders {
assert.Equal(t, v, resp.Header[k])
}
}
4 changes: 2 additions & 2 deletions cmd/query/app/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ func createHTTPServer(querySvc *querysvc.QueryService, queryOpts *QueryOptions,
apiHandler.RegisterRoutes(r)
RegisterStaticHandler(r, logger, queryOpts)
var handler http.Handler = r
handler = additionalHeadersHandler(handler, queryOpts.AdditionalHeaders)
if queryOpts.BearerTokenPropagation {
handler = bearerTokenPropagationHandler(logger, r)
handler = bearerTokenPropagationHandler(logger, handler)
}
handler = handlers.CompressHandler(handler)
handler = additionalHeadersHandler(handler, queryOpts.AdditionalHeaders)
recoveryHandler := recoveryhandler.NewRecoveryHandler(logger, true)
return &http.Server{
Handler: recoveryHandler(handler),
Expand Down

0 comments on commit 4169a86

Please sign in to comment.