dex/server/discovery_resource_test.go
2015-08-18 11:26:57 -07:00

50 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!")
}
}
}