51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
|
package server
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
|
||
|
schema "github.com/coreos/dex/schema/workerschema"
|
||
|
)
|
||
|
|
||
|
func TestDiscoveryInvalidMethods(t *testing.T) {
|
||
|
for _, verb := range []string{"POST", "PUT", "DELETE"} {
|
||
|
res := &discoveryResource{}
|
||
|
w := httptest.NewRecorder()
|
||
|
r, err := http.NewRequest(verb, "http://example.com/discovery", nil)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Failed creating http.Request: %v", err)
|
||
|
}
|
||
|
res.ServeHTTP(w, r)
|
||
|
if w.Code != http.StatusMethodNotAllowed {
|
||
|
t.Errorf("invalid response code for method=%s, want=%d, got=%d", verb, http.StatusMethodNotAllowed, w.Code)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDiscoveryBody(t *testing.T) {
|
||
|
res := &discoveryResource{}
|
||
|
w := httptest.NewRecorder()
|
||
|
req, err := http.NewRequest("GET", "http://example.com/discovery", nil)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Failed creating http.Request: %v", err)
|
||
|
}
|
||
|
res.ServeHTTP(w, req)
|
||
|
if w.Code != http.StatusOK {
|
||
|
t.Errorf("Expected 200, got %d", w.Code)
|
||
|
}
|
||
|
ct := w.HeaderMap["Content-Type"]
|
||
|
if len(ct) != 1 {
|
||
|
t.Errorf("Response has wrong number of Content-Type values: %v", ct)
|
||
|
} else if ct[0] != "application/json" {
|
||
|
t.Errorf("Expected application/json, got %s", ct)
|
||
|
}
|
||
|
if w.Body == nil {
|
||
|
t.Error("Received nil response body")
|
||
|
} else {
|
||
|
if w.Body.String() != schema.DiscoveryJSON {
|
||
|
t.Error("Received unexpected body!")
|
||
|
}
|
||
|
}
|
||
|
}
|