@@ -11,6 +11,7 @@ import (
11 middlewareapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/middleware"
11 middlewareapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/middleware"
12 sessionsapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
12 sessionsapi "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
13 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/clock"
13 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/clock"
14+ "github.com/oauth2-proxy/oauth2-proxy/v7/providers"
14 . "github.com/onsi/ginkgo"
15 . "github.com/onsi/ginkgo"
15 . "github.com/onsi/ginkgo/extensions/table"
16 . "github.com/onsi/ginkgo/extensions/table"
16 . "github.com/onsi/gomega"
17 . "github.com/onsi/gomega"
@@ -18,8 +19,9 @@ import (
19var _ = Describe("Stored Session Suite", func() {
20var _ = Describe("Stored Session Suite", func() {
21− refresh = "Refresh"
22+ refresh = "Refresh"
22− noRefresh = "NoRefresh"
23+ noRefresh = "NoRefresh"
24+ notImplemented = "NotImplemented"
25 var ctx = context.Background()
27 var ctx = context.Background()
@@ -293,6 +295,8 @@ var _ = Describe("Stored Session Suite", func() {
293 return true, nil
295 return true, nil
294 case noRefresh:
296 case noRefresh:
295 return false, nil
297 return false, nil
298+ case notImplemented:
299+ return false, providers.ErrNotImplemented
297 return false, errors.New("error refreshing session")
301 return false, errors.New("error refreshing session")
@@ -364,6 +368,16 @@ var _ = Describe("Stored Session Suite", func() {
364 expectRefreshed: true,
368 expectRefreshed: true,
365 expectValidated: true,
369 expectValidated: true,
371+ Entry("when the provider doesn't implement refresh but validation succeeds", refreshSessionIfNeededTableInput{
372+ refreshPeriod: 1 * time.Minute,
373+ session: &sessionsapi.SessionState{
374+ RefreshToken: notImplemented,
375+ CreatedAt: &createdPast,
378+ expectRefreshed: true,
379+ expectValidated: true,
367 Entry("when the provider refresh fails but validation succeeds", refreshSessionIfNeededTableInput{
381 Entry("when the provider refresh fails but validation succeeds", refreshSessionIfNeededTableInput{
368 refreshPeriod: 1 * time.Minute,
382 refreshPeriod: 1 * time.Minute,
369 session: &sessionsapi.SessionState{
383 session: &sessionsapi.SessionState{
@@ -418,6 +432,8 @@ var _ = Describe("Stored Session Suite", func() {
418 return true, nil
432 return true, nil
419 case noRefresh:
433 case noRefresh:
420 return false, nil
434 return false, nil
435+ case notImplemented:
436+ return false, providers.ErrNotImplemented
422 return false, errors.New("error refreshing session")
438 return false, errors.New("error refreshing session")
@@ -448,6 +464,13 @@ var _ = Describe("Stored Session Suite", func() {
448 expectedErr: nil,
464 expectedErr: nil,
449 expectSaved: true,
465 expectSaved: true,
467+ Entry("when the provider doesn't implement refresh", refreshSessionWithProviderTableInput{
468+ session: &sessionsapi.SessionState{
469+ RefreshToken: notImplemented,
451 Entry("when the provider returns an error", refreshSessionWithProviderTableInput{
474 Entry("when the provider returns an error", refreshSessionWithProviderTableInput{
452 session: &sessionsapi.SessionState{
475 session: &sessionsapi.SessionState{
453 RefreshToken: "RefreshError",
476 RefreshToken: "RefreshError",