Serge Bazanski | ec7e0a9 | 2020-11-05 20:47:01 +0100 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "encoding/json" |
| 5 | "net/http" |
| 6 | "net/http/httptest" |
| 7 | "testing" |
| 8 | |
| 9 | "github.com/go-test/deep" |
| 10 | ) |
| 11 | |
| 12 | func 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 | } |