blob: bdba93b056712c59eac2a20ded76a54f88f7ce3e [file] [log] [blame]
package main
import (
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"github.com/go-test/deep"
)
func TestServing(t *testing.T) {
s := server{
domain: "example.com",
}
mux := http.NewServeMux()
s.register(mux)
for i, te := range []struct {
url string
want wellKnown
}{
{"/.well-known/matrix/client", wellKnown{
Homeserver: wellKnownHomeserver{"https://example.com"},
}},
{"/.well-known/matrix/server", wellKnown{
Server: "example.com:443",
}},
} {
req, _ := http.NewRequest("GET", te.url, nil)
rr := httptest.NewRecorder()
mux.ServeHTTP(rr, req)
if want, got := http.StatusOK, rr.Code; want != got {
t.Fatalf("%d: handler returned wrong status code: want %v got %v", i, want, got)
}
got := wellKnown{}
if err := json.Unmarshal(rr.Body.Bytes(), &got); err != nil {
t.Fatalf("%d: handler returned unparseable JSON: %v", i, err)
}
if diff := deep.Equal(te.want, got); diff != nil {
t.Errorf("%d: response diff: %s", i, diff)
}
}
}