42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
|
|
// Package mock provides a fake auth.Verifier for tests that need to exercise
|
||
|
|
// internal/api's session endpoints and RequireSession gating without a real
|
||
|
|
// Keycloak instance.
|
||
|
|
package mock
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"net/url"
|
||
|
|
|
||
|
|
"geniusrun/backend/internal/auth"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Verifier is a fake auth.Verifier returning canned results supplied by the
|
||
|
|
// test/caller.
|
||
|
|
type Verifier struct {
|
||
|
|
AuthURL string
|
||
|
|
Txn auth.TxnState
|
||
|
|
CallbackResult auth.LoginResult
|
||
|
|
CallbackErr error
|
||
|
|
EndSessionResult string // if empty, EndSessionURL returns postLogoutRedirectURL unchanged
|
||
|
|
}
|
||
|
|
|
||
|
|
var _ auth.Verifier = (*Verifier)(nil)
|
||
|
|
|
||
|
|
func (v *Verifier) BeginLogin() (string, auth.TxnState, error) {
|
||
|
|
return v.AuthURL, v.Txn, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (v *Verifier) HandleCallback(ctx context.Context, txn auth.TxnState, query url.Values) (auth.LoginResult, error) {
|
||
|
|
if v.CallbackErr != nil {
|
||
|
|
return auth.LoginResult{}, v.CallbackErr
|
||
|
|
}
|
||
|
|
return v.CallbackResult, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (v *Verifier) EndSessionURL(postLogoutRedirectURL string) string {
|
||
|
|
if v.EndSessionResult != "" {
|
||
|
|
return v.EndSessionResult
|
||
|
|
}
|
||
|
|
return postLogoutRedirectURL
|
||
|
|
}
|