11package webserver_test
22
33import (
4+ "context"
45 "encoding/json"
56 "fmt"
67 "io"
@@ -10,7 +11,6 @@ import (
1011 "strings"
1112 "testing"
1213
13- "github.com/cybertec-postgresql/pgwatch/v3/internal/log"
1414 "github.com/cybertec-postgresql/pgwatch/v3/internal/webserver"
1515 "github.com/stretchr/testify/assert"
1616)
@@ -20,20 +20,61 @@ type Credentials struct {
2020 Password string `json:"password"`
2121}
2222
23- func TestStatus (t * testing.T ) {
24- restsrv := webserver .Init (webserver.CmdOpts {WebAddr : "127.0.0.1:8080" }, os .DirFS ("../webui/build" ), nil , nil , log .FallbackLogger )
23+ type ReadyBool bool
24+
25+ func (ready * ReadyBool ) Ready () bool {
26+ return bool (* ready )
27+ }
28+
29+ func TestWebDisableOpt (t * testing.T ) {
30+ var ready ReadyBool
31+ restsrv , err := webserver .Init (context .Background (), webserver.CmdOpts {WebDisable : "all" }, os .DirFS ("../webui/build" ), nil , nil , & ready )
32+ assert .Nil (t , restsrv , "no webserver should be started" )
33+ assert .NoError (t , err )
34+
35+ restsrv , err = webserver .Init (context .Background (), webserver.CmdOpts {WebAddr : "127.0.0.1:8079" , WebDisable : "ui" }, os .DirFS ("../webui/build" ), nil , nil , & ready )
2536 assert .NotNil (t , restsrv )
26- // r, err := http.Get("http://localhost:8080/")
27- // assert.NoError(t, err)
28- // assert.Equal(t, http.StatusOK, r.StatusCode)
29- // b, err := io.ReadAll(r.Body)
30- // assert.NoError(t, err)
31- // assert.True(t, len(b) > 0)
37+ assert .NoError (t , err )
38+ r , err := http .Get ("http://localhost:8079/" )
39+ assert .NoError (t , err )
40+ assert .Equal (t , http .StatusNotFound , r .StatusCode , "no webui should be served" )
41+ r , err = http .Get ("http://localhost:8079/liveness" )
42+ assert .NoError (t , err )
43+ assert .Equal (t , http .StatusOK , r .StatusCode , "rest api should be served though" )
44+
45+ restsrv , err = webserver .Init (context .Background (), webserver.CmdOpts {WebAddr : "127.0.0.1:8079" }, os .DirFS ("../webui/build" ), nil , nil , & ready )
46+ assert .Nil (t , restsrv )
47+ assert .Error (t , err , "port should be in use" )
48+ }
49+
50+ func TestHealth (t * testing.T ) {
51+ var ready ReadyBool
52+ ctx , cancel := context .WithCancel (context .Background ())
53+ restsrv , _ := webserver .Init (ctx , webserver.CmdOpts {WebAddr : "127.0.0.1:8080" }, os .DirFS ("../webui/build" ), nil , nil , & ready )
54+ assert .NotNil (t , restsrv )
55+
56+ r , err := http .Get ("http://localhost:8080/liveness" )
57+ assert .NoError (t , err )
58+ assert .Equal (t , http .StatusOK , r .StatusCode )
59+
60+ cancel ()
61+ r , err = http .Get ("http://localhost:8080/liveness" )
62+ assert .NoError (t , err )
63+ assert .Equal (t , http .StatusServiceUnavailable , r .StatusCode )
64+
65+ r , err = http .Get ("http://localhost:8080/readiness" )
66+ assert .NoError (t , err )
67+ assert .Equal (t , http .StatusServiceUnavailable , r .StatusCode )
68+
69+ ready = true
70+ r , err = http .Get ("http://localhost:8080/readiness" )
71+ assert .NoError (t , err )
72+ assert .Equal (t , http .StatusOK , r .StatusCode )
3273}
3374
3475func TestServerNoAuth (t * testing.T ) {
3576 host := "http://localhost:8081"
36- restsrv := webserver .Init (webserver.CmdOpts {WebAddr : "localhost:8081" }, os .DirFS ("../webui/build" ), nil , nil , log . FallbackLogger )
77+ restsrv , _ := webserver .Init (context . Background (), webserver.CmdOpts {WebAddr : "localhost:8081" }, os .DirFS ("../webui/build" ), nil , nil , nil )
3778 assert .NotNil (t , restsrv )
3879 rr := httptest .NewRecorder ()
3980 // test request metrics
@@ -64,7 +105,7 @@ func TestServerNoAuth(t *testing.T) {
64105
65106func TestGetToken (t * testing.T ) {
66107 host := "http://localhost:8082"
67- restsrv := webserver .Init (webserver.CmdOpts {WebAddr : "localhost:8082" }, os .DirFS ("../webui/build" ), nil , nil , log . FallbackLogger )
108+ restsrv , _ := webserver .Init (context . Background (), webserver.CmdOpts {WebAddr : "localhost:8082" }, os .DirFS ("../webui/build" ), nil , nil , nil )
68109 rr := httptest .NewRecorder ()
69110
70111 credentials := Credentials {
0 commit comments