mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-09-29 12:36:44 +00:00
Completes https://github.com/XTLS/Xray-core/pull/6807 and https://github.com/XTLS/Xray-core/pull/6810
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package masque
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/xtls/xray-core/common/protocol"
|
|
)
|
|
|
|
func TestValidator(t *testing.T) {
|
|
v := newValidator()
|
|
user := &protocol.MemoryUser{Email: "U@example.com", Account: &MemoryAccount{Password: "p"}}
|
|
require.NoError(t, v.add(user))
|
|
for _, u := range []*protocol.MemoryUser{
|
|
{Email: "u@example.com", Account: &MemoryAccount{Password: "other"}},
|
|
{Account: &MemoryAccount{Password: "p"}},
|
|
{Email: "a:b", Account: &MemoryAccount{Password: "p"}},
|
|
{Email: "b@example.com", Account: &MemoryAccount{}},
|
|
} {
|
|
require.Error(t, v.add(u), u.Email)
|
|
}
|
|
|
|
require.Equal(t, user, v.get("u@example.com", "p"))
|
|
require.Equal(t, user, v.get("U@EXAMPLE.COM", "p"))
|
|
require.Nil(t, v.get("u@example.com", "x"))
|
|
require.Nil(t, v.get("x@example.com", "p"))
|
|
require.Nil(t, v.get("", ""))
|
|
require.Equal(t, user, v.getByEmail("u@example.com"))
|
|
require.Equal(t, []*protocol.MemoryUser{user}, v.getAll())
|
|
require.Equal(t, int64(1), v.count())
|
|
|
|
require.True(t, v.contains(user))
|
|
removed, err := v.delByEmail("u@EXAMPLE.com")
|
|
require.NoError(t, err)
|
|
require.Equal(t, user, removed)
|
|
_, err = v.delByEmail("u@example.com")
|
|
require.Error(t, err)
|
|
require.False(t, v.contains(user))
|
|
require.Nil(t, v.get("u@example.com", "p"))
|
|
require.Zero(t, v.count())
|
|
}
|
|
|
|
func TestAccount(t *testing.T) {
|
|
account, err := (&Account{Password: "p"}).AsAccount()
|
|
require.NoError(t, err)
|
|
require.True(t, account.Equals(&MemoryAccount{Password: "p"}))
|
|
require.False(t, account.Equals(&MemoryAccount{Password: "x"}))
|
|
require.Equal(t, &Account{Password: "p"}, account.ToProto())
|
|
}
|