From 40c13801ac0facc0e765547194be7423575dc090 Mon Sep 17 00:00:00 2001 From: "GLOBAL\\I502395" Date: Tue, 8 Oct 2024 08:27:21 +0200 Subject: [PATCH] add expiry check for SpaceClient and HealthChecker --- internal/cf/client.go | 8 ++++++++ internal/cf/client_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/internal/cf/client.go b/internal/cf/client.go index 2b115a6..2f8bdda 100644 --- a/internal/cf/client.go +++ b/internal/cf/client.go @@ -192,6 +192,10 @@ func NewSpaceClient(spaceGuid string, url string, username string, password stri delete(clientCache, identifier) isInCache = false } + if cacheEntry.expiresAt.Before(time.Now()) { + delete(clientCache, identifier) + isInCache = false + } } if !isInCache { @@ -230,6 +234,10 @@ func NewSpaceHealthChecker(spaceGuid string, url string, username string, passwo delete(clientCache, identifier) isInCache = false } + if cacheEntry.expiresAt.Before(time.Now()) { + delete(clientCache, identifier) + isInCache = false + } } if !isInCache { diff --git a/internal/cf/client_test.go b/internal/cf/client_test.go index 5b28841..01ecf52 100644 --- a/internal/cf/client_test.go +++ b/internal/cf/client_test.go @@ -337,6 +337,38 @@ var _ = Describe("CF Client tests", Ordered, func() { Expect(server.ReceivedRequests()[3].URL.Path).To(Equal(instancesURI)) }) + It("should re-create the refresh token after configured RefreshTokenAutoRenewalInterval", func() { + cfgZero := config.Config{ + RefreshTokenAutoRenewalInterval: time.Duration(time.Second * 0), + } + spaceClient, err := NewSpaceClient(OrgName, url, Username, Password, &cfgZero) + Expect(err).To(BeNil()) + + spaceClient.GetInstance(ctx, map[string]string{"owner": Owner}) + spaceClient, err = NewSpaceClient(OrgName, url, Username, Password, &cfgZero) + Expect(err).To(BeNil()) + spaceClient.GetInstance(ctx, map[string]string{"owner": Owner}) + + Expect(server.ReceivedRequests()).To(HaveLen(6)) + + // Discover UAA endpoint + Expect(server.ReceivedRequests()[0].Method).To(Equal("GET")) + Expect(server.ReceivedRequests()[0].URL.Path).To(Equal("/")) + // Get new oAuth token + Expect(server.ReceivedRequests()[1].Method).To(Equal("POST")) + Expect(server.ReceivedRequests()[1].URL.Path).To(Equal(uaaURI)) + // Get instance + Expect(server.ReceivedRequests()[2].Method).To(Equal("GET")) + Expect(server.ReceivedRequests()[2].URL.Path).To(Equal(instancesURI)) + + // Get new oAuth token + Expect(server.ReceivedRequests()[4].Method).To(Equal("POST")) + Expect(server.ReceivedRequests()[4].URL.Path).To(Equal(uaaURI)) + // Get instance + Expect(server.ReceivedRequests()[5].Method).To(Equal("GET")) + Expect(server.ReceivedRequests()[5].URL.Path).To(Equal(instancesURI)) + }) + It("should be able to query two different spaces", func() { // test space 1 spaceClient1, err1 := NewSpaceClient(SpaceName, url, Username, Password, &cfg)