Merge in DNS/adguard-home from AGDNS-2743-aghuser to master
Squashed commit of the following:
commit e3920df62be1625a3cfcc314a4aab3d1a378ca53
Merge: 70ce647f4 106785aab
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Mon Apr 7 19:44:15 2025 +0300
Merge branch 'master' into AGDNS-2743-aghuser
commit 70ce647f47921f2bb34a561d63de2041f31e6bce
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Fri Apr 4 18:17:09 2025 +0300
aghuser: imp docs
commit 87f6984248189de4a3dc0f2a245775141ea974d0
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Wed Apr 2 19:03:03 2025 +0300
aghuser: imp code
commit 636ecae85d1fce1657b5699a29451a9079d40222
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Tue Apr 1 17:30:54 2025 +0300
all: add tests
commit 5c842e94111123cf988332ccd1eb6754fa45585d
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Thu Mar 27 21:44:25 2025 +0300
all: aghuser
84 lines
2.0 KiB
Go
84 lines
2.0 KiB
Go
package aghuser_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/AdguardTeam/AdGuardHome/internal/aghuser"
|
|
"github.com/AdguardTeam/golibs/errors"
|
|
"github.com/AdguardTeam/golibs/testutil"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
func TestDB(t *testing.T) {
|
|
db := aghuser.NewDefaultDB()
|
|
|
|
const (
|
|
userWithIDPassRaw = "user_with_id_password"
|
|
userSecondPassRaw = "user_second_password"
|
|
)
|
|
|
|
userWithIDPassHash, err := bcrypt.GenerateFromPassword(
|
|
[]byte(userWithIDPassRaw),
|
|
bcrypt.DefaultCost,
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
userSecondPassHash, err := bcrypt.GenerateFromPassword(
|
|
[]byte(userSecondPassRaw),
|
|
bcrypt.DefaultCost,
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
userWithIDPass := aghuser.NewDefaultPassword(string(userWithIDPassHash))
|
|
userSecondPass := aghuser.NewDefaultPassword(string(userSecondPassHash))
|
|
|
|
var (
|
|
userWithID = &aghuser.User{
|
|
ID: aghuser.MustNewUserID(),
|
|
Login: "user_with_id",
|
|
Password: userWithIDPass,
|
|
}
|
|
userSecond = &aghuser.User{
|
|
ID: aghuser.MustNewUserID(),
|
|
Login: "user_second",
|
|
Password: userSecondPass,
|
|
}
|
|
userDuplicateLogin = &aghuser.User{
|
|
ID: aghuser.MustNewUserID(),
|
|
Login: userWithID.Login,
|
|
Password: userWithIDPass,
|
|
}
|
|
)
|
|
|
|
ctx := testutil.ContextWithTimeout(t, testTimeout)
|
|
|
|
err = db.Create(ctx, userWithID)
|
|
require.NoError(t, err)
|
|
|
|
err = db.Create(ctx, userSecond)
|
|
require.NoError(t, err)
|
|
|
|
err = db.Create(ctx, userDuplicateLogin)
|
|
assert.ErrorIs(t, err, errors.ErrDuplicated)
|
|
|
|
got, err := db.ByUUID(ctx, userWithID.ID)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, userWithID, got)
|
|
assert.True(t, got.Password.Authenticate(ctx, userWithIDPassRaw))
|
|
|
|
got, err = db.ByLogin(ctx, userSecond.Login)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, userSecond, got)
|
|
assert.True(t, got.Password.Authenticate(ctx, userSecondPassRaw))
|
|
|
|
users, err := db.All(ctx)
|
|
require.NoError(t, err)
|
|
|
|
assert.Len(t, users, 2)
|
|
assert.Equal(t, []*aghuser.User{userSecond, userWithID}, users)
|
|
}
|