github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/integration/v7/isolated/create_space_quota_command_test.go (about) 1 package isolated 2 3 import ( 4 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 5 . "code.cloudfoundry.org/cli/cf/util/testhelpers/matchers" 6 "code.cloudfoundry.org/cli/integration/helpers" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 . "github.com/onsi/gomega/gbytes" 10 . "github.com/onsi/gomega/gexec" 11 ) 12 13 var _ = Describe("create-space-quota command", func() { 14 var ( 15 userName string 16 orgName string 17 spaceQuotaName string 18 ) 19 20 Describe("help", func() { 21 When("--help flag is set", func() { 22 It("appears in cf help -a", func() { 23 session := helpers.CF("help", "-a") 24 Eventually(session).Should(Exit(0)) 25 Expect(session).To(HaveCommandInCategoryWithDescription("create-space-quota", "SPACE ADMIN", "Define a new quota for a space")) 26 }) 27 28 It("Displays command usage to output", func() { 29 session := helpers.CF("create-space-quota", "--help") 30 Eventually(session).Should(Say("NAME:")) 31 Eventually(session).Should(Say("create-space-quota - Define a new quota for a space")) 32 Eventually(session).Should(Say("USAGE:")) 33 Eventually(session).Should(Say(`cf create-space-quota QUOTA \[-m TOTAL_MEMORY\] \[-i INSTANCE_MEMORY\] \[-r ROUTES\] \[-s SERVICE_INSTANCES\] \[-a APP_INSTANCES\] \[--allow-paid-service-plans\] \[--reserved-route-ports RESERVED_ROUTE_PORTS\] \[-l LOG_VOLUME\]`)) 34 Eventually(session).Should(Say("OPTIONS:")) 35 Eventually(session).Should(Say(`-a\s+Total number of application instances. \(Default: unlimited\)`)) 36 Eventually(session).Should(Say(`--allow-paid-service-plans\s+Allow provisioning instances of paid service plans. \(Default: disallowed\)`)) 37 Eventually(session).Should(Say(`-i\s+Maximum amount of memory a process can have \(e.g. 1024M, 1G, 10G\). \(Default: unlimited\)`)) 38 Eventually(session).Should(Say(`-m\s+Total amount of memory all processes can have \(e.g. 1024M, 1G, 10G\). -1 represents an unlimited amount. \(Default: 0\)`)) 39 Eventually(session).Should(Say(`-r\s+Total number of routes. -1 represents an unlimited amount. \(Default: 0\)`)) 40 Eventually(session).Should(Say(`--reserved-route-ports\s+Maximum number of routes that may be created with ports. -1 represents an unlimited amount. \(Default: 0\)`)) 41 Eventually(session).Should(Say(`-s\s+Total number of service instances. -1 represents an unlimited amount. \(Default: 0\)`)) 42 Eventually(session).Should(Say(`-l\s+Total log volume per second all processes can have, in bytes \(e.g. 128B, 4K, 1M\). -1 represents an unlimited amount. \(Default: -1\).`)) 43 Eventually(session).Should(Say("SEE ALSO:")) 44 Eventually(session).Should(Say("create-space, set-space-quota, space-quotas")) 45 Eventually(session).Should(Exit(0)) 46 }) 47 }) 48 }) 49 50 When("the environment is not setup correctly", func() { 51 It("fails with the appropriate errors", func() { 52 helpers.CheckEnvironmentTargetedCorrectly(true, false, orgName, "create-space-quota", spaceQuotaName) 53 }) 54 }) 55 56 When("the environment is set up correctly", func() { 57 BeforeEach(func() { 58 userName = helpers.LoginCF() 59 orgName = helpers.CreateAndTargetOrg() 60 spaceQuotaName = helpers.QuotaName() 61 }) 62 63 When("the quota name is not provided", func() { 64 It("tells the user that the quota name is required, prints help text, and exits 1", func() { 65 session := helpers.CF("create-space-quota") 66 67 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `SPACE_QUOTA_NAME` was not provided")) 68 Eventually(session).Should(Say("NAME:")) 69 Eventually(session).Should(Exit(1)) 70 }) 71 }) 72 73 When("a nonexistent flag is provided", func() { 74 It("tells the user that the flag is invalid", func() { 75 session := helpers.CF("create-space-quota", "--nonexistent") 76 77 Eventually(session.Err).Should(Say("Incorrect Usage: unknown flag `nonexistent'")) 78 Eventually(session).Should(Say("NAME:")) 79 Eventually(session).Should(Exit(1)) 80 }) 81 }) 82 83 When("the quota does not exist", func() { 84 When("no flags are provided", func() { 85 It("creates the quota with the default values", func() { 86 session := helpers.CF("create-space-quota", spaceQuotaName) 87 Eventually(session).Should(Say("Creating space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 88 Eventually(session).Should(Say("OK")) 89 Eventually(session).Should(Exit(0)) 90 91 session = helpers.CF("space-quota", spaceQuotaName) 92 Eventually(session).Should(Say("Getting space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 93 Eventually(session).Should(Say(`total memory:\s+0`)) 94 Eventually(session).Should(Say(`instance memory:\s+unlimited`)) 95 Eventually(session).Should(Say(`routes:\s+0`)) 96 Eventually(session).Should(Say(`service instances:\s+0`)) 97 Eventually(session).Should(Say(`paid service plans:\s+disallowed`)) 98 Eventually(session).Should(Say(`app instances:\s+unlimited`)) 99 Eventually(session).Should(Say(`route ports:\s+0`)) 100 Eventually(session).Should(Say(`log volume per second:\s+unlimited`)) 101 Eventually(session).Should(Exit(0)) 102 }) 103 }) 104 105 When("all the optional flags are provided", func() { 106 It("creates the quota with the specified values", func() { 107 session := helpers.CF("create-space-quota", spaceQuotaName, 108 "-a", "2", 109 "--allow-paid-service-plans", 110 "-i", "3M", 111 "-m", "4M", 112 "-r", "15", 113 "--reserved-route-ports", "6", 114 "-s", "7") 115 Eventually(session).Should(Say("Creating space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 116 Eventually(session).Should(Say("OK")) 117 Eventually(session).Should(Exit(0)) 118 119 session = helpers.CF("space-quota", spaceQuotaName) 120 Eventually(session).Should(Say("Getting space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 121 Eventually(session).Should(Say(`total memory:\s+4M`)) 122 Eventually(session).Should(Say(`instance memory:\s+3M`)) 123 Eventually(session).Should(Say(`routes:\s+15`)) 124 Eventually(session).Should(Say(`service instances:\s+7`)) 125 Eventually(session).Should(Say(`paid service plans:\s+allowed`)) 126 Eventually(session).Should(Say(`app instances:\s+2`)) 127 Eventually(session).Should(Say(`route ports:\s+6`)) 128 Eventually(session).Should(Say(`log volume per second:\s+unlimited`)) 129 Eventually(session).Should(Exit(0)) 130 }) 131 132 When("CAPI supports log rate limits", func() { 133 BeforeEach(func() { 134 helpers.SkipIfVersionLessThan(ccversion.MinVersionLogRateLimitingV3) 135 }) 136 137 It("creates the quota with the specified values", func() { 138 session := helpers.CF("create-space-quota", spaceQuotaName, "-l", "2K") 139 Eventually(session).Should(Say("Creating space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 140 Eventually(session).Should(Say("OK")) 141 Eventually(session).Should(Exit(0)) 142 143 session = helpers.CF("space-quota", spaceQuotaName) 144 Eventually(session).Should(Say(`log volume per second:\s+2K`)) 145 Eventually(session).Should(Exit(0)) 146 }) 147 }) 148 }) 149 }) 150 151 When("the quota already exists", func() { 152 BeforeEach(func() { 153 Eventually(helpers.CF("create-space-quota", spaceQuotaName)).Should(Exit(0)) 154 }) 155 156 It("notifies the user that the quota already exists and exits 0", func() { 157 session := helpers.CF("create-space-quota", spaceQuotaName) 158 Eventually(session).Should(Say("Creating space quota %s for org %s as %s...", spaceQuotaName, orgName, userName)) 159 Eventually(session.Err).Should(Say(`Space Quota '%s' already exists\.`, spaceQuotaName)) 160 Eventually(session).Should(Say("OK")) 161 Eventually(session).Should(Exit(0)) 162 }) 163 }) 164 }) 165 })