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 }