mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 00:11:38 +01:00 
			
		
		
		
	Co-authored-by: Romain <rtribotte@users.noreply.github.com> Co-authored-by: Julien Salleyron <julien.salleyron@gmail.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package httputil
 | |
| 
 | |
| import (
 | |
| 	"crypto/tls"
 | |
| 	"errors"
 | |
| 	"net/http"
 | |
| 	"net/http/httptest"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 	"github.com/traefik/traefik/v3/pkg/config/dynamic"
 | |
| 	"github.com/traefik/traefik/v3/pkg/testhelpers"
 | |
| )
 | |
| 
 | |
| func TestEscapedPath(t *testing.T) {
 | |
| 	var gotEscapedPath string
 | |
| 	srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
 | |
| 		gotEscapedPath = req.URL.EscapedPath()
 | |
| 	}))
 | |
| 
 | |
| 	transportManager := &transportManagerMock{
 | |
| 		roundTrippers: map[string]http.RoundTripper{"default": &http.Transport{}},
 | |
| 	}
 | |
| 
 | |
| 	p, err := NewProxyBuilder(transportManager, nil).Build("default", testhelpers.MustParseURL(srv.URL), false, true, 0)
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	proxy := httptest.NewServer(http.HandlerFunc(p.ServeHTTP))
 | |
| 
 | |
| 	_, err = http.Get(proxy.URL + "/%3A%2F%2F")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	assert.Equal(t, "/%3A%2F%2F", gotEscapedPath)
 | |
| }
 | |
| 
 | |
| type transportManagerMock struct {
 | |
| 	roundTrippers map[string]http.RoundTripper
 | |
| }
 | |
| 
 | |
| func (t *transportManagerMock) GetRoundTripper(name string) (http.RoundTripper, error) {
 | |
| 	roundTripper, ok := t.roundTrippers[name]
 | |
| 	if !ok {
 | |
| 		return nil, errors.New("no transport for " + name)
 | |
| 	}
 | |
| 
 | |
| 	return roundTripper, nil
 | |
| }
 | |
| 
 | |
| func (t *transportManagerMock) GetTLSConfig(_ string) (*tls.Config, error) {
 | |
| 	panic("implement me")
 | |
| }
 | |
| 
 | |
| func (t *transportManagerMock) Get(_ string) (*dynamic.ServersTransport, error) {
 | |
| 	panic("implement me")
 | |
| }
 |