4cddfcf2f3
Backend Tests / Tests (other) (push) Failing after 1s
Backend Tests / Static Checks (push) Failing after 2s
Backend Tests / Tests (internal) (push) Failing after 2s
Backend Tests / Tests (server) (push) Failing after 1s
Backend Tests / Tests (store) (push) Failing after 1s
Build Canary Image / build-frontend (push) Failing after 1s
Frontend Tests / Lint (push) Failing after 1s
Build Canary Image / build-push (linux/amd64) (push) Has been skipped
Build Canary Image / build-push (linux/arm64) (push) Has been skipped
Build Canary Image / merge (push) Has been skipped
Frontend Tests / Build (push) Failing after 1s
Release Please / release-please (push) Failing after 0s
Proto Linter / Lint Protos (push) Failing after 2s
54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
package store_test
|
|
|
|
import (
|
|
"context"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"golang.org/x/crypto/bcrypt"
|
|
|
|
"github.com/usememos/memos/internal/profile"
|
|
"github.com/usememos/memos/store"
|
|
"github.com/usememos/memos/store/db/sqlite"
|
|
)
|
|
|
|
func TestDemoSeedRequiresIdentityProviderSignIn(t *testing.T) {
|
|
ctx := context.Background()
|
|
p := &profile.Profile{
|
|
Demo: true,
|
|
Data: t.TempDir(),
|
|
Driver: "sqlite",
|
|
DSN: filepath.Join(t.TempDir(), "demo.db"),
|
|
}
|
|
driver, err := sqlite.NewDB(p)
|
|
require.NoError(t, err)
|
|
stores := store.New(driver, p)
|
|
t.Cleanup(func() {
|
|
require.NoError(t, stores.Close())
|
|
})
|
|
|
|
require.NoError(t, stores.Migrate(ctx))
|
|
generalSetting, err := stores.GetInstanceGeneralSetting(ctx)
|
|
require.NoError(t, err)
|
|
require.True(t, generalSetting.DisallowPasswordAuth)
|
|
require.False(t, generalSetting.DisallowUserRegistration, "SSO first-login provisioning must remain enabled")
|
|
|
|
demoUsername := "demo"
|
|
demoUser, err := stores.GetUser(ctx, &store.FindUser{Username: &demoUsername})
|
|
require.NoError(t, err)
|
|
require.NotNil(t, demoUser)
|
|
require.Equal(t, store.RoleAdmin, demoUser.Role)
|
|
require.Error(t, bcrypt.CompareHashAndPassword([]byte(demoUser.PasswordHash), []byte("demo")))
|
|
demoCost, err := bcrypt.Cost([]byte(demoUser.PasswordHash))
|
|
require.NoError(t, err)
|
|
require.GreaterOrEqual(t, demoCost, 12)
|
|
|
|
aliceUsername := "alice"
|
|
aliceUser, err := stores.GetUser(ctx, &store.FindUser{Username: &aliceUsername})
|
|
require.NoError(t, err)
|
|
require.NotNil(t, aliceUser)
|
|
require.Error(t, bcrypt.CompareHashAndPassword([]byte(aliceUser.PasswordHash), []byte("demo")))
|
|
require.NotEqual(t, demoUser.PasswordHash, aliceUser.PasswordHash)
|
|
}
|