github.com/crewjam/saml@v0.4.14/samlsp/fetch_metadata_test.go (about) 1 package samlsp 2 3 import ( 4 "bytes" 5 "context" 6 "fmt" 7 "net/http" 8 "net/http/httptest" 9 "net/url" 10 "testing" 11 12 "gotest.tools/assert" 13 is "gotest.tools/assert/cmp" 14 ) 15 16 func TestFetchMetadata(t *testing.T) { 17 test := NewMiddlewareTest(t) 18 19 testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 20 assert.Check(t, is.Equal("/metadata", r.URL.String())) 21 _, err := w.Write(test.IDPMetadata) 22 assert.Check(t, err) 23 })) 24 25 fmt.Println(testServer.URL + "/metadata") 26 u, _ := url.Parse(testServer.URL + "/metadata") 27 md, err := FetchMetadata(context.Background(), testServer.Client(), *u) 28 assert.Check(t, err) 29 assert.Check(t, is.Equal("https://idp.testshib.org/idp/shibboleth", md.EntityID)) 30 } 31 32 func TestFetchMetadataRejectsInvalid(t *testing.T) { 33 test := NewMiddlewareTest(t) 34 test.IDPMetadata = bytes.ReplaceAll(test.IDPMetadata, 35 []byte("<EntityDescriptor "), []byte("<EntityDescriptor ::foo=\"bar\">]]")) 36 37 testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 38 assert.Check(t, is.Equal("/metadata", r.URL.String())) 39 _, err := w.Write(test.IDPMetadata) 40 assert.Check(t, err) 41 })) 42 43 fmt.Println(testServer.URL + "/metadata") 44 u, _ := url.Parse(testServer.URL + "/metadata") 45 md, err := FetchMetadata(context.Background(), testServer.Client(), *u) 46 assert.Check(t, err != nil) 47 assert.Check(t, is.Nil(md)) 48 }