github.com/loafoe/cli@v7.1.0+incompatible/integration/v7/isolated/domains_command_test.go (about) 1 package isolated 2 3 import ( 4 . "code.cloudfoundry.org/cli/cf/util/testhelpers/matchers" 5 "code.cloudfoundry.org/cli/integration/helpers" 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gbytes" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("domains command", func() { 13 Describe("help", func() { 14 It("appears in cf help -a", func() { 15 session := helpers.CF("help", "-a") 16 Eventually(session).Should(Exit(0)) 17 Expect(session).To(HaveCommandInCategoryWithDescription("domains", "DOMAINS", "List domains in the target org")) 18 }) 19 20 When("--help flag is set", func() { 21 It("displays command usage to output", func() { 22 session := helpers.CF("domains", "--help") 23 Eventually(session).Should(Say("NAME:")) 24 Eventually(session).Should(Say(`\s+domains - List domains in the target org`)) 25 26 Eventually(session).Should(Say("USAGE:")) 27 Eventually(session).Should(Say(`\s+cf domains`)) 28 29 Eventually(session).Should(Say("EXAMPLES:")) 30 Eventually(session).Should(Say(`\s+cf domains`)) 31 Eventually(session).Should(Say(`\s+cf domains --labels 'environment in \(production,staging\),tier in \(backend\)'`)) 32 Eventually(session).Should(Say(`\s+cf domains --labels 'env=dev,!chargeback-code,tier in \(backend,worker\)'`)) 33 34 Eventually(session).Should(Say("OPTIONS:")) 35 Eventually(session).Should(Say(`--labels\s+Selector to filter domains by labels`)) 36 37 Eventually(session).Should(Say("SEE ALSO:")) 38 Eventually(session).Should(Say(`\s+create-private-domain, create-route, create-shared-domain, routes, set-label`)) 39 Eventually(session).Should(Exit(0)) 40 }) 41 }) 42 }) 43 44 When("user is not logged in", func() { 45 BeforeEach(func() { 46 helpers.LogoutCF() 47 }) 48 49 It("displays an error message and fails", func() { 50 session := helpers.CF("domains") 51 Eventually(session).Should(Say("FAILED")) 52 Eventually(session.Err).Should(Say("Not logged in. Use 'cf login' or 'cf login --sso' to log in.")) 53 Eventually(session).Should(Exit(1)) 54 }) 55 }) 56 57 When("a random argument is passed to the command", func() { 58 It("displays an error message and fails", func() { 59 session := helpers.CF("domains", "random-arg") 60 Eventually(session).Should(Say("FAILED")) 61 Eventually(session.Err).Should(Say(`Incorrect Usage: unexpected argument "random-arg"`)) 62 Eventually(session).Should(Say("NAME:")) 63 Eventually(session).Should(Say(`\s+domains - List domains in the target org`)) 64 Eventually(session).Should(Say("USAGE:")) 65 Eventually(session).Should(Say(`\s+cf domains`)) 66 Eventually(session).Should(Say("OPTIONS:")) 67 Eventually(session).Should(Say(`--labels\s+Selector to filter domains by labels`)) 68 Eventually(session).Should(Say("SEE ALSO:")) 69 Eventually(session).Should(Say(`\s+create-private-domain, create-route, create-shared-domain, routes`)) 70 Eventually(session).Should(Exit(1)) 71 }) 72 }) 73 74 When("no org is targeted", func() { 75 BeforeEach(func() { 76 helpers.LoginCF() 77 }) 78 79 It("displays an error message and fails", func() { 80 session := helpers.CF("domains") 81 Eventually(session).Should(Say("FAILED")) 82 Eventually(session.Err).Should(Say(`No org targeted, use 'cf target -o ORG' to target an org.`)) 83 Eventually(session).Should(Exit(1)) 84 }) 85 }) 86 87 When("logged in", func() { 88 var ( 89 userName string 90 orgName string 91 spaceName string 92 sharedDomain1 helpers.Domain 93 sharedDomain2 helpers.Domain 94 tcpDomain helpers.Domain 95 ) 96 97 BeforeEach(func() { 98 userName, _ = helpers.GetCredentials() 99 orgName = helpers.NewOrgName() 100 spaceName = helpers.NewSpaceName() 101 helpers.SetupCF(orgName, spaceName) 102 103 sharedDomain1 = helpers.NewDomain(orgName, helpers.NewDomainName("a")) 104 sharedDomain1.CreateShared() 105 106 sharedDomain2 = helpers.NewDomain(orgName, helpers.NewDomainName("b")) 107 sharedDomain2.CreateShared() 108 109 routerGroupName := helpers.FindOrCreateTCPRouterGroup(4) 110 tcpDomain = helpers.NewDomain(orgName, helpers.NewDomainName("c")) 111 tcpDomain.CreateWithRouterGroup(routerGroupName) 112 Eventually(helpers.CF("set-label", "domain", sharedDomain1.Name, "keyfor1=valuefor1")).Should(Exit(0)) 113 }) 114 115 AfterEach(func() { 116 Eventually(helpers.CF("delete-shared-domain", sharedDomain1.Name, "-f")).Should(Exit(0)) 117 Eventually(helpers.CF("delete-shared-domain", sharedDomain2.Name, "-f")).Should(Exit(0)) 118 Eventually(helpers.CF("delete-shared-domain", tcpDomain.Name, "-f")).Should(Exit(0)) 119 helpers.QuickDeleteOrg(orgName) 120 }) 121 122 It("displays the shared domains and denotes that they are shared", func() { 123 session := helpers.CF("domains") 124 Eventually(session).Should(Exit(0)) 125 126 Expect(session).Should(Say(`Getting domains in org %s as %s\.\.\.`, orgName, userName)) 127 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 128 Expect(session).Should(Say(`%s\s+shared\s+http`, sharedDomain1.Name)) 129 Expect(session).Should(Say(`%s\s+shared\s+http`, sharedDomain2.Name)) 130 Expect(session).Should(Say(`%s\s+shared\s+tcp`, tcpDomain.Name)) 131 }) 132 133 It("displays the shared domains and denotes that they are shared for matching labels only", func() { 134 session := helpers.CF("domains", "--labels", "keyfor1=valuefor1") 135 Eventually(session).Should(Exit(0)) 136 137 Expect(session).Should(Say(`Getting domains in org %s as %s\.\.\.`, orgName, userName)) 138 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 139 Expect(session).Should(Say(`%s\s+shared\s+http`, sharedDomain1.Name)) 140 Expect(session).ShouldNot(Say(`%s\s+shared\s+http`, sharedDomain2.Name)) 141 }) 142 143 When("the shared domain is internal", func() { 144 var internalDomainName string 145 146 BeforeEach(func() { 147 internalDomainName = helpers.NewDomainName() 148 internalDomain := helpers.NewDomain(orgName, internalDomainName) 149 internalDomain.CreateInternal() 150 }) 151 152 AfterEach(func() { 153 Eventually(helpers.CF("delete-shared-domain", internalDomainName, "-f")).Should(Exit(0)) 154 }) 155 156 It("displays the internal flag on the shared domain", func() { 157 session := helpers.CF("domains") 158 Eventually(session).Should(Exit(0)) 159 160 Expect(session).Should(Say(`Getting domains in org %s as %s`, orgName, userName)) 161 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 162 Expect(session).Should(Say(`%s\s+shared\s+true`, internalDomainName)) 163 }) 164 165 It("displays the shared domains and denotes that they are shared for matching labels only", func() { 166 session := helpers.CF("domains", "--labels", "keyfor1=valuefor1") 167 Eventually(session).Should(Exit(0)) 168 169 Expect(session).Should(Say(`Getting domains in org %s as %s\.\.\.`, orgName, userName)) 170 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 171 Expect(session).Should(Say(`%s\s+shared\s+http`, sharedDomain1.Name)) 172 Expect(session).ShouldNot(Say(`%s\s+shared\s+http`, sharedDomain2.Name)) 173 Expect(session).ShouldNot(Say(internalDomainName)) 174 }) 175 }) 176 177 When("the targeted org has a private domain", func() { 178 var privateDomain1, privateDomain2 helpers.Domain 179 180 BeforeEach(func() { 181 privateDomain1 = helpers.NewDomain(orgName, helpers.NewDomainName("a")) 182 privateDomain1.Create() 183 184 privateDomain2 = helpers.NewDomain(orgName, helpers.NewDomainName("b")) 185 privateDomain2.Create() 186 187 Eventually(helpers.CF("set-label", "domain", privateDomain2.Name, "keyfor2=valuefor2")).Should(Exit(0)) 188 }) 189 190 AfterEach(func() { 191 Eventually(helpers.CF("delete-private-domain", privateDomain1.Name, "-f")).Should(Exit(0)) 192 Eventually(helpers.CF("delete-private-domain", privateDomain2.Name, "-f")).Should(Exit(0)) 193 }) 194 195 It("displays the private domains", func() { 196 session := helpers.CF("domains") 197 198 Eventually(session).Should(Exit(0)) 199 Expect(session).Should(Say(`Getting domains in org %s as %s`, orgName, userName)) 200 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 201 Expect(session).Should(Say(`%s\s+private\s+http`, privateDomain1.Name)) 202 Expect(session).Should(Say(`%s\s+private\s+http`, privateDomain2.Name)) 203 }) 204 205 It("filters private domains by label", func() { 206 session := helpers.CF("domains", "--labels", "keyfor2=valuefor2") 207 208 Eventually(session).Should(Exit(0)) 209 Expect(session).Should(Say(`Getting domains in org %s as %s`, orgName, userName)) 210 Expect(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 211 Expect(session).ShouldNot(Say(`%s\s+private\s+http`, privateDomain1.Name)) 212 Expect(session).Should(Say(`%s\s+private\s+http`, privateDomain2.Name)) 213 }) 214 215 When("targeting a different org", func() { 216 var ( 217 newOrgName string 218 newSpaceName string 219 privateDomain3 helpers.Domain 220 ) 221 222 BeforeEach(func() { 223 newOrgName = helpers.NewOrgName() 224 newSpaceName = helpers.NewSpaceName() 225 helpers.SetupCF(newOrgName, newSpaceName) 226 227 privateDomain3 = helpers.NewDomain(newOrgName, helpers.NewDomainName("c")) 228 privateDomain3.Create() 229 }) 230 231 AfterEach(func() { 232 helpers.QuickDeleteOrg(newOrgName) 233 // Outer after-eaches require the initial org/space to be targetted 234 helpers.TargetOrgAndSpace(orgName, spaceName) 235 }) 236 237 It("should not display the private domains of other orgs", func() { 238 session := helpers.CF("domains") 239 240 Eventually(session).Should(Say(`Getting domains in org %s as %s`, newOrgName, userName)) 241 Eventually(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 242 243 Consistently(session).ShouldNot(Say(`%s`, privateDomain1.Name)) 244 Consistently(session).ShouldNot(Say(`%s`, privateDomain2.Name)) 245 246 Eventually(session).Should(Say(`%s\s+shared\s+http`, sharedDomain1.Name)) 247 Eventually(session).Should(Say(`%s\s+shared\s+http`, sharedDomain2.Name)) 248 Eventually(session).Should(Say(`%s\s+private\s+http`, privateDomain3.Name)) 249 Eventually(session).Should(Exit(0)) 250 }) 251 }) 252 253 When("logged in as a user that cannot see private domains", func() { 254 var userName string 255 256 BeforeEach(func() { 257 userName = helpers.SwitchToOrgRole(orgName, "BillingManager") 258 helpers.TargetOrg(orgName) 259 }) 260 261 JustAfterEach(func() { 262 // waiting AfterEach blocks are designed to run in as admin 263 helpers.LoginCF() 264 helpers.TargetOrg(orgName) 265 }) 266 267 It("only prints the shared domains", func() { 268 session := helpers.CF("domains") 269 270 Eventually(session).Should(Say(`Getting domains in org %s as %s`, orgName, userName)) 271 Eventually(session).Should(Say(`name\s+availability\s+internal\s+protocols`)) 272 Eventually(session).Should(Say(`%s\s+shared\s+http`, sharedDomain1.Name)) 273 Eventually(session).Should(Say(`%s\s+shared\s+http`, sharedDomain2.Name)) 274 275 Consistently(session).ShouldNot(Say(privateDomain1.Name)) 276 Consistently(session).ShouldNot(Say(privateDomain2.Name)) 277 278 Eventually(session).Should(Exit(0)) 279 }) 280 }) 281 }) 282 }) 283 })