github.com/sleungcy/cli@v7.1.0+incompatible/integration/v7/isolated/delete_security_group_command_test.go (about)

     1  package isolated
     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("delete-security-group command", func() {
    13  	var helpText func(*Session)
    14  
    15  	BeforeEach(func() {
    16  		helpText = func(session *Session) {
    17  			Eventually(session).Should(Say("NAME:"))
    18  			Eventually(session).Should(Say(`\s+delete-security-group - Deletes a security group`))
    19  			Eventually(session).Should(Say("USAGE:"))
    20  			Eventually(session).Should(Say(`\s+cf delete-security-group SECURITY_GROUP \[-f\]`))
    21  			Eventually(session).Should(Say(`TIP: Changes require an app restart \(for running\) or restage \(for staging\) to apply to existing applications.`))
    22  			Eventually(session).Should(Say("OPTIONS:"))
    23  			Eventually(session).Should(Say(`\s+--force, -f\s+Force deletion without confirmation`))
    24  			Eventually(session).Should(Say("SEE ALSO:"))
    25  			Eventually(session).Should(Say(`\s+security-groups`))
    26  		}
    27  	})
    28  
    29  	Describe("help", func() {
    30  		When("--help flag is set", func() {
    31  			It("Displays command usage to output", func() {
    32  				session := helpers.CF("delete-security-group", "--help")
    33  				helpText(session)
    34  				Eventually(session).Should(Exit(0))
    35  			})
    36  		})
    37  	})
    38  
    39  	When("the environment is not setup correctly", func() {
    40  		It("fails with the appropriate errors", func() {
    41  			helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "bind-staging-security-group", "bogus")
    42  		})
    43  	})
    44  
    45  	When("the security group name is not provided", func() {
    46  		BeforeEach(func() {
    47  			helpers.LoginCF()
    48  		})
    49  
    50  		It("displays an error and help", func() {
    51  			session := helpers.CF("delete-security-group")
    52  			Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `SECURITY_GROUP` was not provided"))
    53  			helpText(session)
    54  			Eventually(session).Should(Exit(1))
    55  		})
    56  	})
    57  
    58  	When("the security-group does not exist", func() {
    59  		BeforeEach(func() {
    60  			helpers.LoginCF()
    61  		})
    62  
    63  		It("displays a warning and exits 0", func() {
    64  			username, _ := helpers.GetCredentials()
    65  			session := helpers.CF("delete-security-group", "-f", "please-do-not-exist-in-real-life")
    66  			Eventually(session).Should(Say("Deleting security group please-do-not-exist-in-real-life as %s", username))
    67  			Eventually(session).Should(Say("OK"))
    68  			Eventually(session.Err).Should(Say("Security group 'please-do-not-exist-in-real-life' does not exist."))
    69  			Eventually(session).Should(Exit(0))
    70  		})
    71  	})
    72  
    73  	When("the security group exists", func() {
    74  		var (
    75  			securityGroupName string
    76  			securityGroup     resources.SecurityGroup
    77  			ports             string
    78  			description       string
    79  		)
    80  
    81  		BeforeEach(func() {
    82  			helpers.LoginCF()
    83  		})
    84  
    85  		When("the -f flag not is provided", func() {
    86  			var buffer *Buffer
    87  
    88  			BeforeEach(func() {
    89  				buffer = NewBuffer()
    90  				securityGroupName = helpers.NewSecurityGroupName()
    91  				ports = "8080"
    92  				description = "my favorite description"
    93  				securityGroup = helpers.NewSecurityGroup(securityGroupName, "tcp", "0.0.0.0", &ports, &description)
    94  				helpers.CreateSecurityGroup(securityGroup)
    95  			})
    96  
    97  			AfterEach(func() {
    98  				helpers.DeleteSecurityGroup(securityGroup)
    99  			})
   100  
   101  			When("the user enters 'y'", func() {
   102  				BeforeEach(func() {
   103  					_, err := buffer.Write([]byte("y\n"))
   104  					Expect(err).ToNot(HaveOccurred())
   105  				})
   106  
   107  				It("deletes the security group", func() {
   108  					username, _ := helpers.GetCredentials()
   109  					session := helpers.CFWithStdin(buffer, "delete-security-group", securityGroupName)
   110  					Eventually(session).Should(Say(`Really delete the security group %s?`, securityGroupName))
   111  					Eventually(session).Should(Say("Deleting security group %s as %s", securityGroupName, username))
   112  					Eventually(session).Should(Say("OK"))
   113  					Eventually(session).Should(Say(`TIP: Changes require an app restart \(for running\) or restage \(for staging\) to apply to existing applications.`))
   114  					Eventually(session).Should(Exit(0))
   115  					Eventually(helpers.CF("security-group", securityGroupName)).Should(Exit(1))
   116  				})
   117  			})
   118  
   119  			When("the user enters 'n'", func() {
   120  				BeforeEach(func() {
   121  					_, err := buffer.Write([]byte("n\n"))
   122  					Expect(err).ToNot(HaveOccurred())
   123  				})
   124  
   125  				It("does not delete the security group", func() {
   126  					session := helpers.CFWithStdin(buffer, "delete-security-group", securityGroupName)
   127  					Eventually(session).Should(Say(`Really delete the security group %s?`, securityGroupName))
   128  					Eventually(session).Should(Say(`Security group '%s' has not been deleted.`, securityGroupName))
   129  					Eventually(session).Should(Exit(0))
   130  					Eventually(helpers.CF("security-group", securityGroupName)).Should(Exit(0))
   131  				})
   132  			})
   133  
   134  			When("the user enters the default input (hits return)", func() {
   135  				BeforeEach(func() {
   136  					_, err := buffer.Write([]byte("\n"))
   137  					Expect(err).ToNot(HaveOccurred())
   138  				})
   139  
   140  				It("does not delete the security group", func() {
   141  					session := helpers.CFWithStdin(buffer, "delete-security-group", securityGroupName)
   142  					Eventually(session).Should(Say(`Really delete the security group %s?`, securityGroupName))
   143  					Eventually(session).Should(Say(`Security group '%s' has not been deleted.`, securityGroupName))
   144  					Eventually(session).Should(Exit(0))
   145  					Eventually(helpers.CF("security-group", securityGroupName)).Should(Exit(0))
   146  				})
   147  			})
   148  
   149  			When("the user enters an invalid answer", func() {
   150  				BeforeEach(func() {
   151  					// The second '\n' is intentional. Otherwise the buffer will be
   152  					// closed while the interaction is still waiting for input; it gets
   153  					// an EOF and causes an error.
   154  					_, err := buffer.Write([]byte("wat\n\n"))
   155  					Expect(err).ToNot(HaveOccurred())
   156  				})
   157  
   158  				It("asks again", func() {
   159  					session := helpers.CFWithStdin(buffer, "delete-security-group", securityGroupName)
   160  					Eventually(session).Should(Say(`Really delete the security group %s?`, securityGroupName))
   161  					Eventually(session).Should(Say(`Security group '%s' has not been deleted.`, securityGroupName))
   162  					Eventually(session).Should(Exit(0))
   163  					Eventually(helpers.CF("security-group", securityGroupName)).Should(Exit(0))
   164  				})
   165  			})
   166  		})
   167  
   168  		When("the -f flag is provided", func() {
   169  			BeforeEach(func() {
   170  				securityGroupName = helpers.NewSecurityGroupName()
   171  				ports = "8080"
   172  				description = "my favorite description"
   173  				securityGroup := helpers.NewSecurityGroup(securityGroupName, "tcp", "0.0.0.0", &ports, &description)
   174  				helpers.CreateSecurityGroup(securityGroup)
   175  			})
   176  
   177  			It("deletes the security group", func() {
   178  				username, _ := helpers.GetCredentials()
   179  				session := helpers.CF("delete-security-group", securityGroupName, "-f")
   180  				Eventually(session).Should(Say("Deleting security group %s as %s", securityGroupName, username))
   181  				Eventually(session).Should(Say("OK"))
   182  				Eventually(session).Should(Say(`TIP: Changes require an app restart \(for running\) or restage \(for staging\) to apply to existing applications.`))
   183  				Eventually(session).Should(Exit(0))
   184  				Eventually(helpers.CF("security-group", securityGroupName)).Should(Exit(1))
   185  			})
   186  		})
   187  	})
   188  })