mirror of
https://github.com/containous/traefik.git
synced 2024-12-22 13:34:03 +03:00
Fix replace path rule
* Fix replace path rule * test: add RequestURI tests.
This commit is contained in:
parent
36ee69609e
commit
a09a8b1235
@ -16,5 +16,6 @@ const ReplacedPathHeader = "X-Replaced-Path"
|
|||||||
func (s *ReplacePath) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (s *ReplacePath) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
r.Header.Add(ReplacedPathHeader, r.URL.Path)
|
r.Header.Add(ReplacedPathHeader, r.URL.Path)
|
||||||
r.URL.Path = s.Path
|
r.URL.Path = s.Path
|
||||||
|
r.RequestURI = r.URL.RequestURI()
|
||||||
s.Handler.ServeHTTP(w, r)
|
s.Handler.ServeHTTP(w, r)
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package middlewares_test
|
package middlewares
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/containous/traefik/middlewares"
|
"github.com/containous/traefik/testhelpers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestReplacePath(t *testing.T) {
|
func TestReplacePath(t *testing.T) {
|
||||||
@ -17,28 +18,24 @@ func TestReplacePath(t *testing.T) {
|
|||||||
|
|
||||||
for _, path := range paths {
|
for _, path := range paths {
|
||||||
t.Run(path, func(t *testing.T) {
|
t.Run(path, func(t *testing.T) {
|
||||||
var newPath, oldPath string
|
|
||||||
handler := &middlewares.ReplacePath{
|
var expectedPath, actualHeader, requestURI string
|
||||||
|
handler := &ReplacePath{
|
||||||
Path: replacementPath,
|
Path: replacementPath,
|
||||||
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
newPath = r.URL.Path
|
expectedPath = r.URL.Path
|
||||||
oldPath = r.Header.Get("X-Replaced-Path")
|
actualHeader = r.Header.Get(ReplacedPathHeader)
|
||||||
|
requestURI = r.RequestURI
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost"+path, nil)
|
req := testhelpers.MustNewRequest(http.MethodGet, "http://localhost"+path, nil)
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
handler.ServeHTTP(nil, req)
|
handler.ServeHTTP(nil, req)
|
||||||
if newPath != replacementPath {
|
|
||||||
t.Fatalf("new path should be '%s'", replacementPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldPath != path {
|
assert.Equal(t, expectedPath, replacementPath, "Unexpected path.")
|
||||||
t.Fatalf("old path should be '%s'", path)
|
assert.Equal(t, path, actualHeader, "Unexpected '%s' header.", ReplacedPathHeader)
|
||||||
}
|
assert.Equal(t, expectedPath, requestURI, "Unexpected request URI.")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user