This commit is contained in:
@@ -2,8 +2,10 @@ package test_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"spend-sparrow/internal/auth_types"
|
||||
"spend-sparrow/internal/authentication"
|
||||
"spend-sparrow/internal/core"
|
||||
"spend-sparrow/internal/db"
|
||||
"spend-sparrow/internal/types"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -42,11 +44,11 @@ func TestUser(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
verifiedAt := time.Date(2020, 1, 5, 13, 0, 0, 0, time.UTC)
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
expected := types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
expected := auth_types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
|
||||
err := underTest.InsertUser(context.Background(), expected)
|
||||
require.NoError(t, err)
|
||||
@@ -63,38 +65,38 @@ func TestUser(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
_, err := underTest.GetUserByEmail(context.Background(), "nonExistentEmail")
|
||||
assert.Equal(t, db.ErrNotFound, err)
|
||||
assert.Equal(t, core.ErrNotFound, err)
|
||||
})
|
||||
t.Run("should return ErrUserExist", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
verifiedAt := time.Date(2020, 1, 5, 13, 0, 0, 0, time.UTC)
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
user := types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
user := auth_types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
|
||||
err := underTest.InsertUser(context.Background(), user)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = underTest.InsertUser(context.Background(), user)
|
||||
assert.Equal(t, db.ErrAlreadyExists, err)
|
||||
assert.Equal(t, core.ErrAlreadyExists, err)
|
||||
})
|
||||
t.Run("should return ErrInternal on missing NOT NULL fields", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
user := types.NewUser(uuid.New(), "some@email.de", false, nil, false, []byte("somePass"), nil, createAt)
|
||||
user := auth_types.NewUser(uuid.New(), "some@email.de", false, nil, false, []byte("somePass"), nil, createAt)
|
||||
|
||||
err := underTest.InsertUser(context.Background(), user)
|
||||
assert.Equal(t, types.ErrInternal, err)
|
||||
assert.Equal(t, core.ErrInternal, err)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -105,11 +107,11 @@ func TestToken(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
expiresAt := createAt.Add(24 * time.Hour)
|
||||
expected := types.NewToken(uuid.New(), "sessionId", "token", types.TokenTypeCsrf, createAt, expiresAt)
|
||||
expected := auth_types.NewToken(uuid.New(), "sessionId", "token", auth_types.TokenTypeCsrf, createAt, expiresAt)
|
||||
|
||||
err := underTest.InsertToken(context.Background(), expected)
|
||||
require.NoError(t, err)
|
||||
@@ -121,25 +123,25 @@ func TestToken(t *testing.T) {
|
||||
expected.SessionId = ""
|
||||
actuals, err := underTest.GetTokensByUserIdAndType(context.Background(), expected.UserId, expected.Type)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []*types.Token{expected}, actuals)
|
||||
assert.Equal(t, []*auth_types.Token{expected}, actuals)
|
||||
|
||||
expected.SessionId = "sessionId"
|
||||
expected.UserId = uuid.Nil
|
||||
actuals, err = underTest.GetTokensBySessionIdAndType(context.Background(), expected.SessionId, expected.Type)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []*types.Token{expected}, actuals)
|
||||
assert.Equal(t, []*auth_types.Token{expected}, actuals)
|
||||
})
|
||||
t.Run("should insert and return multiple tokens", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
expiresAt := createAt.Add(24 * time.Hour)
|
||||
userId := uuid.New()
|
||||
expected1 := types.NewToken(userId, "sessionId", "token1", types.TokenTypeCsrf, createAt, expiresAt)
|
||||
expected2 := types.NewToken(userId, "sessionId", "token2", types.TokenTypeCsrf, createAt, expiresAt)
|
||||
expected1 := auth_types.NewToken(userId, "sessionId", "token1", auth_types.TokenTypeCsrf, createAt, expiresAt)
|
||||
expected2 := auth_types.NewToken(userId, "sessionId", "token2", auth_types.TokenTypeCsrf, createAt, expiresAt)
|
||||
|
||||
err := underTest.InsertToken(context.Background(), expected1)
|
||||
require.NoError(t, err)
|
||||
@@ -150,7 +152,7 @@ func TestToken(t *testing.T) {
|
||||
expected2.UserId = uuid.Nil
|
||||
actuals, err := underTest.GetTokensBySessionIdAndType(context.Background(), expected1.SessionId, expected1.Type)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []*types.Token{expected1, expected2}, actuals)
|
||||
assert.Equal(t, []*auth_types.Token{expected1, expected2}, actuals)
|
||||
|
||||
expected1.SessionId = ""
|
||||
expected2.SessionId = ""
|
||||
@@ -158,49 +160,49 @@ func TestToken(t *testing.T) {
|
||||
expected2.UserId = userId
|
||||
actuals, err = underTest.GetTokensByUserIdAndType(context.Background(), userId, expected1.Type)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []*types.Token{expected1, expected2}, actuals)
|
||||
assert.Equal(t, []*auth_types.Token{expected1, expected2}, actuals)
|
||||
})
|
||||
t.Run("should return ErrNotFound", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
_, err := underTest.GetToken(context.Background(), "nonExistent")
|
||||
assert.Equal(t, db.ErrNotFound, err)
|
||||
assert.Equal(t, core.ErrNotFound, err)
|
||||
|
||||
_, err = underTest.GetTokensByUserIdAndType(context.Background(), uuid.New(), types.TokenTypeEmailVerify)
|
||||
assert.Equal(t, db.ErrNotFound, err)
|
||||
_, err = underTest.GetTokensByUserIdAndType(context.Background(), uuid.New(), auth_types.TokenTypeEmailVerify)
|
||||
assert.Equal(t, core.ErrNotFound, err)
|
||||
|
||||
_, err = underTest.GetTokensBySessionIdAndType(context.Background(), "sessionId", types.TokenTypeEmailVerify)
|
||||
assert.Equal(t, db.ErrNotFound, err)
|
||||
_, err = underTest.GetTokensBySessionIdAndType(context.Background(), "sessionId", auth_types.TokenTypeEmailVerify)
|
||||
assert.Equal(t, core.ErrNotFound, err)
|
||||
})
|
||||
t.Run("should return ErrAlreadyExists", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
verifiedAt := time.Date(2020, 1, 5, 13, 0, 0, 0, time.UTC)
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
user := types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
user := auth_types.NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt)
|
||||
|
||||
err := underTest.InsertUser(context.Background(), user)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = underTest.InsertUser(context.Background(), user)
|
||||
assert.Equal(t, db.ErrAlreadyExists, err)
|
||||
assert.Equal(t, core.ErrAlreadyExists, err)
|
||||
})
|
||||
t.Run("should return ErrInternal on missing NOT NULL fields", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := setupDb(t)
|
||||
|
||||
underTest := db.NewAuthSqlite(d)
|
||||
underTest := authentication.NewDbSqlite(d)
|
||||
|
||||
createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC)
|
||||
user := types.NewUser(uuid.New(), "some@email.de", false, nil, false, []byte("somePass"), nil, createAt)
|
||||
user := auth_types.NewUser(uuid.New(), "some@email.de", false, nil, false, []byte("somePass"), nil, createAt)
|
||||
|
||||
err := underTest.InsertUser(context.Background(), user)
|
||||
assert.Equal(t, types.ErrInternal, err)
|
||||
assert.Equal(t, core.ErrInternal, err)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2,8 +2,9 @@ package test_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"spend-sparrow/internal/db"
|
||||
"spend-sparrow/internal/service"
|
||||
"spend-sparrow/internal/auth_types"
|
||||
"spend-sparrow/internal/authentication"
|
||||
"spend-sparrow/internal/core"
|
||||
"spend-sparrow/internal/types"
|
||||
"spend-sparrow/mocks"
|
||||
"strings"
|
||||
@@ -30,26 +31,26 @@ func TestSignUp(t *testing.T) {
|
||||
t.Run("should check for correct email address", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
mockAuthDb := mocks.NewMockAuth(t)
|
||||
mockAuthDb := mocks.NewMockDb(t)
|
||||
mockRandom := mocks.NewMockRandom(t)
|
||||
mockClock := mocks.NewMockClock(t)
|
||||
mockMail := mocks.NewMockMail(t)
|
||||
|
||||
underTest := service.NewAuth(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
underTest := authentication.NewService(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
|
||||
_, err := underTest.SignUp(context.Background(), "invalid email address", "SomeStrongPassword123!")
|
||||
|
||||
assert.Equal(t, service.ErrInvalidEmail, err)
|
||||
assert.Equal(t, authentication.ErrInvalidEmail, err)
|
||||
})
|
||||
t.Run("should check for password complexity", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
mockAuthDb := mocks.NewMockAuth(t)
|
||||
mockAuthDb := mocks.NewMockDb(t)
|
||||
mockRandom := mocks.NewMockRandom(t)
|
||||
mockClock := mocks.NewMockClock(t)
|
||||
mockMail := mocks.NewMockMail(t)
|
||||
|
||||
underTest := service.NewAuth(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
underTest := authentication.NewService(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
|
||||
weakPasswords := []string{
|
||||
"123!ab", // too short
|
||||
@@ -60,13 +61,13 @@ func TestSignUp(t *testing.T) {
|
||||
|
||||
for _, password := range weakPasswords {
|
||||
_, err := underTest.SignUp(context.Background(), "some@valid.email", password)
|
||||
assert.Equal(t, service.ErrInvalidPassword, err)
|
||||
assert.Equal(t, authentication.ErrInvalidPassword, err)
|
||||
}
|
||||
})
|
||||
t.Run("should signup correctly", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
mockAuthDb := mocks.NewMockAuth(t)
|
||||
mockAuthDb := mocks.NewMockDb(t)
|
||||
mockRandom := mocks.NewMockRandom(t)
|
||||
mockClock := mocks.NewMockClock(t)
|
||||
mockMail := mocks.NewMockMail(t)
|
||||
@@ -77,7 +78,7 @@ func TestSignUp(t *testing.T) {
|
||||
salt := []byte("salt")
|
||||
createTime := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
|
||||
expected := types.NewUser(userId, email, false, nil, false, service.GetHashPassword(password, salt), salt, createTime)
|
||||
expected := auth_types.NewUser(userId, email, false, nil, false, authentication.GetHashPassword(password, salt), salt, createTime)
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
@@ -86,7 +87,7 @@ func TestSignUp(t *testing.T) {
|
||||
mockClock.EXPECT().Now().Return(createTime)
|
||||
mockAuthDb.EXPECT().InsertUser(context.Background(), expected).Return(nil)
|
||||
|
||||
underTest := service.NewAuth(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
underTest := authentication.NewService(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
actual, err := underTest.SignUp(context.Background(), email, password)
|
||||
|
||||
require.NoError(t, err)
|
||||
@@ -96,7 +97,7 @@ func TestSignUp(t *testing.T) {
|
||||
t.Run("should return ErrAccountExists", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
mockAuthDb := mocks.NewMockAuth(t)
|
||||
mockAuthDb := mocks.NewMockDb(t)
|
||||
mockRandom := mocks.NewMockRandom(t)
|
||||
mockClock := mocks.NewMockClock(t)
|
||||
mockMail := mocks.NewMockMail(t)
|
||||
@@ -106,19 +107,19 @@ func TestSignUp(t *testing.T) {
|
||||
createTime := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
password := "SomeStrongPassword123!"
|
||||
salt := []byte("salt")
|
||||
user := types.NewUser(userId, email, false, nil, false, service.GetHashPassword(password, salt), salt, createTime)
|
||||
user := auth_types.NewUser(userId, email, false, nil, false, authentication.GetHashPassword(password, salt), salt, createTime)
|
||||
|
||||
ctx := context.Background()
|
||||
mockRandom.EXPECT().UUID(ctx).Return(user.Id, nil)
|
||||
mockRandom.EXPECT().Bytes(ctx, 16).Return(salt, nil)
|
||||
mockClock.EXPECT().Now().Return(createTime)
|
||||
|
||||
mockAuthDb.EXPECT().InsertUser(context.Background(), user).Return(db.ErrAlreadyExists)
|
||||
mockAuthDb.EXPECT().InsertUser(context.Background(), user).Return(core.ErrAlreadyExists)
|
||||
|
||||
underTest := service.NewAuth(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
underTest := authentication.NewService(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
|
||||
_, err := underTest.SignUp(context.Background(), user.Email, password)
|
||||
assert.Equal(t, service.ErrAccountExists, err)
|
||||
assert.Equal(t, authentication.ErrAccountExists, err)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -127,30 +128,30 @@ func TestSendVerificationMail(t *testing.T) {
|
||||
t.Run("should use stored token and send mail", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
token := types.NewToken(
|
||||
token := auth_types.NewToken(
|
||||
uuid.New(),
|
||||
"sessionId",
|
||||
"someRandomTokenToUse",
|
||||
types.TokenTypeEmailVerify,
|
||||
auth_types.TokenTypeEmailVerify,
|
||||
time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||
time.Date(2020, 1, 2, 0, 0, 0, 0, time.UTC))
|
||||
tokens := []*types.Token{token}
|
||||
tokens := []*auth_types.Token{token}
|
||||
|
||||
email := "some@email.de"
|
||||
userId := uuid.New()
|
||||
|
||||
mockAuthDb := mocks.NewMockAuth(t)
|
||||
mockAuthDb := mocks.NewMockDb(t)
|
||||
mockRandom := mocks.NewMockRandom(t)
|
||||
mockClock := mocks.NewMockClock(t)
|
||||
mockMail := mocks.NewMockMail(t)
|
||||
|
||||
ctx := context.Background()
|
||||
mockAuthDb.EXPECT().GetTokensByUserIdAndType(context.Background(), userId, types.TokenTypeEmailVerify).Return(tokens, nil)
|
||||
mockAuthDb.EXPECT().GetTokensByUserIdAndType(context.Background(), userId, auth_types.TokenTypeEmailVerify).Return(tokens, nil)
|
||||
mockMail.EXPECT().SendMail(ctx, email, "Welcome to spend-sparrow", mock.MatchedBy(func(message string) bool {
|
||||
return strings.Contains(message, token.Token)
|
||||
})).Return()
|
||||
|
||||
underTest := service.NewAuth(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
underTest := authentication.NewService(mockAuthDb, mockRandom, mockClock, mockMail, &settings)
|
||||
|
||||
underTest.SendVerificationMail(context.Background(), userId, email)
|
||||
})
|
||||
|
||||
@@ -7,8 +7,9 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"spend-sparrow/internal"
|
||||
"spend-sparrow/internal/service"
|
||||
"spend-sparrow/internal/types"
|
||||
"spend-sparrow/internal/auth_types"
|
||||
"spend-sparrow/internal/authentication"
|
||||
"spend-sparrow/internal/core"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
@@ -117,7 +118,7 @@ func waitForReady(
|
||||
default:
|
||||
if time.Since(startTime) >= timeout {
|
||||
t.Fatal("timeout reached while waiting for endpoint")
|
||||
return types.ErrInternal
|
||||
return core.ErrInternal
|
||||
}
|
||||
// wait a little while between checks
|
||||
time.Sleep(250 * time.Millisecond)
|
||||
@@ -178,7 +179,7 @@ func createValidUserSession(t *testing.T, db *sqlx.DB, add string) (uuid.UUID, s
|
||||
t.Helper()
|
||||
userId := uuid.New()
|
||||
sessionId := "session-id" + add
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
csrfToken := "my-verifying-token" + add
|
||||
email := add + "mail@mail.de"
|
||||
|
||||
@@ -193,7 +194,7 @@ func createValidUserSession(t *testing.T, db *sqlx.DB, add string) (uuid.UUID, s
|
||||
|
||||
_, err = db.ExecContext(context.Background(), `
|
||||
INSERT INTO token (token, user_id, session_id, type, created_at, expires_at)
|
||||
VALUES (?, ?, ?, ?, datetime(), datetime("now", "+1 day"))`, csrfToken, userId, sessionId, types.TokenTypeCsrf)
|
||||
VALUES (?, ?, ?, ?, datetime(), datetime("now", "+1 day"))`, csrfToken, userId, sessionId, auth_types.TokenTypeCsrf)
|
||||
require.NoError(t, err)
|
||||
|
||||
return userId, csrfToken, sessionId
|
||||
|
||||
@@ -3,8 +3,8 @@ package test_test
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"spend-sparrow/internal/service"
|
||||
"spend-sparrow/internal/types"
|
||||
"spend-sparrow/internal/auth_types"
|
||||
"spend-sparrow/internal/authentication"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -110,7 +110,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
userId := uuid.New()
|
||||
sessionId := "session-id"
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -136,7 +136,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -163,7 +163,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -206,7 +206,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -247,7 +247,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, uuid.New(), pass, []byte("salt"))
|
||||
@@ -295,7 +295,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, uuid.New(), pass, []byte("salt"))
|
||||
@@ -414,7 +414,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, uuid.New(), pass, []byte("salt"))
|
||||
@@ -467,7 +467,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
userId := uuid.New()
|
||||
sessionId := "session-id"
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -550,7 +550,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", TRUE, FALSE, ?, ?, datetime())`, uuid.New(), service.GetHashPassword("password", []byte("salt")), []byte("salt"))
|
||||
VALUES (?, "mail@mail.de", TRUE, FALSE, ?, ?, datetime())`, uuid.New(), authentication.GetHashPassword("password", []byte("salt")), []byte("salt"))
|
||||
require.NoError(t, err)
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, basePath+"/auth/signup", nil)
|
||||
@@ -631,7 +631,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, rows)
|
||||
var token string
|
||||
err = db.QueryRowContext(ctx, "SELECT t.token FROM token t INNER JOIN user u ON u.user_id = t.user_id WHERE u.email = ? AND t.type = ?", "mail@mail.de", types.TokenTypeEmailVerify).Scan(&token)
|
||||
err = db.QueryRowContext(ctx, "SELECT t.token FROM token t INNER JOIN user u ON u.user_id = t.user_id WHERE u.email = ? AND t.type = ?", "mail@mail.de", auth_types.TokenTypeEmailVerify).Scan(&token)
|
||||
require.NoError(t, err)
|
||||
assert.NotEmpty(t, token)
|
||||
})
|
||||
@@ -676,7 +676,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
_, err = db.ExecContext(ctx, `
|
||||
INSERT INTO token (token, user_id, type, created_at, expires_at)
|
||||
VALUES (?, ?, ?, datetime("now", "-16 minute"), datetime("now", "-1 minute"))`, token, userId, types.TokenTypeEmailVerify)
|
||||
VALUES (?, ?, ?, datetime("now", "-16 minute"), datetime("now", "-1 minute"))`, token, userId, auth_types.TokenTypeEmailVerify)
|
||||
require.NoError(t, err)
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, basePath+"/auth/verify-email?token="+token, nil)
|
||||
@@ -706,7 +706,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
_, err = db.ExecContext(ctx, `
|
||||
INSERT INTO token (token, user_id, session_id, type, created_at, expires_at)
|
||||
VALUES (?, ?, "", ?, datetime("now"), datetime("now", "+15 minute"))`, token, userId, types.TokenTypeEmailVerify)
|
||||
VALUES (?, ?, "", ?, datetime("now"), datetime("now", "+15 minute"))`, token, userId, auth_types.TokenTypeEmailVerify)
|
||||
require.NoError(t, err)
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, basePath+"/auth/verify-email?token="+token, nil)
|
||||
@@ -746,7 +746,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
userId := uuid.New()
|
||||
sessionId := "session-id"
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -765,7 +765,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
||||
var csrfToken string
|
||||
err = db.QueryRowContext(ctx, "SELECT token FROM token WHERE user_id = ? AND type = ?", userId, types.TokenTypeCsrf).Scan(&csrfToken)
|
||||
err = db.QueryRowContext(ctx, "SELECT token FROM token WHERE user_id = ? AND type = ?", userId, auth_types.TokenTypeCsrf).Scan(&csrfToken)
|
||||
require.NoError(t, err)
|
||||
|
||||
req, err = http.NewRequestWithContext(ctx, http.MethodPost, basePath+"/api/auth/signout", nil)
|
||||
@@ -824,7 +824,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -870,7 +870,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1039,7 +1039,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1078,7 +1078,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -1128,7 +1128,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
@@ -1180,7 +1180,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
userId := uuid.New()
|
||||
userIdOther := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1230,7 +1230,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
||||
pass = service.GetHashPassword("MyNewSecurePassword1!", []byte("salt"))
|
||||
pass = authentication.GetHashPassword("MyNewSecurePassword1!", []byte("salt"))
|
||||
var rows int
|
||||
err = db.QueryRowContext(ctx, "SELECT COUNT(*) FROM user WHERE user_id = ? AND password = ?", userId, pass).Scan(&rows)
|
||||
require.NoError(t, err)
|
||||
@@ -1259,7 +1259,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1287,7 +1287,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1317,7 +1317,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
assert.Equal(t, http.StatusBadRequest, resp.StatusCode)
|
||||
|
||||
var rows int
|
||||
err = d.QueryRowContext(ctx, "SELECT COUNT(*) FROM token WHERE user_id = ? AND type = ?", userId, types.TokenTypePasswordReset).Scan(&rows)
|
||||
err = d.QueryRowContext(ctx, "SELECT COUNT(*) FROM token WHERE user_id = ? AND type = ?", userId, auth_types.TokenTypePasswordReset).Scan(&rows)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 0, rows)
|
||||
})
|
||||
@@ -1362,7 +1362,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
db, basePath, ctx := setupIntegrationTest(t)
|
||||
|
||||
userId := uuid.New()
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := db.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", TRUE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1399,7 +1399,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
assert.Contains(t, resp.Header.Get("Hx-Trigger"), msg)
|
||||
|
||||
var rows int
|
||||
err = db.QueryRowContext(ctx, "SELECT COUNT(*) FROM token WHERE user_id = ? AND type = ?", userId, types.TokenTypePasswordReset).Scan(&rows)
|
||||
err = db.QueryRowContext(ctx, "SELECT COUNT(*) FROM token WHERE user_id = ? AND type = ?", userId, auth_types.TokenTypePasswordReset).Scan(&rows)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, rows)
|
||||
})
|
||||
@@ -1412,7 +1412,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1455,7 +1455,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1475,7 +1475,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
token := "password-reset-token"
|
||||
_, err = d.ExecContext(ctx, `
|
||||
INSERT INTO token (token, user_id, session_id, type, created_at, expires_at)
|
||||
VALUES (?, ?, ?, ?, datetime("now", "-16 minute"), datetime("now", "-1 minute"))`, token, userId, "", types.TokenTypePasswordReset)
|
||||
VALUES (?, ?, ?, ?, datetime("now", "-16 minute"), datetime("now", "-1 minute"))`, token, userId, "", auth_types.TokenTypePasswordReset)
|
||||
require.NoError(t, err)
|
||||
|
||||
formData := url.Values{
|
||||
@@ -1504,7 +1504,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1524,7 +1524,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
token := "password-reset-token"
|
||||
_, err = d.ExecContext(ctx, `
|
||||
INSERT INTO token (token, user_id, session_id, type, created_at, expires_at)
|
||||
VALUES (?, ?, ?, ?, datetime("now"), datetime("now", "+15 minute"))`, token, userId, "", types.TokenTypePasswordReset)
|
||||
VALUES (?, ?, ?, ?, datetime("now"), datetime("now", "+15 minute"))`, token, userId, "", auth_types.TokenTypePasswordReset)
|
||||
require.NoError(t, err)
|
||||
|
||||
formData := url.Values{
|
||||
@@ -1553,7 +1553,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
d, basePath, ctx := setupIntegrationTest(t)
|
||||
userId := uuid.New()
|
||||
|
||||
pass := service.GetHashPassword("password", []byte("salt"))
|
||||
pass := authentication.GetHashPassword("password", []byte("salt"))
|
||||
_, err := d.ExecContext(ctx, `
|
||||
INSERT INTO user (user_id, email, email_verified, is_admin, password, salt, created_at)
|
||||
VALUES (?, "mail@mail.de", FALSE, FALSE, ?, ?, datetime())`, userId, pass, []byte("salt"))
|
||||
@@ -1590,7 +1590,7 @@ func TestIntegrationAuth(t *testing.T) {
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
||||
var token string
|
||||
err = d.QueryRowContext(ctx, "SELECT token FROM token WHERE type = ?", types.TokenTypePasswordReset).Scan(&token)
|
||||
err = d.QueryRowContext(ctx, "SELECT token FROM token WHERE type = ?", auth_types.TokenTypePasswordReset).Scan(&token)
|
||||
require.NoError(t, err)
|
||||
|
||||
formData = url.Values{
|
||||
|
||||
Reference in New Issue
Block a user