mirror of
https://github.com/matrix-org/dendrite
synced 2024-12-15 07:42:58 +00:00
80738cc2a0
I have added/copied a landing page like Synpase does. Recently I have installed Dendrite and was wondering why it´s not working. After some troubleshooting I figured out there is no landing page like synpase has, so the Server was running just fine. Hopefuly this PR can fix this problem and may help other users who run into this issue. I have not written any unit tests, because it´s just a simple landing page with a redirect to a static site. ### Pull Request Checklist <!-- Please read https://matrix-org.github.io/dendrite/development/contributing before submitting your pull request --> * [x] I have added Go unit tests or [Complement integration tests](https://github.com/matrix-org/complement) for this PR _or_ I have justified why this PR doesn't need tests * [x] Pull request includes a [sign off below using a legally identifiable name](https://matrix-org.github.io/dendrite/development/contributing#sign-off) _or_ I have already signed off privately Signed-off-by: `Lukas Huida<lukas@leucali.net>` Co-authored-by: Till Faelligen <2353100+S7evinK@users.noreply.github.com>
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package base_test
|
|
|
|
import (
|
|
"bytes"
|
|
"embed"
|
|
"html/template"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/matrix-org/dendrite/internal"
|
|
"github.com/matrix-org/dendrite/setup/config"
|
|
"github.com/matrix-org/dendrite/test/testrig"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
//go:embed static/*.gotmpl
|
|
var staticContent embed.FS
|
|
|
|
func TestLandingPage(t *testing.T) {
|
|
// generate the expected result
|
|
tmpl := template.Must(template.ParseFS(staticContent, "static/*.gotmpl"))
|
|
expectedRes := &bytes.Buffer{}
|
|
err := tmpl.ExecuteTemplate(expectedRes, "index.gotmpl", map[string]string{
|
|
"Version": internal.VersionString(),
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
b, _, _ := testrig.Base(nil)
|
|
defer b.Close()
|
|
|
|
// hack: create a server and close it immediately, just to get a random port assigned
|
|
s := httptest.NewServer(nil)
|
|
s.Close()
|
|
|
|
// start base with the listener and wait for it to be started
|
|
go b.SetupAndServeHTTP("", config.HTTPAddress(s.URL), nil, nil)
|
|
time.Sleep(time.Millisecond * 10)
|
|
|
|
// When hitting /, we should be redirected to /_matrix/static, which should contain the landing page
|
|
req, err := http.NewRequest(http.MethodGet, s.URL, nil)
|
|
assert.NoError(t, err)
|
|
|
|
// do the request
|
|
resp, err := s.Client().Do(req)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
|
// read the response
|
|
buf := &bytes.Buffer{}
|
|
_, err = buf.ReadFrom(resp.Body)
|
|
assert.NoError(t, err)
|
|
|
|
// Using .String() for user friendly output
|
|
assert.Equal(t, expectedRes.String(), buf.String(), "response mismatch")
|
|
}
|