github.com/sleungcy/cli@v7.1.0+incompatible/integration/v6/isolated/domains_command_test.go (about) 1 package isolated 2 3 import ( 4 "code.cloudfoundry.org/cli/integration/helpers" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 . "github.com/onsi/gomega/gbytes" 8 . "github.com/onsi/gomega/gexec" 9 ) 10 11 var _ = Describe("domains command", func() { 12 Describe("help", func() { 13 When("--help flag is set", func() { 14 It("displays command usage to output", func() { 15 session := helpers.CF("domains", "--help") 16 Eventually(session).Should(Say("NAME:")) 17 Eventually(session).Should(Say(`\s+domains - List domains in the target org`)) 18 Eventually(session).Should(Say("USAGE:")) 19 Eventually(session).Should(Say(`\s+cf domains`)) 20 Eventually(session).Should(Say("SEE ALSO:")) 21 Eventually(session).Should(Say(`\s+create-route, router-groups, routes`)) 22 Eventually(session).Should(Exit(0)) 23 }) 24 }) 25 }) 26 27 When("user is not logged in", func() { 28 BeforeEach(func() { 29 helpers.LogoutCF() 30 }) 31 32 It("displays an error message and fails", func() { 33 session := helpers.CF("domains") 34 Eventually(session).Should(Say("FAILED")) 35 Eventually(session.Err).Should(Say("Not logged in. Use 'cf login' or 'cf login --sso' to log in.")) 36 Eventually(session).Should(Exit(1)) 37 }) 38 }) 39 40 When("a random argument is passed to the command", func() { 41 It("displays an error message and fails", func() { 42 session := helpers.CF("domains", "random-arg") 43 Eventually(session).Should(Say("FAILED")) 44 Eventually(session.Err).Should(Say(`Incorrect Usage: unexpected argument "random-arg"`)) 45 Eventually(session).Should(Say("NAME:")) 46 Eventually(session).Should(Say(`\s+domains - List domains in the target org`)) 47 Eventually(session).Should(Say("USAGE:")) 48 Eventually(session).Should(Say(`\s+cf domains`)) 49 Eventually(session).Should(Exit(1)) 50 }) 51 }) 52 53 When("logged in as a privileged user", func() { 54 When("no org is targeted", func() { 55 BeforeEach(func() { 56 helpers.LoginCF() 57 }) 58 59 It("displays an error message and fails", func() { 60 session := helpers.CF("domains") 61 Eventually(session).Should(Say("FAILED")) 62 Eventually(session.Err).Should(Say(`No org targeted, use 'cf target -o ORG' to target an org.`)) 63 Eventually(session).Should(Exit(1)) 64 }) 65 }) 66 67 When("an org is targeted", func() { 68 var ( 69 username string 70 orgName string 71 sharedDomain1 helpers.Domain 72 sharedDomain2 helpers.Domain 73 ) 74 75 BeforeEach(func() { 76 username, _ = helpers.GetCredentials() 77 78 orgName = helpers.NewOrgName() 79 spaceName := helpers.NewSpaceName() 80 helpers.SetupCF(orgName, spaceName) 81 82 sharedDomain1 = helpers.NewDomain(orgName, helpers.NewDomainName()) 83 sharedDomain1.CreateShared() 84 85 sharedDomain2 = helpers.NewDomain(orgName, helpers.NewDomainName()) 86 sharedDomain2.CreateShared() 87 }) 88 89 When("the targeted org has shared domains", func() { 90 It("displays the shared domains and denotes that they are shared", func() { 91 session := helpers.CF("domains") 92 93 Eventually(session).Should(Say(`Getting domains in org %s as %s\.\.\.`, orgName, username)) 94 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 95 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain1.Name)) 96 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain2.Name)) 97 Eventually(session).Should(Exit(0)) 98 }) 99 100 When("the shared domain has a type associated with it", func() { 101 var sharedDomainWithType helpers.Domain 102 103 BeforeEach(func() { 104 helpers.SkipIfNoRoutingAPI() 105 sharedDomainName := helpers.NewDomainName() 106 sharedDomainWithType = helpers.NewDomain(orgName, sharedDomainName) 107 routerGroupName := helpers.FindOrCreateTCPRouterGroup(GinkgoParallelNode()) 108 sharedDomainWithType.CreateWithRouterGroup(routerGroupName) 109 }) 110 111 It("displays the type of the shared domain", func() { 112 session := helpers.CF("domains") 113 114 Eventually(session).Should(Say(`Getting domains in org %s as %s`, orgName, username)) 115 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 116 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain1.Name)) 117 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain2.Name)) 118 Eventually(session).Should(Say(`%s\s+shared\s+tcp`, sharedDomainWithType.Name)) 119 Eventually(session).Should(Exit(0)) 120 }) 121 }) 122 123 When("the shared domain is internal", func() { 124 var internalDomainName string 125 126 BeforeEach(func() { 127 internalDomainName = helpers.NewDomainName() 128 internalDomain := helpers.NewDomain(orgName, internalDomainName) 129 internalDomain.CreateInternal() 130 }) 131 132 It("displays the internal flag on the shared domain", func() { 133 session := helpers.CF("domains") 134 135 Eventually(session).Should(Say(`Getting domains in org %s as %s`, orgName, username)) 136 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 137 Eventually(session).Should(Say(`%s\s+shared\s+internal`, internalDomainName)) 138 Eventually(session).Should(Exit(0)) 139 }) 140 }) 141 }) 142 143 When("the targeted org has a private domain", func() { 144 var privateDomain1, privateDomain2 helpers.Domain 145 146 BeforeEach(func() { 147 privateDomain1 = helpers.NewDomain(orgName, helpers.NewDomainName()) 148 privateDomain1.Create() 149 150 privateDomain2 = helpers.NewDomain(orgName, helpers.NewDomainName()) 151 privateDomain2.Create() 152 }) 153 154 It("displays the private domains", func() { 155 session := helpers.CF("domains") 156 157 Eventually(session).Should(Say(`Getting domains in org %s as %s`, orgName, username)) 158 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 159 Eventually(session).Should(Say(`%s\s+owned\s+`, privateDomain1.Name)) 160 Eventually(session).Should(Say(`%s\s+owned\s+`, privateDomain2.Name)) 161 Eventually(session).Should(Exit(0)) 162 }) 163 164 When("targeting a different org", func() { 165 var ( 166 newOrgName string 167 privateDomain3 helpers.Domain 168 ) 169 170 BeforeEach(func() { 171 newOrgName = helpers.NewOrgName() 172 newSpaceName := helpers.NewSpaceName() 173 helpers.SetupCF(newOrgName, newSpaceName) 174 175 privateDomain3 = helpers.NewDomain(newOrgName, helpers.NewDomainName()) 176 privateDomain3.Create() 177 }) 178 179 It("should not display the private domains of other orgs", func() { 180 session := helpers.CF("domains") 181 182 Eventually(session).Should(Say(`Getting domains in org %s as %s`, newOrgName, username)) 183 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 184 185 Consistently(session).ShouldNot(Say(`%s`, privateDomain1.Name)) 186 Consistently(session).ShouldNot(Say(`%s`, privateDomain2.Name)) 187 188 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain1.Name)) 189 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain2.Name)) 190 Eventually(session).Should(Say(`%s\s+owned\s+`, privateDomain3.Name)) 191 Eventually(session).Should(Exit(0)) 192 }) 193 }) 194 195 When("logged in as a user that cannot see private domains", func() { 196 var username string 197 198 BeforeEach(func() { 199 username = helpers.SwitchToOrgRole(orgName, "BillingManager") 200 helpers.TargetOrg(orgName) 201 }) 202 203 It("only prints the shared domains", func() { 204 session := helpers.CF("domains") 205 206 Eventually(session).Should(Say(`Getting domains in org %s as %s`, orgName, username)) 207 Eventually(session).Should(Say(`name\s+status\s+type\s+details`)) 208 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain1.Name)) 209 Eventually(session).Should(Say(`%s\s+shared\s+`, sharedDomain2.Name)) 210 211 Consistently(session).ShouldNot(Say(privateDomain1.Name)) 212 Consistently(session).ShouldNot(Say(privateDomain2.Name)) 213 214 Eventually(session).Should(Exit(0)) 215 }) 216 }) 217 }) 218 }) 219 }) 220 })