main
1package prxy
2
3import (
4 "net/http"
5 "net/http/httptest"
6 "net/url"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 "github.com/xlgmokha/x/pkg/x"
12 "gitlab.com/mokhax/spike/pkg/test"
13)
14
15func TestProxy(t *testing.T) {
16 t.Run("http://idp.test", func(t *testing.T) {
17 var lastIdPRequest *http.Request
18 var lastUiRequest *http.Request
19
20 idp := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
21 lastIdPRequest = r
22 w.WriteHeader(http.StatusOK)
23 }))
24 defer idp.Close()
25
26 ui := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
27 lastUiRequest = r
28 w.WriteHeader(http.StatusTeapot)
29 }))
30 defer ui.Close()
31
32 subject := New(map[string]string{
33 "idp.test": idp.URL,
34 "ui.test": ui.URL,
35 })
36
37 r, w := test.RequestResponse("GET", "http://idp.test:8080/saml/new")
38
39 subject.ServeHTTP(w, r)
40
41 url := x.Must(url.Parse(idp.URL))
42
43 assert.Nil(t, lastUiRequest)
44 assert.Equal(t, http.StatusOK, w.Code)
45
46 require.NotNil(t, lastIdPRequest)
47 assert.Equal(t, url.Host, lastIdPRequest.Host)
48 })
49}