mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-01 11:26:29 +02:00
81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package providers // import "github.com/pomerium/pomerium/internal/providers"
|
|
|
|
import (
|
|
"net/url"
|
|
"time"
|
|
|
|
"github.com/pomerium/pomerium/internal/sessions"
|
|
)
|
|
|
|
// TestProvider is a test implementation of the Provider interface.
|
|
type TestProvider struct {
|
|
*ProviderData
|
|
|
|
ValidToken bool
|
|
ValidGroup bool
|
|
SignInURL string
|
|
Refresh bool
|
|
RefreshFunc func(string) (string, time.Duration, error)
|
|
RefreshError error
|
|
Session *sessions.SessionState
|
|
RedeemError error
|
|
RevokeError error
|
|
Groups []string
|
|
GroupsError error
|
|
GroupsCall int
|
|
}
|
|
|
|
// NewTestProvider creates a new mock test provider.
|
|
func NewTestProvider(providerURL *url.URL) *TestProvider {
|
|
return &TestProvider{
|
|
ProviderData: &ProviderData{
|
|
ProviderName: "Test Provider",
|
|
ProviderURL: &url.URL{
|
|
Scheme: "http",
|
|
Host: providerURL.Host,
|
|
Path: "/authorize",
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
// ValidateSessionState returns the mock provider's ValidToken field value.
|
|
func (tp *TestProvider) ValidateSessionState(*sessions.SessionState) bool {
|
|
return tp.ValidToken
|
|
}
|
|
|
|
// GetSignInURL returns the mock provider's SignInURL field value.
|
|
func (tp *TestProvider) GetSignInURL(finalRedirect string) string {
|
|
return tp.SignInURL
|
|
}
|
|
|
|
// RefreshSessionIfNeeded returns the mock provider's Refresh value, or an error.
|
|
func (tp *TestProvider) RefreshSessionIfNeeded(*sessions.SessionState) (bool, error) {
|
|
return tp.Refresh, tp.RefreshError
|
|
}
|
|
|
|
// RefreshAccessToken returns the mock provider's refresh access token information
|
|
func (tp *TestProvider) RefreshAccessToken(s string) (string, time.Duration, error) {
|
|
return tp.RefreshFunc(s)
|
|
}
|
|
|
|
// Revoke returns nil
|
|
func (tp *TestProvider) Revoke(*sessions.SessionState) error {
|
|
return tp.RevokeError
|
|
}
|
|
|
|
// ValidateGroupMembership returns the mock provider's GroupsError if not nil, or the Groups field value.
|
|
func (tp *TestProvider) ValidateGroupMembership(string, []string) ([]string, error) {
|
|
return tp.Groups, tp.GroupsError
|
|
}
|
|
|
|
// Redeem returns the mock provider's Session and RedeemError field value.
|
|
func (tp *TestProvider) Redeem(code string) (*sessions.SessionState, error) {
|
|
return tp.Session, tp.RedeemError
|
|
|
|
}
|
|
|
|
// Stop fulfills the Provider interface
|
|
func (tp *TestProvider) Stop() {
|
|
return
|
|
}
|