49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"ymhut-box/server/unified-management/internal/config"
|
|
"ymhut-box/server/unified-management/internal/db"
|
|
)
|
|
|
|
func TestBootstrapShowsDefaultPasswordOnlyBeforeChange(t *testing.T) {
|
|
root := t.TempDir()
|
|
cfg := &config.Config{
|
|
StorageDir: root,
|
|
Database: config.DatabaseConfig{
|
|
Provider: "sqlite",
|
|
SQLitePath: root + "/test.sqlite",
|
|
FailoverEnabled: true,
|
|
HealthIntervalSec: 3600,
|
|
},
|
|
}
|
|
store, err := db.Open(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer store.Close()
|
|
if err := store.EnsureDefaultAdmin(context.Background()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
service := NewService(store)
|
|
payload, err := service.Bootstrap(context.Background())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if payload["isDefaultPassword"] != true || payload["defaultPassword"] != "admin" {
|
|
t.Fatalf("unexpected bootstrap payload: %#v", payload)
|
|
}
|
|
if err := store.ChangeAdminPassword(context.Background(), "admin", "admin", "changed"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
payload, err = service.Bootstrap(context.Background())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if payload["isDefaultPassword"] != false || payload["defaultPassword"] != "" {
|
|
t.Fatalf("default password leaked after change: %#v", payload)
|
|
}
|
|
}
|