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  }