oauth2-proxy/pkg/sessions/tests/mock_lock.go

49 lines
1009 B
Go

package tests
import (
"context"
"time"
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
)
type MockLock struct {
expiration time.Duration
elapsed time.Duration
}
func (l *MockLock) Obtain(ctx context.Context, expiration time.Duration) error {
l.expiration = expiration
return nil
}
func (l *MockLock) Peek(ctx context.Context) (bool, error) {
if l.elapsed < l.expiration {
return true, nil
}
return false, nil
}
func (l *MockLock) Refresh(ctx context.Context, expiration time.Duration) error {
if l.expiration <= l.elapsed {
return sessions.ErrNotLocked
}
l.expiration = expiration
l.elapsed = time.Duration(0)
return nil
}
func (l *MockLock) Release(ctx context.Context) error {
if l.expiration <= l.elapsed {
return sessions.ErrNotLocked
}
l.expiration = time.Duration(0)
l.elapsed = time.Duration(0)
return nil
}
// FastForward simulates the flow of time to test expirations
func (l *MockLock) FastForward(duration time.Duration) {
l.elapsed += duration
}