blob: bdba93b056712c59eac2a20ded76a54f88f7ce3e [file] [log] [blame]
Serge Bazanskiec7e0a92020-11-05 20:47:01 +01001package main
2
3import (
4 "encoding/json"
5 "net/http"
6 "net/http/httptest"
7 "testing"
8
9 "github.com/go-test/deep"
10)
11
12func TestServing(t *testing.T) {
13 s := server{
14 domain: "example.com",
15 }
16 mux := http.NewServeMux()
17 s.register(mux)
18
19 for i, te := range []struct {
20 url string
21 want wellKnown
22 }{
23 {"/.well-known/matrix/client", wellKnown{
24 Homeserver: wellKnownHomeserver{"https://example.com"},
25 }},
26 {"/.well-known/matrix/server", wellKnown{
27 Server: "example.com:443",
28 }},
29 } {
30 req, _ := http.NewRequest("GET", te.url, nil)
31 rr := httptest.NewRecorder()
32 mux.ServeHTTP(rr, req)
33 if want, got := http.StatusOK, rr.Code; want != got {
34 t.Fatalf("%d: handler returned wrong status code: want %v got %v", i, want, got)
35 }
36 got := wellKnown{}
37 if err := json.Unmarshal(rr.Body.Bytes(), &got); err != nil {
38 t.Fatalf("%d: handler returned unparseable JSON: %v", i, err)
39 }
40 if diff := deep.Equal(te.want, got); diff != nil {
41 t.Errorf("%d: response diff: %s", i, diff)
42 }
43 }
44}