| 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) |
| } |
| } |
| } |