Needed work for the test suite to start working again.

master
Zed A. Shaw 3 weeks ago
parent 5ff799f5e7
commit 7f304f9950
  1. 11
      Makefile
  2. 7
      admin/table/db.go
  3. 6
      auth/handlers.go
  4. 13
      common/web.go
  5. 2
      config/settings.go
  6. 2
      config_example.json
  7. 2
      main.go
  8. 40
      tests/admin_test.go
  9. 16
      tests/admin_ui_test.go
  10. 2
      tests/base_test.go
  11. 17
      tests/tools.go

@ -12,17 +12,16 @@ cmds:
go build -o bin/fgen ./tools/cmd/fgen
go build -o bin/qmgr ./tools/cmd/qmgr
go build -o bin/mailer ./tools/cmd/mailer
go test MY/webapp/tests -c -o bin/
site:
go tool ssgod
test: site
go test MY/webapp/tests -c
./tests.test
test: cmds site
./bin/tests.test
test_only:
go test . -c -o
./tests.test -test.run TestSomePage
test_only: cmds site
./bin/tests.test -test.run $(TEST)
migrate_up:
goose sqlite3 db.sqlite3 -dir migrations up

@ -52,7 +52,12 @@ func SelectTable(table string, limit uint64, page uint64) ([]any, error) {
var results []any
the_type := data.Models()[table]
sql_query, args, err := sq.Select("*").Limit(limit).Offset(limit * page).From(table).ToSql()
sql_query, args, err := sq.Select("*").
Limit(limit).
Offset(limit * page).
From(table).
ToSql()
if err != nil { return results, err }
rows, err := data.DB.Queryx(sql_query, args...)

@ -5,6 +5,7 @@ import (
_ "github.com/mattn/go-sqlite3"
sq "github.com/Masterminds/squirrel"
"fmt"
"MY/webapp/data"
. "MY/webapp/common"
)
@ -46,7 +47,10 @@ func PostApiLogin(c *fiber.Ctx) error {
if(err != nil) { return IfErrNil(err, c) }
pass_good, err := LoginUser(&user, login)
if err != nil { return IfErrNil(err, c) }
if err != nil {
fmt.Println("!!!!!!!!!!!!!!! YOU SUCK, make this show a form/login error.")
return c.Redirect("/login/")
}
if pass_good {
sess, err := STORE.Get(c)

@ -11,12 +11,18 @@ import (
var STORE *session.Store
func GenPageId(path string) string {
return strings.ReplaceAll(path, "/", "-") + "-page"
}
func AddAuthedPage(app *fiber.App, must_admin bool, url string, view string) {
handler := func(c *fiber.Ctx) error {
_, err := AuthCheck(c, must_admin)
if err != nil { return c.Redirect("/") }
params := c.AllParams()
params["PageId"] = GenPageId(url)
return c.Render(view, c.AllParams())
return c.Render(view, params)
}
app.Get(url, handler)
@ -24,6 +30,9 @@ func AddAuthedPage(app *fiber.App, must_admin bool, url string, view string) {
func AddPage(app *fiber.App, url string, view string) {
handler := func(c *fiber.Ctx) error {
params := c.AllParams()
params["PageId"] = GenPageId(url)
return c.Render(view, c.AllParams())
}
@ -31,7 +40,7 @@ func AddPage(app *fiber.App, url string, view string) {
}
func Page(path string) (func(c *fiber.Ctx) error) {
page_id := strings.ReplaceAll(path, "/", "-") + "-page"
page_id := GenPageId(path)
return func (c *fiber.Ctx) error {
return c.Render(path, fiber.Map{"PageId": page_id})

@ -11,7 +11,7 @@ type config struct {
Admin string
Views string
Layouts string
Port string
HostPort string
}
Database struct {
Driver string

@ -3,7 +3,7 @@
"Admin": "admin",
"Views": "./views",
"Layouts": "layouts/main",
"Port": ":7001"
"HostPort": ":7001"
},
"Database": {
"Driver": "sqlite3",

@ -55,7 +55,7 @@ func main() {
// this sets up graceful shutdown
go func() {
if err := app.Listen(config.Settings.Server.Port); err != nil {
if err := app.Listen(config.Settings.Server.HostPort); err != nil {
log.Panic(err)
}
}()

@ -3,10 +3,11 @@ package tests
import (
"testing"
"fmt"
"strings"
"reflect"
"github.com/stretchr/testify/require"
"MY/webapp/data"
"MY/webapp/admin"
admin "MY/webapp/admin/table"
sq "github.com/Masterminds/squirrel"
)
@ -16,11 +17,11 @@ func TestAdminIndexPage(t *testing.T) {
table := "user"
model := models[table]
fmt.Printf("\n------\ntable=%s; model=%s\n", table, model.Name())
fields := reflect.VisibleFields(model)
for _, field := range fields {
fmt.Println("\t", field.Name, field.Type, field.Tag)
assert.NotEqual(field.Name, "")
assert.NotEqual(field.Tag, "")
}
for i := 0; i < 87; i++ {
@ -37,34 +38,35 @@ func TestAdminIndexPage(t *testing.T) {
assert.NoError(err)
id, count, err := admin.Insert(table, val)
assert.Equal(count, 1)
assert.NotEqual(id, 0)
assert.Equal(count, int64(1))
assert.NotEqual(id, int64(0))
assert.NoError(err, email)
}
all_rows, err := admin.SelectTable(table, model, 20, 20 * 3)
all_rows, err := admin.SelectTable(table, 20, 2)
assert.NoError(err)
for i, row := range all_rows { fmt.Println("row", i, row) }
assert.Equal(20, len(all_rows))
first_row := all_rows[0].(*data.User)
result, err := admin.Get(table, model, int64(first_row.Id))
result, err := admin.Get(table, int64(first_row.Id))
if err != nil { fmt.Println("ERROR", err) }
fmt.Println("TABLE: ", result)
id := result.FieldByName("Id")
result, err = admin.Get(table, model, id.Int())
result, err = admin.Get(table, id.Int())
assert.NoError(err)
fmt.Println("BEFORE: ", result)
result.FieldByName("Username").SetString("joeblow")
result.FieldByName("Email").SetString("what@what.com")
fmt.Println("AFTER: ", result)
username := result.FieldByName("Username").String()
err = admin.Update(table, result)
assert.NoError(err, )
// only remove test users
if strings.HasPrefix(username, "test") {
result.FieldByName("Username").SetString("joeblow")
result.FieldByName("Email").SetString("what@what.com")
err = admin.Delete(table, id.Int())
assert.NoError(err)
err = admin.Update(table, result)
assert.NoError(err, )
err = admin.Delete(table, id.Int())
assert.NoError(err)
}
}

@ -2,14 +2,26 @@ package tests
import (
"testing"
"time"
// "github.com/stretchr/testify/require"
// "MY/webapp/data"
// sq "github.com/Masterminds/squirrel"
)
func TestTableListing(t *testing.T) {
z, cancel := Setup(t, 2);
z, cancel := Setup(t, 2 * time.Second);
defer cancel();
z.GoTo("/admin/table", `[data-testid="live-index-page"]`)
// confirm redirect if not logged in
z.GoTo("/admin/table/", `[data-testid="index-page"]`)
// now log in and go to admin
z.GoTo("/login/", `[data-testid="login-index-page"]`)
z.TypeIn(`#username`, `admin`)
z.TypeIn(`#password`, `testing123`)
z.ClickOn(`#login-submit`)
z.WaitFor(`[data-testid="index-page"]`)
z.GoTo("/admin/table/", `[data-testid="admin-table--page"]`)
}

@ -14,7 +14,7 @@ func deleteTestUser(username string) {
func TestLogin(t *testing.T) {
deleteTestUser("testerzed")
z, cancel := Setup(t, 5)
z, cancel := Setup(t, 5000)
defer cancel()
z.GoTo("/register/", `[data-testid="register-index-page"]`)

@ -9,8 +9,13 @@ import (
"runtime"
"github.com/stretchr/testify/require"
browser "github.com/chromedp/chromedp"
"MY/webapp/config"
)
func init() {
config.Load("config.json")
}
type ZedBrowser struct {
ctx context.Context
require *require.Assertions
@ -25,14 +30,18 @@ func (z *ZedBrowser) ClickOn(id string) {
browser.Click(id))
z.require.NoError(err)
z.require.Equal(resp.Status, int64(200))
z.require.Equal(int64(200), resp.Status)
}
func (z *ZedBrowser) GoTo(path string, expect string) {
url := fmt.Sprintf(`http://%s%s`, config.Settings.Server.HostPort, path)
fmt.Println("URL: ", url)
err := browser.Run(z.ctx,
browser.Navigate(fmt.Sprintf(`http://127.0.0.1:5002%s`, path)),
browser.WaitVisible(`body > footer`),
browser.WaitVisible(expect))
browser.Navigate(url),
browser.WaitVisible(`body > footer`),
browser.WaitVisible(expect))
z.require.NoError(err)
}

Loading…
Cancel
Save