117 lines
2.2 KiB
Go
117 lines
2.2 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"goweb/config"
|
|
"goweb/container"
|
|
"goweb/ent"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var (
|
|
authClient *Client
|
|
c *container.Container
|
|
ctx echo.Context
|
|
usr *ent.User
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
// Set the environment to test
|
|
config.SwitchEnvironment(config.EnvTest)
|
|
|
|
// Create an auth client
|
|
c := container.NewContainer()
|
|
authClient = c.Auth
|
|
|
|
// Create a web context
|
|
req := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(""))
|
|
rec := httptest.NewRecorder()
|
|
ctx = c.Web.NewContext(req, rec)
|
|
|
|
// Create a test uset
|
|
var err error
|
|
usr, err = c.ORM.User.
|
|
Create().
|
|
SetEmail("test@test.dev").
|
|
SetPassword("abc").
|
|
SetName("Test User").
|
|
Save(context.Background())
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Run tests
|
|
exitVal := m.Run()
|
|
os.Exit(exitVal)
|
|
}
|
|
|
|
func TestLogin(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestLogout(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestGetAuthenticatedUserID(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestGetAuthenticatedUser(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestHashPassword(t *testing.T) {
|
|
pw := "abcdef"
|
|
hash, err := authClient.HashPassword(pw)
|
|
assert.NoError(t, err)
|
|
assert.NotEqual(t, hash, pw)
|
|
}
|
|
|
|
func TestCheckPassword(t *testing.T) {
|
|
pw := "testcheckpassword"
|
|
hash, err := authClient.HashPassword(pw)
|
|
assert.NoError(t, err)
|
|
err = authClient.CheckPassword(pw, hash)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestGeneratePasswordResetToken(t *testing.T) {
|
|
token, pt, err := authClient.GeneratePasswordResetToken(ctx, usr.ID)
|
|
require.NoError(t, err)
|
|
hash, err := authClient.HashPassword(token)
|
|
require.NoError(t, err)
|
|
assert.Len(t, token, c.Config.App.PasswordToken.Length)
|
|
assert.Equal(t, hash, pt.Hash)
|
|
assert.Equal(t, usr.ID, pt.Edges.User.ID)
|
|
}
|
|
|
|
func TestGetValidPasswordToken(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestDeletePasswordTokens(t *testing.T) {
|
|
}
|
|
|
|
func TestRandomToken(t *testing.T) {
|
|
length := 64
|
|
a, err := authClient.RandomToken(length)
|
|
require.NoError(t, err)
|
|
b, err := authClient.RandomToken(length)
|
|
require.NoError(t, err)
|
|
assert.Len(t, a, 64)
|
|
assert.Len(t, b, 64)
|
|
assert.NotEqual(t, a, b)
|
|
}
|