github.com/sleungcy/cli@v7.1.0+incompatible/integration/v7/isolated/token_refresh_test.go (about)

     1  package isolated
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/integration/helpers"
     5  	"code.cloudfoundry.org/cli/util/configv3"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	. "github.com/onsi/gomega/gbytes"
    10  	. "github.com/onsi/gomega/gexec"
    11  )
    12  
    13  var _ = Describe("Token Refreshing", func() {
    14  	BeforeEach(func() {
    15  		helpers.SkipIfClientCredentialsTestMode()
    16  	})
    17  
    18  	Describe("password grant type", func() {
    19  		BeforeEach(func() {
    20  			helpers.LoginCF()
    21  		})
    22  
    23  		When("the token is invalid", func() {
    24  			When("password is explicitly stored as the grant type", func() {
    25  				BeforeEach(func() {
    26  					helpers.SetConfig(func(config *configv3.Config) {
    27  						config.ConfigFile.AccessToken = helpers.ExpiredAccessToken()
    28  						config.ConfigFile.TargetedOrganization.GUID = "fake-org"
    29  						config.ConfigFile.TargetedSpace.GUID = "fake-space"
    30  						config.ConfigFile.UAAGrantType = "password"
    31  					})
    32  				})
    33  
    34  				When("running a v7 command", func() {
    35  					When("the cloud controller client encounters an invalid token response", func() {
    36  						It("refreshes the token", func() {
    37  							session := helpers.CF("run-task", "app", "--command", "'echo banana'")
    38  							Eventually(session.Err).Should(Say("App 'app' not found"))
    39  							Eventually(session).Should(Exit(1))
    40  						})
    41  					})
    42  				})
    43  			})
    44  
    45  			When("no grant type is explicitly stored", func() {
    46  				BeforeEach(func() {
    47  					helpers.SetConfig(func(config *configv3.Config) {
    48  						config.ConfigFile.AccessToken = helpers.ExpiredAccessToken()
    49  						config.ConfigFile.TargetedOrganization.GUID = "fake-org"
    50  						config.ConfigFile.TargetedSpace.GUID = "fake-space"
    51  						config.ConfigFile.UAAGrantType = ""
    52  					})
    53  				})
    54  
    55  				When("running a v7 command", func() {
    56  					When("the cloud controller client encounters an invalid token response", func() {
    57  						It("refreshes the token", func() {
    58  							session := helpers.CF("run-task", "app", "--command", "'echo banana'")
    59  							Eventually(session.Err).Should(Say("App 'app' not found"))
    60  							Eventually(session).Should(Exit(1))
    61  						})
    62  					})
    63  				})
    64  			})
    65  		})
    66  	})
    67  
    68  	Describe("client grant type", func() {
    69  		BeforeEach(func() {
    70  			helpers.LoginCFWithClientCredentials()
    71  		})
    72  
    73  		When("the token is invalid", func() {
    74  			BeforeEach(func() {
    75  				helpers.SetConfig(func(config *configv3.Config) {
    76  					config.ConfigFile.AccessToken = helpers.ExpiredAccessToken()
    77  					config.ConfigFile.TargetedOrganization.GUID = "fake-org"
    78  					config.ConfigFile.TargetedSpace.GUID = "fake-space"
    79  				})
    80  			})
    81  
    82  			When("running a v7 command", func() {
    83  				When("the cloud controller client encounters an invalid token response", func() {
    84  					It("displays an error and exits 1", func() {
    85  						session := helpers.CF("run-task", "app", "--command", "'echo banana'")
    86  						Eventually(session.Err).Should(Say(`Credentials were rejected, please try again\.`))
    87  						Eventually(session).Should(Exit(1))
    88  					})
    89  				})
    90  			})
    91  		})
    92  	})
    93  })