github.com/wanddynosios/cli/v8@v8.7.9-0.20240221182337-1a92e3a7017f/integration/v7/global/unbind_security_group_command_test.go (about) 1 package global 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("unbind-security-group command", func() { 12 var ( 13 orgName string 14 securityGroupName string 15 spaceName string 16 ) 17 18 BeforeEach(func() { 19 orgName = helpers.NewOrgName() 20 securityGroupName = helpers.NewSecurityGroupName() 21 spaceName = helpers.NewSpaceName() 22 23 helpers.LoginCF() 24 }) 25 26 Describe("help", func() { 27 When("--help flag is set", func() { 28 It("Displays command usage to output", func() { 29 session := helpers.CF("unbind-security-group", "--help") 30 Eventually(session).Should(Say("NAME:")) 31 Eventually(session).Should(Say(`\s+unbind-security-group - Unbind a security group from a space`)) 32 Eventually(session).Should(Say("USAGE:")) 33 Eventually(session).Should(Say(`\s+cf unbind-security-group SECURITY_GROUP ORG SPACE \[--lifecycle \(running \| staging\)\]`)) 34 Eventually(session).Should(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`)) 35 Eventually(session).Should(Say("OPTIONS:")) 36 Eventually(session).Should(Say(`\s+--lifecycle Lifecycle phase the group applies to \(Default: running\)`)) 37 Eventually(session).Should(Say("SEE ALSO:")) 38 Eventually(session).Should(Say(`\s+apps, restart, security-groups`)) 39 Eventually(session).Should(Exit(0)) 40 }) 41 }) 42 }) 43 44 When("the lifecycle flag is invalid", func() { 45 It("outputs a message and usage", func() { 46 session := helpers.CF("unbind-security-group", securityGroupName, "some-org", "some-space", "--lifecycle", "invalid") 47 Eventually(session.Err).Should(Say("Incorrect Usage: Invalid value `invalid' for option `--lifecycle'. Allowed values are: running or staging")) 48 Eventually(session).Should(Say("USAGE:")) 49 Eventually(session).Should(Exit(1)) 50 }) 51 }) 52 53 When("the lifecycle flag has no argument", func() { 54 It("outputs a message and usage", func() { 55 session := helpers.CF("unbind-security-group", securityGroupName, "some-org", "some-space", "--lifecycle") 56 Eventually(session.Err).Should(Say("Incorrect Usage: expected argument for flag `--lifecycle'")) 57 Eventually(session).Should(Say("USAGE:")) 58 Eventually(session).Should(Exit(1)) 59 }) 60 }) 61 62 When("the environment is not setup correctly", func() { 63 It("fails with the appropriate errors", func() { 64 helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "unbind-security-group", securityGroupName, "some-org", "some-space") 65 }) 66 }) 67 68 When("the input is invalid", func() { 69 When("the security group is not provided", func() { 70 It("fails with an incorrect usage message and displays help", func() { 71 session := helpers.CF("unbind-security-group") 72 Eventually(session.Err).Should(Say("Incorrect Usage: the required arguments `SECURITY_GROUP`, `ORG` and `SPACE` were not provided")) 73 Eventually(session).Should(Say("USAGE:")) 74 Eventually(session).Should(Exit(1)) 75 }) 76 }) 77 78 When("the space is not provided", func() { 79 It("fails with an incorrect usage message and displays help", func() { 80 session := helpers.CF("unbind-security-group", securityGroupName, "some-org") 81 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `SPACE` was not provided")) 82 Eventually(session).Should(Say("USAGE:")) 83 Eventually(session).Should(Exit(1)) 84 }) 85 }) 86 }) 87 88 When("the security group doesn't exist", func() { 89 BeforeEach(func() { 90 helpers.CreateOrgAndSpace(orgName, spaceName) 91 }) 92 93 AfterEach(func() { 94 helpers.QuickDeleteOrg(orgName) 95 }) 96 97 It("fails with a 'security group not found' message", func() { 98 session := helpers.CF("unbind-security-group", "some-other-security-group", orgName, spaceName) 99 Eventually(session).Should(Say("FAILED")) 100 Eventually(session.Err).Should(Say(`Security group 'some-other-security-group' not found\.`)) 101 Eventually(session).Should(Exit(1)) 102 }) 103 }) 104 105 When("the security group exists", func() { 106 BeforeEach(func() { 107 port := "8443" 108 description := "some-description" 109 someSecurityGroup := helpers.NewSecurityGroup(securityGroupName, "tcp", "127.0.0.1", &port, &description) 110 helpers.CreateSecurityGroup(someSecurityGroup) 111 }) 112 113 When("the org doesn't exist", func() { 114 It("fails with an 'org not found' message", func() { 115 session := helpers.CF("unbind-security-group", securityGroupName, "some-other-org", "some-other-space") 116 Eventually(session).Should(Say("FAILED")) 117 Eventually(session.Err).Should(Say(`Organization 'some-other-org' not found\.`)) 118 Eventually(session).Should(Exit(1)) 119 }) 120 }) 121 122 When("the org exists", func() { 123 var username string 124 125 BeforeEach(func() { 126 username, _ = helpers.GetCredentials() 127 128 helpers.CreateOrg(orgName) 129 helpers.TargetOrg(orgName) 130 }) 131 132 AfterEach(func() { 133 helpers.QuickDeleteOrg(orgName) 134 }) 135 136 When("the space doesn't exist", func() { 137 It("fails with a 'space not found' message", func() { 138 session := helpers.CF("unbind-security-group", securityGroupName, orgName, "some-other-space") 139 Eventually(session).Should(Say("FAILED")) 140 Eventually(session.Err).Should(Say(`Space 'some-other-space' not found\.`)) 141 Eventually(session).Should(Exit(1)) 142 }) 143 }) 144 145 When("the space exists", func() { 146 BeforeEach(func() { 147 helpers.CreateSpace(spaceName) 148 }) 149 150 When("the space isn't bound to the security group in any lifecycle", func() { 151 It("successfully runs the command", func() { 152 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName) 153 Eventually(session).Should(Say(`Unbinding running security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 154 Eventually(session.Err).Should(Say(`Security group %s not bound to space %s for lifecycle phase 'running'\.`, securityGroupName, spaceName)) 155 Eventually(session).Should(Say("OK")) 156 Eventually(session).Should(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`)) 157 Eventually(session).Should(Exit(0)) 158 }) 159 }) 160 161 When("a space is bound to a security group in the running lifecycle", func() { 162 BeforeEach(func() { 163 Eventually(helpers.CF("bind-security-group", securityGroupName, orgName, "--space", spaceName)).Should(Exit(0)) 164 }) 165 166 When("the lifecycle flag is not set", func() { 167 BeforeEach(func() { 168 helpers.ClearTarget() 169 }) 170 171 It("successfully unbinds the space from the security group", func() { 172 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName) 173 Eventually(session).Should(Say(`Unbinding running security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 174 Eventually(session).Should(Say("OK")) 175 Eventually(session).Should(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`)) 176 Eventually(session).Should(Exit(0)) 177 }) 178 }) 179 180 When("the lifecycle flag is running", func() { 181 BeforeEach(func() { 182 helpers.ClearTarget() 183 }) 184 185 It("successfully unbinds the space from the security group", func() { 186 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName, "--lifecycle", "running") 187 Eventually(session).Should(Say(`Unbinding running security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 188 Eventually(session).Should(Say("OK")) 189 Eventually(session).Should(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`)) 190 Eventually(session).Should(Exit(0)) 191 }) 192 }) 193 194 When("the lifecycle flag is staging", func() { 195 BeforeEach(func() { 196 helpers.ClearTarget() 197 }) 198 199 It("displays an error and exits 1", func() { 200 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName, "--lifecycle", "staging") 201 Eventually(session).Should(Say(`Unbinding staging security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 202 Eventually(session).Should(Say("OK")) 203 Eventually(session.Err).Should(Say(`Security group %s not bound to space %s for lifecycle phase 'staging'\.`, securityGroupName, spaceName)) 204 Eventually(session).Should(Exit(0)) 205 }) 206 }) 207 }) 208 209 When("a space is bound to a security group in the staging lifecycle", func() { 210 BeforeEach(func() { 211 Eventually(helpers.CF("bind-security-group", securityGroupName, orgName, "--space", spaceName, "--lifecycle", "staging")).Should(Exit(0)) 212 }) 213 214 When("the lifecycle flag is not set", func() { 215 BeforeEach(func() { 216 helpers.ClearTarget() 217 }) 218 219 It("displays an error and exits 1", func() { 220 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName) 221 Eventually(session).Should(Say(`Unbinding running security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 222 Eventually(session).Should(Say("OK")) 223 Eventually(session.Err).Should(Say(`Security group %s not bound to space %s for lifecycle phase 'running'\.`, securityGroupName, spaceName)) 224 Eventually(session).Should(Exit(0)) 225 }) 226 }) 227 228 When("the lifecycle flag is running", func() { 229 BeforeEach(func() { 230 helpers.ClearTarget() 231 }) 232 233 It("displays an error and exits 1", func() { 234 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName, "--lifecycle", "running") 235 Eventually(session).Should(Say(`Unbinding running security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 236 Eventually(session).Should(Say("OK")) 237 Eventually(session.Err).Should(Say(`Security group %s not bound to space %s for lifecycle phase 'running'\.`, securityGroupName, spaceName)) 238 Eventually(session).Should(Exit(0)) 239 }) 240 }) 241 242 When("the lifecycle flag is staging", func() { 243 BeforeEach(func() { 244 helpers.ClearTarget() 245 }) 246 247 It("successfully unbinds the space from the security group", func() { 248 session := helpers.CF("unbind-security-group", securityGroupName, orgName, spaceName, "--lifecycle", "staging") 249 Eventually(session).Should(Say(`Unbinding staging security group %s from org %s / space %s as %s\.\.\.`, securityGroupName, orgName, spaceName, username)) 250 Eventually(session).Should(Say("OK")) 251 Eventually(session).Should(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`)) 252 Eventually(session).Should(Exit(0)) 253 }) 254 }) 255 }) 256 }) 257 }) 258 }) 259 })