github.com/crewjam/saml@v0.4.14/samlidp/service_test.go (about)

     1  package samlidp
     2  
     3  import (
     4  	"bytes"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"testing"
     8  
     9  	"gotest.tools/assert"
    10  	is "gotest.tools/assert/cmp"
    11  	"gotest.tools/golden"
    12  )
    13  
    14  func TestServicesCrud(t *testing.T) {
    15  	test := NewServerTest(t)
    16  
    17  	w := httptest.NewRecorder()
    18  	r, _ := http.NewRequest("GET", "https://idp.example.com/services/", nil)
    19  	test.Server.ServeHTTP(w, r)
    20  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    21  	assert.Check(t, is.Equal("{\"services\":[]}\n", w.Body.String()))
    22  
    23  	w = httptest.NewRecorder()
    24  	r, _ = http.NewRequest("PUT", "https://idp.example.com/services/sp",
    25  		bytes.NewReader(golden.Get(t, "sp_metadata.xml")))
    26  	test.Server.ServeHTTP(w, r)
    27  	assert.Check(t, is.Equal(http.StatusNoContent, w.Code))
    28  
    29  	w = httptest.NewRecorder()
    30  	r, _ = http.NewRequest("GET", "https://idp.example.com/services/sp", nil)
    31  	test.Server.ServeHTTP(w, r)
    32  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    33  	golden.Assert(t, w.Body.String(), "sp_metadata.xml")
    34  
    35  	w = httptest.NewRecorder()
    36  	r, _ = http.NewRequest("GET", "https://idp.example.com/services/", nil)
    37  	test.Server.ServeHTTP(w, r)
    38  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    39  	assert.Check(t, is.Equal("{\"services\":[\"sp\"]}\n", w.Body.String()))
    40  
    41  	assert.Check(t, is.Len(test.Server.serviceProviders, 2))
    42  
    43  	w = httptest.NewRecorder()
    44  	r, _ = http.NewRequest("DELETE", "https://idp.example.com/services/sp", nil)
    45  	test.Server.ServeHTTP(w, r)
    46  	assert.Check(t, is.Equal(http.StatusNoContent, w.Code))
    47  
    48  	w = httptest.NewRecorder()
    49  	r, _ = http.NewRequest("GET", "https://idp.example.com/services/", nil)
    50  	test.Server.ServeHTTP(w, r)
    51  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    52  	assert.Check(t, is.Equal("{\"services\":[]}\n", w.Body.String()))
    53  	assert.Check(t, is.Len(test.Server.serviceProviders, 1))
    54  }