You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.2 KiB
36 lines
1.2 KiB
package mock
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"tera-clone/services/tera-api/internal/domain"
|
|
)
|
|
|
|
func TestReauthenticationUsesSessionAccountAndPreservesSession(t *testing.T) {
|
|
store := NewStore(fixedClock)
|
|
defer store.Close()
|
|
force := false
|
|
_, err := store.CreateAuthUser(context.Background(), domain.AuthUserCreateRequest{Username: "second-admin", Password: "second-admin-secret", Role: "administrator", ForceChange: &force})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
session, err := store.Login(context.Background(), domain.AuthLoginRequest{Username: "second-admin", Password: "second-admin-secret"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
actor, err := store.ActorBySession(context.Background(), session.SessionToken)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx := domain.WithActor(context.Background(), actor)
|
|
if err := store.VerifyCurrentPassword(ctx, "mock-admin-secret"); err == nil {
|
|
t.Fatal("another administrator's password accepted")
|
|
}
|
|
if err := store.VerifyCurrentPassword(ctx, "second-admin-secret"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := store.ActorBySession(context.Background(), session.SessionToken); err != nil {
|
|
t.Fatalf("reauthentication replaced active session: %v", err)
|
|
}
|
|
}
|
|
|