Path: blob/dev/pkg/protocols/utils/http/requtils_test.go
2073 views
package httputil12import (3"testing"45urlutil "github.com/projectdiscovery/utils/url"6"github.com/stretchr/testify/require"7)89func TestTrailingSlash(t *testing.T) {10testcases := []struct {11payload string12hasSlash bool13}{14{"{{BaseURL}}", false},15{"{{BaseURL}}/", true},16{"{{RootURL}}", false},17{"{{RootURL}}/", true},18{"{{randomvar}}", false},19{"{{randomvar}}/", true},20{"later/{{randomvar}}/", false},21}2223for _, v := range testcases {24if v.hasSlash != HasTrailingSlash(v.payload) {25t.Errorf("expected %v but got %v for %v", v.hasSlash, HasTrailingSlash(v.payload), v.payload)26}27}28}2930func TestPortUpdate(t *testing.T) {31testcases := []struct {32inputURL string // input url33CleanedInputURL string34RequestPath string // path which contains port35CleanedPath string // path after processing36}{37{"http://localhost:53/test", "http://localhost:8000/test", "{{BaseURL}}:8000/newpath", "{{BaseURL}}/newpath"},38{"http://localhost:53/test", "http://localhost:8000/test", "{{RootURL}}:8000/newpath", "{{RootURL}}/newpath"},39{"http://localhost:53/test", "http://localhost:53/test", "{{RootURL}}/newpath", "{{RootURL}}/newpath"},40{"http://localhost/test", "http://localhost:8000/test", "{{RootURL}}:8000/newpath", "{{RootURL}}/newpath"},41{"http://localhost/test", "http://localhost/test", "{{RootURL}}/newpath", "{{RootURL}}/newpath"},42}43for _, v := range testcases {44parsed, _ := urlutil.Parse(v.inputURL)45parsed, v.RequestPath = UpdateURLPortFromPayload(parsed, v.RequestPath)46require.Equal(t, v.CleanedInputURL, parsed.String(), "could not get correct value")47require.Equal(t, v.CleanedPath, v.RequestPath, "could not get correct data")48}49}505152