github.com/sleungcy/cli@v7.1.0+incompatible/integration/v7/isolated/create_org_quota_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("create-org-quota command", func() { 13 var ( 14 orgQuotaName string 15 ) 16 17 BeforeEach(func() { 18 _ = helpers.LoginCF() 19 orgQuotaName = helpers.NewOrgQuotaName() 20 }) 21 22 Describe("help", func() { 23 When("--help flag is set", func() { 24 It("appears in cf help -a", func() { 25 session := helpers.CF("help", "-a") 26 Eventually(session).Should(Exit(0)) 27 Expect(session).To(HaveCommandInCategoryWithDescription("create-org-quota", "ORG ADMIN", "Define a new quota for an organization")) 28 }) 29 30 It("Displays command usage to output", func() { 31 session := helpers.CF("create-org-quota", "--help") 32 Eventually(session).Should(Say("NAME:")) 33 Eventually(session).Should(Say("create-org-quota - Define a new quota for an organization")) 34 Eventually(session).Should(Say("USAGE:")) 35 Eventually(session).Should(Say(`cf create-org-quota ORG_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\]`)) 36 Eventually(session).Should(Say("ALIAS:")) 37 Eventually(session).Should(Say("create-quota")) 38 Eventually(session).Should(Say("OPTIONS:")) 39 Eventually(session).Should(Say(`-a\s+Total number of application instances. \(Default: unlimited\)`)) 40 Eventually(session).Should(Say(`--allow-paid-service-plans\s+Allow provisioning instances of paid service plans. \(Default: disallowed\)`)) 41 Eventually(session).Should(Say(`-i\s+Maximum amount of memory a process can have \(e.g. 1024M, 1G, 10G\). \(Default: unlimited\)`)) 42 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\)`)) 43 Eventually(session).Should(Say(`-r\s+Total number of routes. -1 represents an unlimited amount. \(Default: 0\)`)) 44 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\)`)) 45 Eventually(session).Should(Say(`-s\s+Total number of service instances. -1 represents an unlimited amount. \(Default: 0\)`)) 46 Eventually(session).Should(Say("SEE ALSO:")) 47 Eventually(session).Should(Say("create-org, org-quotas, set-org-quota")) 48 Eventually(session).Should(Exit(0)) 49 }) 50 }) 51 }) 52 53 When("the environment is not setup correctly", func() { 54 It("fails with the appropriate errors", func() { 55 helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "create-org-quota", orgQuotaName) 56 }) 57 }) 58 59 When("the environment is set up correctly", func() { 60 When("the quota name is not provided", func() { 61 It("tells the user that the quota name is required, prints help text, and exits 1", func() { 62 session := helpers.CF("create-org-quota") 63 64 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `ORG_QUOTA_NAME` was not provided")) 65 Eventually(session).Should(Say("NAME:")) 66 Eventually(session).Should(Exit(1)) 67 }) 68 }) 69 70 When("a nonexistent flag is provided", func() { 71 It("tells the user that the flag is invalid", func() { 72 session := helpers.CF("create-org-quota", "--nonexistent") 73 74 Eventually(session.Err).Should(Say("Incorrect Usage: unknown flag `nonexistent'")) 75 Eventually(session).Should(Say("NAME:")) 76 Eventually(session).Should(Exit(1)) 77 }) 78 79 }) 80 81 When("an invalid flag value is provided", func() { 82 It("tells the user that the flag value is invalid", func() { 83 session := helpers.CF("create-org-quota", orgQuotaName, 84 "-a", "hello") 85 86 Eventually(session.Err).Should(Say(`Incorrect Usage: invalid integer limit \(expected int >= -1\)`)) 87 Eventually(session).Should(Exit(1)) 88 }) 89 }) 90 91 When("the quota does not exist", func() { 92 When("no flags are provided", func() { 93 It("creates the quota with the default values", func() { 94 session := helpers.CF("create-org-quota", orgQuotaName) 95 userName, _ := helpers.GetCredentials() 96 Eventually(session).Should(Say("Creating org quota %s as %s...", orgQuotaName, userName)) 97 Eventually(session).Should(Say("OK")) 98 Eventually(session).Should(Exit(0)) 99 100 session = helpers.CF("org-quota", orgQuotaName) 101 Eventually(session).Should(Say("Getting org quota %s as %s...", orgQuotaName, userName)) 102 Eventually(session).Should(Say(`total memory:\s+0`)) 103 Eventually(session).Should(Say(`instance memory:\s+unlimited`)) 104 Eventually(session).Should(Say(`service instances:\s+0`)) 105 Eventually(session).Should(Say(`paid service plans:\s+disallowed`)) 106 Eventually(session).Should(Say(`app instances:\s+unlimited`)) 107 Eventually(session).Should(Say(`route ports:\s+0`)) 108 Eventually(session).Should(Exit(0)) 109 }) 110 }) 111 112 When("all the optional flags are provided", func() { 113 It("creates the quota with the specified values", func() { 114 userName, _ := helpers.GetCredentials() 115 session := helpers.CF("create-org-quota", orgQuotaName, 116 "-a", "2", 117 "--allow-paid-service-plans", 118 "-i", "2M", 119 "-m", "4M", 120 "-r", "6", 121 "--reserved-route-ports", "5", 122 "-s", "7") 123 Eventually(session).Should(Say("Creating org quota %s as %s...", orgQuotaName, userName)) 124 Eventually(session).Should(Say("OK")) 125 Eventually(session).Should(Exit(0)) 126 127 session = helpers.CF("org-quota", orgQuotaName) 128 Eventually(session).Should(Say("Getting org quota %s as %s...", orgQuotaName, userName)) 129 Eventually(session).Should(Say(`total memory:\s+4M`)) 130 Eventually(session).Should(Say(`instance memory:\s+2M`)) 131 Eventually(session).Should(Say(`routes:\s+6`)) 132 Eventually(session).Should(Say(`service instances:\s+7`)) 133 Eventually(session).Should(Say(`paid service plans:\s+allowed`)) 134 Eventually(session).Should(Say(`app instances:\s+2`)) 135 Eventually(session).Should(Say(`route ports:\s+5`)) 136 Eventually(session).Should(Exit(0)) 137 }) 138 }) 139 140 When("The flags are all set to -1", func() { 141 It("creates the quota with the specified values", func() { 142 userName, _ := helpers.GetCredentials() 143 session := helpers.CF("create-org-quota", orgQuotaName, 144 "-a", "-1", 145 "-i", "-1", 146 "-m", "-1", 147 "-r", "-1", 148 "-s", "-1", 149 "--reserved-route-ports", "-1") 150 Eventually(session).Should(Say("Creating org quota %s as %s...", orgQuotaName, userName)) 151 Eventually(session).Should(Say("OK")) 152 Eventually(session).Should(Exit(0)) 153 154 session = helpers.CF("org-quota", orgQuotaName) 155 Eventually(session).Should(Say(`total memory:\s+unlimited`)) 156 Eventually(session).Should(Say(`instance memory:\s+unlimited`)) 157 Eventually(session).Should(Say(`routes:\s+unlimited`)) 158 Eventually(session).Should(Say(`service instances:\s+unlimited`)) 159 Eventually(session).Should(Say(`app instances:\s+unlimited`)) 160 Eventually(session).Should(Say(`route ports:\s+unlimited`)) 161 Eventually(session).Should(Exit(0)) 162 }) 163 }) 164 }) 165 166 When("the quota already exists", func() { 167 BeforeEach(func() { 168 Eventually(helpers.CF("create-org-quota", orgQuotaName)).Should(Exit(0)) 169 }) 170 171 It("notifies the user that the quota already exists and exits 0", func() { 172 session := helpers.CF("create-org-quota", orgQuotaName) 173 userName, _ := helpers.GetCredentials() 174 Eventually(session).Should(Say("Creating org quota %s as %s...", orgQuotaName, userName)) 175 Eventually(session.Err).Should(Say(`Organization Quota '%s' already exists\.`, orgQuotaName)) 176 Eventually(session).Should(Say("OK")) 177 Eventually(session).Should(Exit(0)) 178 }) 179 }) 180 }) 181 })