github.com/wanddynosios/cli/v8@v8.7.9-0.20240221182337-1a92e3a7017f/integration/v7/global/bind_security_group_command_test.go (about) 1 package global 2 3 import ( 4 "code.cloudfoundry.org/cli/integration/helpers" 5 "code.cloudfoundry.org/cli/resources" 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("bind-security-group command", func() { 13 var ( 14 orgName string 15 secGroupName string 16 someOrgName string 17 spaceName1 string 18 spaceName2 string 19 ) 20 21 BeforeEach(func() { 22 orgName = helpers.NewOrgName() 23 secGroupName = helpers.NewSecurityGroupName() 24 someOrgName = helpers.NewOrgName() 25 spaceName1 = helpers.NewSpaceName() 26 spaceName2 = helpers.NewSpaceName() 27 28 helpers.LoginCF() 29 }) 30 31 Describe("help", func() { 32 When("--help flag is set", func() { 33 It("Displays command usage to output", func() { 34 session := helpers.CF("bind-security-group", "--help") 35 Eventually(session).Should(Say("NAME:")) 36 Eventually(session).Should(Say(`\s+bind-security-group - Bind a security group to a particular space, or all existing spaces of an org`)) 37 Eventually(session).Should(Say("USAGE:")) 38 Eventually(session).Should(Say(`\s+cf bind-security-group SECURITY_GROUP ORG \[--lifecycle \(running \| staging\)\] \[--space SPACE\]`)) 39 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\.`)) 40 Eventually(session).Should(Say("OPTIONS:")) 41 Eventually(session).Should(Say(`\s+--lifecycle Lifecycle phase the group applies to\. \(Default: running\)`)) 42 Eventually(session).Should(Say(`\s+--space Space to bind the security group to\. \(Default: all existing spaces in org\)`)) 43 Eventually(session).Should(Say("SEE ALSO:")) 44 Eventually(session).Should(Say(`\s+apps, bind-running-security-group, bind-staging-security-group, restart, security-groups`)) 45 Eventually(session).Should(Exit(0)) 46 }) 47 }) 48 }) 49 50 When("the lifecycle flag is invalid", func() { 51 It("outputs a message and usage", func() { 52 session := helpers.CF("bind-security-group", secGroupName, someOrgName, "--lifecycle", "invalid") 53 Eventually(session.Err).Should(Say("Incorrect Usage: Invalid value `invalid' for option `--lifecycle'. Allowed values are: running or staging")) 54 Eventually(session).Should(Say("USAGE:")) 55 Eventually(session).Should(Exit(1)) 56 }) 57 }) 58 59 When("the lifecycle flag has no argument", func() { 60 It("outputs a message and usage", func() { 61 session := helpers.CF("bind-security-group", secGroupName, someOrgName, "--lifecycle") 62 Eventually(session.Err).Should(Say("Incorrect Usage: expected argument for flag `--lifecycle'")) 63 Eventually(session).Should(Say("USAGE:")) 64 Eventually(session).Should(Exit(1)) 65 }) 66 }) 67 68 When("the environment is not setup correctly", func() { 69 It("fails with the appropriate errors", func() { 70 helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "bind-security-group", "security-group-name", "org-name", "--space", "space-name") 71 }) 72 }) 73 74 When("the input is invalid", func() { 75 When("the security group is not provided", func() { 76 It("fails with an incorrect usage message and displays help", func() { 77 session := helpers.CF("bind-security-group") 78 Eventually(session.Err).Should(Say("Incorrect Usage: the required arguments `SECURITY_GROUP` and `ORG` were not provided")) 79 Eventually(session).Should(Say("USAGE:")) 80 Eventually(session).Should(Exit(1)) 81 }) 82 }) 83 84 When("the org is not provided", func() { 85 It("fails with an incorrect usage message and displays help", func() { 86 session := helpers.CF("bind-security-group", secGroupName) 87 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `ORG` was not provided")) 88 Eventually(session).Should(Say("USAGE:")) 89 Eventually(session).Should(Exit(1)) 90 }) 91 }) 92 }) 93 94 When("the security group doesn't exist", func() { 95 It("fails with a security group not found message", func() { 96 session := helpers.CF("bind-security-group", "some-security-group-that-doesn't-exist", someOrgName) 97 Eventually(session.Err).Should(Say("Security group 'some-security-group-that-doesn't-exist' not found.")) 98 Eventually(session).Should(Say("FAILED")) 99 Eventually(session).Should(Exit(1)) 100 }) 101 }) 102 103 When("the security group exists", func() { 104 var ( 105 someSecurityGroup resources.SecurityGroup 106 ports string 107 description string 108 ) 109 110 BeforeEach(func() { 111 ports = "53" 112 description = "SG" 113 someSecurityGroup = helpers.NewSecurityGroup(secGroupName, "tcp", "0.0.0.0/0", &ports, &description) 114 helpers.CreateSecurityGroup(someSecurityGroup) 115 }) 116 117 When("the org doesn't exist", func() { 118 It("fails with an org not found message", func() { 119 session := helpers.CF("bind-security-group", secGroupName, someOrgName) 120 Eventually(session.Err).Should(Say("Organization '%s' not found.", someOrgName)) 121 Eventually(session).Should(Say("FAILED")) 122 Eventually(session).Should(Exit(1)) 123 }) 124 }) 125 126 When("the org exists", func() { 127 BeforeEach(func() { 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("bind-security-group", secGroupName, orgName, "--space", "space-doesnt-exist") 139 userName, _ := helpers.GetCredentials() 140 Eventually(session).Should(Say("Assigning running security group %s to space space-doesnt-exist in org %s as %s...", secGroupName, orgName, userName)) 141 Eventually(session.Err).Should(Say("Space 'space-doesnt-exist' not found.")) 142 Eventually(session).Should(Say("FAILED")) 143 Eventually(session).Should(Exit(1)) 144 }) 145 }) 146 147 When("there are no spaces in this org", func() { 148 It("does not bind the security group to any space", func() { 149 session := helpers.CF("bind-security-group", secGroupName, orgName) 150 userName, _ := helpers.GetCredentials() 151 Eventually(session).Should(Say("Assigning running security group %s to all spaces in org %s as %s...", secGroupName, orgName, userName)) 152 Eventually(session).Should(Say("No spaces in org %s.", orgName)) 153 Consistently(session).ShouldNot(Say("OK")) 154 Eventually(session).ShouldNot(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\.`)) 155 Eventually(session).Should(Exit(0)) 156 }) 157 }) 158 159 When("there are spaces in this org", func() { 160 BeforeEach(func() { 161 helpers.CreateSpace(spaceName1) 162 helpers.CreateSpace(spaceName2) 163 }) 164 165 When("the lifecycle flag is not set", func() { 166 When("binding to all spaces in an org", func() { 167 It("binds the security group to each space", func() { 168 session := helpers.CF("bind-security-group", secGroupName, orgName) 169 userName, _ := helpers.GetCredentials() 170 Eventually(session).Should(Say(`Assigning running security group %s to spaces INTEGRATION-SPACE.*, INTEGRATION-SPACE.* in org %s as %s\.\.\.`, secGroupName, orgName, userName)) 171 Eventually(session).Should(Say("OK")) 172 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\.`)) 173 Eventually(session).Should(Exit(0)) 174 }) 175 }) 176 }) 177 178 When("binding to a particular space", func() { 179 It("binds the security group to the space", func() { 180 session := helpers.CF("bind-security-group", secGroupName, orgName, "--space", spaceName1) 181 userName, _ := helpers.GetCredentials() 182 Eventually(session).Should(Say(`Assigning running security group %s to space %s in org %s as %s\.\.\.`, secGroupName, spaceName1, orgName, userName)) 183 Eventually(session).Should(Say("OK")) 184 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\.`)) 185 Eventually(session).Should(Exit(0)) 186 }) 187 }) 188 189 When("the lifecycle flag is running", func() { 190 When("binding to a particular space", func() { 191 It("binds the security group to the space", func() { 192 session := helpers.CF("bind-security-group", secGroupName, orgName, "--space", spaceName1, "--lifecycle", "running") 193 userName, _ := helpers.GetCredentials() 194 Eventually(session).Should(Say(`Assigning running security group %s to space %s in org %s as %s\.\.\.`, secGroupName, spaceName1, orgName, userName)) 195 Eventually(session).Should(Say("OK")) 196 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\.`)) 197 Eventually(session).Should(Exit(0)) 198 }) 199 }) 200 }) 201 202 When("the lifecycle flag is staging", func() { 203 When("binding to all spaces in an org", func() { 204 It("binds the security group to each space", func() { 205 session := helpers.CF("bind-security-group", secGroupName, orgName, "--lifecycle", "staging") 206 userName, _ := helpers.GetCredentials() 207 Eventually(session).Should(Say(`Assigning staging security group %s to spaces INTEGRATION-SPACE.*, INTEGRATION-SPACE.* in org %s as %s\.\.\.`, secGroupName, orgName, userName)) 208 Eventually(session).Should(Say("OK")) 209 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\.`)) 210 Eventually(session).Should(Exit(0)) 211 }) 212 }) 213 214 When("binding to a particular space", func() { 215 It("binds the security group to the space", func() { 216 session := helpers.CF("bind-security-group", secGroupName, orgName, "--space", spaceName1, "--lifecycle", "staging") 217 userName, _ := helpers.GetCredentials() 218 Eventually(session).Should(Say(`Assigning staging security group %s to space %s in org %s as %s\.\.\.`, secGroupName, spaceName1, orgName, userName)) 219 Eventually(session).Should(Say("OK")) 220 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\.`)) 221 Eventually(session).Should(Exit(0)) 222 }) 223 }) 224 }) 225 }) 226 }) 227 }) 228 })