Auth is now restructured into a feature and tests are organized but Go won't run them.

master
Zed A. Shaw 4 days ago
parent 0e1176b44c
commit 5c7686a54f
  1. 2
      Makefile
  2. 36
      common/auth.go
  3. 5
      features/auth/api.go
  4. 46
      features/auth/db.go
  5. 10
      features/auth/init.go
  6. 11
      features/auth/views.go
  7. 4
      features/init.go
  8. 2
      main.go
  9. 1
      tests/admin/admin_ui_test.go
  10. 3
      tests/auth/login_test.go
  11. 4
      tests/fakepay/example_test.go
  12. 15
      tests/main.go
  13. 4
      tests/paypal/example_test.go
  14. 4
      tests/shopping/example_test.go
  15. 0
      tests/tools/helpers.go
  16. 4
      tools/cmd/fgen/templates/tests/example_test.go

@ -12,7 +12,7 @@ cmds:
go build -o bin/ ./tools/cmd/fgen
go build -o bin/ ./tools/cmd/qmgr
go build -o bin/ ./tools/cmd/mailer
go test MY/webapp/tests -c -o bin/
go test MY/webapp/tests/... -c -o bin/
site:
go tool ssgod

@ -2,12 +2,10 @@ package common
import (
"errors"
"golang.org/x/crypto/bcrypt"
"log"
"github.com/gofiber/fiber/v2"
_ "github.com/mattn/go-sqlite3"
sq "github.com/Masterminds/squirrel"
"github.com/gofiber/fiber/v2/middleware/session"
"MY/webapp/data"
@ -39,37 +37,3 @@ func AuthCheck(c *fiber.Ctx, needs_admin bool) (*session.Session, error) {
return sess, errors.New("Authentication, permission failure")
}
}
func LogoutUser(c *fiber.Ctx) error {
sess, err := STORE.Get(c)
if err != nil { return err }
err = sess.Destroy()
if err != nil { return err }
err = sess.Save()
return err
}
func LoginUser(result *data.User, login *data.Login) (bool, error) {
sql, args, err := sq.Select("username, password").
From("user").Where("username=?", login.Username).ToSql()
if err != nil { return false, err }
err = data.DB.Get(result, sql, args...)
if err != nil { return false, err }
pass_good := bcrypt.CompareHashAndPassword([]byte(result.Password), []byte(login.Password))
if pass_good != nil { return false, pass_good }
return login.Username == result.Username && pass_good == nil, nil
}
func SetUserPassword(user *data.User) error {
hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12)
if err != nil { return err }
user.Password = string(hashed)
return nil
}

@ -1,4 +1,4 @@
package auth
package features_auth
import (
"github.com/gofiber/fiber/v2"
@ -68,8 +68,7 @@ func PostApiLogin(c *fiber.Ctx) error {
}
}
func Setup(app *fiber.App) {
func SetupApi(app *fiber.App) {
app.Get("/api/authcheck", GetApiAuthCheck)
app.Get("/api/logout", GetApiLogout)
app.Post("/api/register", PostApiRegister)

@ -0,0 +1,46 @@
package features_auth
import (
"golang.org/x/crypto/bcrypt"
"github.com/gofiber/fiber/v2"
_ "github.com/mattn/go-sqlite3"
sq "github.com/Masterminds/squirrel"
"MY/webapp/data"
"MY/webapp/common"
)
func SetUserPassword(user *data.User) error {
hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12)
if err != nil { return err }
user.Password = string(hashed)
return nil
}
func LogoutUser(c *fiber.Ctx) error {
sess, err := common.STORE.Get(c)
if err != nil { return err }
err = sess.Destroy()
if err != nil { return err }
err = sess.Save()
return err
}
func LoginUser(result *data.User, login *data.Login) (bool, error) {
sql, args, err := sq.Select("username, password").
From("user").Where("username=?", login.Username).ToSql()
if err != nil { return false, err }
err = data.DB.Get(result, sql, args...)
if err != nil { return false, err }
pass_good := bcrypt.CompareHashAndPassword([]byte(result.Password), []byte(login.Password))
if pass_good != nil { return false, pass_good }
return login.Username == result.Username && pass_good == nil, nil
}

@ -0,0 +1,10 @@
package features_auth
import (
"github.com/gofiber/fiber/v2"
)
func Setup(app *fiber.App) {
SetupApi(app)
SetupViews(app)
}

@ -0,0 +1,11 @@
package features_auth
import (
"github.com/gofiber/fiber/v2"
. "MY/webapp/common"
)
func SetupViews(app *fiber.App) {
err := ConfigViews(app, "views/auth")
if err != nil { panic(err) }
}

@ -7,12 +7,14 @@ import (
"MY/webapp/features/shopping"
"MY/webapp/features/fakepay"
"MY/webapp/features/admin"
"MY/webapp/features/auth"
)
func Setup(app *fiber.App) {
features_auth.Setup(app)
features_admin.Setup(app)
features_email.Setup(app)
features_paypal.Setup(app)
features_shopping.Setup(app)
features_fakepay.Setup(app)
features_admin.Setup(app)
}

@ -17,7 +17,6 @@ import (
"MY/webapp/data"
"MY/webapp/config"
"MY/webapp/common"
"MY/webapp/auth"
"MY/webapp/features"
)
@ -48,7 +47,6 @@ func main() {
common.STORE = session.New()
data.Setup(config.Settings.Database.Driver, config.Settings.Database.Url)
auth.Setup(app)
features.Setup(app)
// this sets up graceful shutdown

@ -6,6 +6,7 @@ import (
// "github.com/stretchr/testify/require"
// "MY/webapp/data"
// sq "github.com/Masterminds/squirrel"
. "MY/webapp/tests/tools"
)
func TestTableListing(t *testing.T) {

@ -1,10 +1,11 @@
package tests
package tests_auth
import (
"testing"
// "github.com/stretchr/testify/require"
"MY/webapp/data"
sq "github.com/Masterminds/squirrel"
. "MY/webapp/tests/tools"
)
func deleteTestUser(username string) {

@ -2,11 +2,11 @@ package tests
import (
"testing"
"github.com/stretchr/testify/require"
assert "github.com/stretchr/testify/require"
)
func TestLogin(t *testing.T) {
assert.Equal(true, false)
assert.Equal(t, true, false)
}
func TestMain(m *testing.M) {

@ -0,0 +1,15 @@
package tests
import (
"testing"
// "github.com/stretchr/testify/require"
"MY/webapp/data"
)
func TestMain(m *testing.M) {
data.Setup("sqlite3", "./db.sqlite3")
m.Run()
data.Shutdown()
}

@ -2,11 +2,11 @@ package tests
import (
"testing"
"github.com/stretchr/testify/require"
assert "github.com/stretchr/testify/require"
)
func TestLogin(t *testing.T) {
assert.Equal(true, false)
assert.Equal(t, true, false)
}
func TestMain(m *testing.M) {

@ -2,11 +2,11 @@ package tests
import (
"testing"
"github.com/stretchr/testify/require"
assert "github.com/stretchr/testify/require"
)
func TestLogin(t *testing.T) {
assert.Equal(true, false)
assert.Equal(t, true, false)
}
func TestMain(m *testing.M) {

@ -2,11 +2,11 @@ package tests
import (
"testing"
"github.com/stretchr/testify/require"
assert "github.com/stretchr/testify/require"
)
func TestLogin(t *testing.T) {
assert.Equal(true, false)
assert.Equal(t, true, false)
}
func TestMain(m *testing.M) {

Loading…
Cancel
Save