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}