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