github.com/cloudfoundry/cli@v7.1.0+incompatible/integration/shared/plugin/api_test.go (about) 1 package plugin 2 3 import ( 4 "fmt" 5 6 "code.cloudfoundry.org/cli/integration/helpers/servicebrokerstub" 7 8 "code.cloudfoundry.org/cli/integration/helpers" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 . "github.com/onsi/gomega/gbytes" 12 . "github.com/onsi/gomega/gexec" 13 ) 14 15 var _ = Describe("plugin API", func() { 16 BeforeEach(func() { 17 installTestPlugin() 18 }) 19 20 AfterEach(func() { 21 uninstallTestPlugin() 22 }) 23 24 Describe("AccessToken", func() { 25 It("returns the access token", func() { 26 confirmTestPluginOutput("AccessToken", `bearer [\w\d\.]+`) 27 }) 28 }) 29 30 Describe("ApiEndpoint", func() { 31 It("returns the API endpoint", func() { 32 confirmTestPluginOutput("ApiEndpoint", apiURL) 33 }) 34 }) 35 36 Describe("ApiVersion", func() { 37 It("returns the API version", func() { 38 confirmTestPluginOutput("ApiVersion", `[23]\.\d+\.\d+`) 39 }) 40 }) 41 42 Describe("CliCommand", func() { 43 It("calls the core cli command and outputs to terminal", func() { 44 confirmTestPluginOutput("CliCommand", "API endpoint", "API endpoint") 45 }) 46 }) 47 48 Describe("CliCommandWithoutTerminalOutput", func() { 49 It("calls the core cli command and without outputting to the terminal", func() { 50 session := helpers.CF("CliCommandWithoutTerminalOutput", "target") 51 Eventually(session).Should(Say("API endpoint")) 52 Consistently(session).ShouldNot(Say("API endpoint")) 53 Eventually(session).Should(Exit(0)) 54 }) 55 }) 56 57 Describe("DopplerEndpoint", func() { 58 It("gets Doppler Endpoint", func() { 59 confirmTestPluginOutput("DopplerEndpoint", "wss://doppler") 60 }) 61 }) 62 63 Describe("GetApp", func() { 64 var appName string 65 BeforeEach(func() { 66 createTargetedOrgAndSpace() 67 appName = helpers.PrefixedRandomName("APP") 68 helpers.WithHelloWorldApp(func(appDir string) { 69 Eventually(helpers.CF("push", appName, "--no-start", "-p", appDir, "-b", "staticfile_buildpack", "--no-route")).Should(Exit(0)) 70 }) 71 }) 72 73 It("gets application information", func() { 74 confirmTestPluginOutputWithArg("GetApp", appName, appName) 75 }) 76 }) 77 78 Describe("GetApps", func() { 79 var appName1, appName2 string 80 BeforeEach(func() { 81 createTargetedOrgAndSpace() 82 appName1 = helpers.PrefixedRandomName("APP") 83 helpers.WithHelloWorldApp(func(appDir string) { 84 Eventually(helpers.CF("push", appName1, "--no-start", "-p", appDir, "-b", "staticfile_buildpack", "--no-route")).Should(Exit(0)) 85 }) 86 appName2 = helpers.PrefixedRandomName("APP") 87 helpers.WithHelloWorldApp(func(appDir string) { 88 Eventually(helpers.CF("push", appName2, "--no-start", "-p", appDir, "-b", "staticfile_buildpack", "--no-route")).Should(Exit(0)) 89 }) 90 }) 91 92 It("gets information for multiple applications", func() { 93 appNameRegexp := fmt.Sprintf("(?:%s|%s)", appName1, appName2) 94 confirmTestPluginOutput("GetApps", appNameRegexp, appNameRegexp) 95 }) 96 }) 97 98 Describe("GetCurrentOrg", func() { 99 It("gets the current targeted org", func() { 100 org, _ := createTargetedOrgAndSpace() 101 confirmTestPluginOutput("GetCurrentOrg", org) 102 }) 103 }) 104 105 Describe("GetCurrentSpace", func() { 106 It("gets the current targeted Space", func() { 107 _, space := createTargetedOrgAndSpace() 108 confirmTestPluginOutput("GetCurrentSpace", space) 109 }) 110 }) 111 112 Describe("GetOrg", func() { 113 It("gets the given org", func() { 114 org, _ := createTargetedOrgAndSpace() 115 confirmTestPluginOutputWithArg("GetOrg", org, org) 116 }) 117 }) 118 119 Describe("GetOrgs", func() { 120 It("gets information for multiple orgs", func() { 121 org1, _ := createTargetedOrgAndSpace() 122 org2, _ := createTargetedOrgAndSpace() 123 orgNameRegexp := fmt.Sprintf("(?:%s|%s)", org1, org2) 124 confirmTestPluginOutput("GetOrgs", orgNameRegexp, orgNameRegexp) 125 }) 126 }) 127 128 Describe("GetOrgUsers", func() { 129 It("returns the org users", func() { 130 org, _ := createTargetedOrgAndSpace() 131 username, _ := helpers.GetCredentials() 132 confirmTestPluginOutputWithArg("GetOrgUsers", org, username) 133 }) 134 }) 135 136 Describe("GetOrgUsers", func() { 137 It("returns the org users", func() { 138 org, _ := createTargetedOrgAndSpace() 139 username, _ := helpers.GetCredentials() 140 confirmTestPluginOutputWithArg("GetOrgUsers", org, username) 141 }) 142 }) 143 144 Describe("GetService and GetServices", func() { 145 var ( 146 serviceInstance1 string 147 serviceInstance2 string 148 broker *servicebrokerstub.ServiceBrokerStub 149 ) 150 BeforeEach(func() { 151 createTargetedOrgAndSpace() 152 serviceInstance1 = helpers.PrefixedRandomName("SI1") 153 serviceInstance2 = helpers.PrefixedRandomName("SI2") 154 155 broker = servicebrokerstub.EnableServiceAccess() 156 157 Eventually(helpers.CF("create-service", broker.FirstServiceOfferingName(), broker.FirstServicePlanName(), serviceInstance1)).Should(Exit(0)) 158 Eventually(helpers.CF("create-service", broker.FirstServiceOfferingName(), broker.FirstServicePlanName(), serviceInstance2)).Should(Exit(0)) 159 }) 160 161 AfterEach(func() { 162 broker.Forget() 163 }) 164 165 It("GetService gets the given service instance and GetServices returns a list of services instances", func() { 166 confirmTestPluginOutputWithArg("GetService", serviceInstance1, serviceInstance1) 167 168 servicesNameRegexp := fmt.Sprintf("(?:%s|%s)", serviceInstance1, serviceInstance2) 169 confirmTestPluginOutput("GetServices", servicesNameRegexp, servicesNameRegexp) 170 }) 171 }) 172 173 Describe("GetSpace", func() { 174 It("gets the given space", func() { 175 _, space := createTargetedOrgAndSpace() 176 confirmTestPluginOutputWithArg("GetSpace", space, space) 177 }) 178 }) 179 180 Describe("GetSpaces", func() { 181 var space1, space2 string 182 183 BeforeEach(func() { 184 _, space1 = createTargetedOrgAndSpace() 185 space2 = helpers.NewSpaceName() 186 helpers.CreateSpace(space2) 187 }) 188 189 It("gets information for multiple spaces", func() { 190 spaceNameRegexp := fmt.Sprintf("(?:%s|%s)", space1, space2) 191 confirmTestPluginOutput("GetSpaces", spaceNameRegexp, spaceNameRegexp) 192 }) 193 }) 194 195 Describe("GetSpaceUsers", func() { 196 It("returns the space users", func() { 197 username, _ := helpers.GetCredentials() 198 org, space := createTargetedOrgAndSpace() 199 session := helpers.CF("GetSpaceUsers", org, space) 200 Eventually(session).Should(Say(username)) 201 Eventually(session).Should(Exit(0)) 202 }) 203 }) 204 205 Describe("HasAPIEndpoint", func() { 206 It("returns true", func() { 207 confirmTestPluginOutput("HasAPIEndpoint", "true") 208 }) 209 }) 210 211 Describe("HasOrganization", func() { 212 It("returns true", func() { 213 createTargetedOrgAndSpace() 214 confirmTestPluginOutput("HasOrganization", "true") 215 }) 216 }) 217 218 Describe("HasSpace", func() { 219 It("returns true", func() { 220 createTargetedOrgAndSpace() 221 confirmTestPluginOutput("HasSpace", "true") 222 }) 223 }) 224 225 Describe("IsLoggedIn", func() { 226 It("returns a true", func() { 227 confirmTestPluginOutput("IsLoggedIn", "true") 228 }) 229 }) 230 231 Describe("IsSSLDisabled", func() { 232 It("returns a true or false", func() { 233 if skipSSLValidation { 234 confirmTestPluginOutput("IsSSLDisabled", "true") 235 } else { 236 confirmTestPluginOutput("IsSSLDisabled", "false") 237 } 238 }) 239 }) 240 241 Describe("LoggregatorEndpoint", func() { 242 It("gets Loggregator Endpoint", func() { 243 confirmTestPluginOutput("LoggregatorEndpoint", "") 244 }) 245 }) 246 247 Describe("UserEmail", func() { 248 It("gets the current user's Email", func() { 249 helpers.SkipIfClientCredentialsTestMode() 250 username, _ := helpers.GetCredentials() 251 confirmTestPluginOutput("UserEmail", username) 252 }) 253 }) 254 255 Describe("UserGuid", func() { 256 It("gets the current user's GUID", func() { 257 helpers.SkipIfClientCredentialsTestMode() 258 confirmTestPluginOutput("UserGuid", `[\w\d]+-[\w\d]+-[\w\d]+-[\w\d]+-[\w\d]+`) 259 }) 260 }) 261 262 Describe("Username", func() { 263 It("gets the current username", func() { 264 username, _ := helpers.GetCredentials() 265 confirmTestPluginOutput("Username", username) 266 }) 267 }) 268 })