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