Files
sablier/plugins/traefik/pkg/strategy/dynamic_strategy_test.go
Alexis Couvreur ad4e9ffb8c Add 'plugins/traefik/' from commit 'aef1f9e0dd205ea9cdea9e3ccf11900c5fe79b1f'
git-subtree-dir: plugins/traefik
git-subtree-mainline: 1a14070131
git-subtree-split: aef1f9e0dd
2022-09-30 14:32:09 +00:00

78 lines
1.9 KiB
Go

package strategy
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSingleDynamicStrategy_ServeHTTP(t *testing.T) {
for _, test := range SingleServiceTestCases {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})
mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, test.onDemandServiceResponses[0].body)
}))
defer mockServer.Close()
dynamicStrategy := &DynamicStrategy{
Name: "whoami",
Requests: []string{mockServer.URL},
Next: next,
}
recorder := httptest.NewRecorder()
req := httptest.NewRequest(http.MethodGet, "http://mydomain/whoami", nil)
dynamicStrategy.ServeHTTP(recorder, req)
assert.Equal(t, test.expected.dynamic, recorder.Code)
})
}
}
func TestMultipleDynamicStrategy_ServeHTTP(t *testing.T) {
for _, test := range MultipleServicesTestCases {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})
urls := make([]string, len(test.onDemandServiceResponses))
for responseIndex, response := range test.onDemandServiceResponses {
response := response
mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, response.body)
}))
defer mockServer.Close()
urls[responseIndex] = mockServer.URL
}
dynamicStrategy := &DynamicStrategy{
Name: "whoami",
Requests: urls,
Next: next,
}
recorder := httptest.NewRecorder()
req := httptest.NewRequest(http.MethodGet, "http://mydomain/whoami", nil)
dynamicStrategy.ServeHTTP(recorder, req)
assert.Equal(t, test.expected.dynamic, recorder.Code)
})
}
}