github.com/crewjam/saml@v0.4.14/samlidp/user_test.go (about) 1 package samlidp 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "strings" 7 "testing" 8 9 "gotest.tools/assert" 10 is "gotest.tools/assert/cmp" 11 ) 12 13 func TestUsersCrud(t *testing.T) { 14 test := NewServerTest(t) 15 w := httptest.NewRecorder() 16 r, _ := http.NewRequest("GET", "https://idp.example.com/users/", nil) 17 test.Server.ServeHTTP(w, r) 18 assert.Check(t, is.Equal(http.StatusOK, w.Code)) 19 assert.Check(t, is.Equal("{\"users\":[]}\n", w.Body.String())) 20 21 w = httptest.NewRecorder() 22 r, _ = http.NewRequest("PUT", "https://idp.example.com/users/alice", 23 strings.NewReader(`{"name": "alice", "password": "hunter2"}`+"\n")) 24 test.Server.ServeHTTP(w, r) 25 assert.Check(t, is.Equal(http.StatusNoContent, w.Code)) 26 27 w = httptest.NewRecorder() 28 r, _ = http.NewRequest("GET", "https://idp.example.com/users/alice", nil) 29 test.Server.ServeHTTP(w, r) 30 assert.Check(t, is.Equal(http.StatusOK, w.Code)) 31 assert.Check(t, is.Equal("{\"name\":\"alice\"}\n", w.Body.String())) 32 33 w = httptest.NewRecorder() 34 r, _ = http.NewRequest("GET", "https://idp.example.com/users/", nil) 35 test.Server.ServeHTTP(w, r) 36 assert.Check(t, is.Equal(http.StatusOK, w.Code)) 37 assert.Check(t, is.Equal("{\"users\":[\"alice\"]}\n", w.Body.String())) 38 39 w = httptest.NewRecorder() 40 r, _ = http.NewRequest("DELETE", "https://idp.example.com/users/alice", nil) 41 test.Server.ServeHTTP(w, r) 42 assert.Check(t, is.Equal(http.StatusNoContent, w.Code)) 43 44 w = httptest.NewRecorder() 45 r, _ = http.NewRequest("GET", "https://idp.example.com/users/", nil) 46 test.Server.ServeHTTP(w, r) 47 assert.Check(t, is.Equal(http.StatusOK, w.Code)) 48 assert.Check(t, is.Equal("{\"users\":[]}\n", w.Body.String())) 49 }