personal-site/auth/auth_test.go
2021-12-17 19:58:44 -05:00

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)
}