github.com/sleungcy/cli@v7.1.0+incompatible/integration/v7/isolated/oauth_client_test.go (about) 1 package isolated 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "regexp" 8 9 "code.cloudfoundry.org/cli/integration/helpers" 10 "code.cloudfoundry.org/cli/util/configv3" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 . "github.com/onsi/gomega/gbytes" 14 . "github.com/onsi/gomega/gexec" 15 ) 16 17 func fileAsString(path string) string { 18 configBytes, err := ioutil.ReadFile(path) 19 Expect(err).ToNot(HaveOccurred()) 20 21 return string(configBytes) 22 } 23 24 func replaceConfig(path string, old string, new string) { 25 r := regexp.MustCompile(old) 26 newConfig := r.ReplaceAllString(fileAsString(path), new) 27 err := ioutil.WriteFile(path, []byte(newConfig), 0600) 28 Expect(err).ToNot(HaveOccurred()) 29 } 30 31 var _ = Describe("custom oauth client id", func() { 32 var configPath string 33 34 BeforeEach(func() { 35 helpers.SkipIfClientCredentialsTestMode() 36 configPath = filepath.Join(homeDir, ".cf", "config.json") 37 }) 38 39 When("the config file exists", func() { 40 BeforeEach(func() { 41 helpers.LoginCF() 42 helpers.TargetOrgAndSpace(ReadOnlyOrg, ReadOnlySpace) 43 }) 44 45 When("the client id and secret keys are set in the config", func() { 46 BeforeEach(func() { 47 replaceConfig( 48 configPath, `"UAAOAuthClient": ".*"`, `"UAAOAuthClient": "cf2"`) 49 replaceConfig( 50 configPath, `"UAAOAuthClientSecret": ".*"`, `"UAAOAuthClientSecret": "secret2"`) 51 }) 52 53 Context("oauth-token", func() { 54 BeforeEach(func() { 55 helpers.SetConfig(func(conf *configv3.Config) { 56 conf.ConfigFile.AccessToken = "invalid-access-token" 57 }) 58 }) 59 60 It("uses the custom client id and secret", func() { 61 session := helpers.CF("oauth-token") 62 Eventually(session).Should(Exit(1)) 63 Expect(session.Err).To(Say(`Credentials were rejected, please try again\.`)) 64 }) 65 }) 66 67 Context("auth", func() { 68 It("returns an error indicating that client credentials in the config file is no longer supported", func() { 69 username, password := helpers.GetCredentials() 70 env := map[string]string{ 71 "CF_USERNAME": username, 72 "CF_PASSWORD": password, 73 } 74 session := helpers.CFWithEnv(env, "auth") 75 Eventually(session).Should(Exit(1)) 76 Expect(session.Err).To(Say( 77 "Error: Support for manually writing your client credentials to config.json has been removed. For similar functionality please use `cf auth --client-credentials`.")) 78 }) 79 }) 80 81 Context("login", func() { 82 It("returns an error indicating that client credentials in the config file is no longer supported", func() { 83 username, password := helpers.GetCredentials() 84 session := helpers.CF("login", "-u", username, "-p", password) 85 Eventually(session).Should(Exit(1)) 86 Expect(session.Err).To(Say( 87 "Error: Support for manually writing your client credentials to config.json has been removed. For similar functionality please use `cf auth --client-credentials`.")) 88 }) 89 }) 90 }) 91 92 When("the client id in the config is empty", func() { 93 BeforeEach(func() { 94 replaceConfig( 95 configPath, `"UAAOAuthClient": ".*",`, `"UAAOAuthClient": "",`) 96 }) 97 98 Context("oauth-token command", func() { 99 It("replaces the empty client id with the default values for client id and secret", func() { 100 session := helpers.CF("oauth-token") 101 Eventually(session).Should(Exit(0)) 102 103 configString := fileAsString(configPath) 104 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 105 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 106 }) 107 }) 108 109 Context("tasks command", func() { 110 It("writes default values for client id and secret", func() { 111 session := helpers.CF("tasks", "some-app") 112 Eventually(session).Should(Exit(1)) 113 114 configString := fileAsString(configPath) 115 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 116 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 117 }) 118 }) 119 }) 120 121 When("there are no client id and secret keys in the config", func() { 122 BeforeEach(func() { 123 replaceConfig( 124 configPath, `"UAAOAuthClient": ".*",`, "") 125 replaceConfig( 126 configPath, `"UAAOAuthClientSecret": ".*",`, "") 127 }) 128 129 Context("oauth-token command", func() { 130 It("writes default values for client id and secret", func() { 131 session := helpers.CF("oauth-token") 132 Eventually(session).Should(Exit(0)) 133 134 configString := fileAsString(configPath) 135 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 136 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 137 }) 138 }) 139 140 Context("tasks command", func() { 141 It("writes default values for client id and secret", func() { 142 session := helpers.CF("tasks") 143 Eventually(session).Should(Exit(1)) 144 145 configString := fileAsString(configPath) 146 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 147 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 148 }) 149 }) 150 }) 151 }) 152 153 When("the config file does not exist", func() { 154 BeforeEach(func() { 155 err := os.Remove(configPath) 156 Expect(err).ToNot(HaveOccurred()) 157 }) 158 159 Context("help command", func() { 160 It("writes default values for client id and secret to the config", func() { 161 Expect(configPath).ToNot(BeAnExistingFile()) 162 163 session := helpers.CF("help") 164 Eventually(session).Should(Exit(0)) 165 166 configString := fileAsString(configPath) 167 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 168 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 169 }) 170 }) 171 172 Context("tasks command", func() { 173 It("writes default values for client id and secret to the config", func() { 174 Expect(configPath).ToNot(BeAnExistingFile()) 175 176 session := helpers.CF("tasks") 177 Eventually(session).Should(Exit(1)) 178 179 configString := fileAsString(configPath) 180 Expect(configString).To(ContainSubstring(`"UAAOAuthClient": "cf"`)) 181 Expect(configString).To(ContainSubstring(`"UAAOAuthClientSecret": ""`)) 182 }) 183 }) 184 }) 185 })