[]string{"FAILED"}, )) }) Context("when there are no security groups", func() { It("Should tell the user that there are no security groups", func() { repo.FindAllReturns([]models.SecurityGroup{}, nil) runCommand() Expect(ui.Outputs).To(ContainSubstrings([]string{"No security groups"})) }) }) Context("when there is at least one security group", func() { BeforeEach(func() { securityGroup := models.SecurityGroup{} securityGroup.Name = "my-group" securityGroup.Guid = "group-guid" repo.FindAllReturns([]models.SecurityGroup{securityGroup}, nil) }) Describe("Where there are spaces assigned", func() { BeforeEach(func() { securityGroups := []models.SecurityGroup{ { SecurityGroupFields: models.SecurityGroupFields{ Name: "my-group", Guid: "group-guid", }, Spaces: []models.Space{
}) It("fails with usage when a name is not provided", func() { runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) }) Context("when the user is logged in and provides the name of a group", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) Context("security group exists", func() { BeforeEach(func() { group := models.SecurityGroup{} group.Guid = "just-pretend-this-is-a-guid" group.Name = "a-security-group-name" fakeSecurityGroupRepo.ReadReturns(group, nil) }) JustBeforeEach(func() { runCommand("a-security-group-name") }) It("unbinds the group from the running group set", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{"Unbinding", "security group", "a-security-group-name", "my-user"}, []string{"TIP: Changes will not apply to existing running applications until they are restarted."}, []string{"OK"}, ))
Describe("requirements", func() { It("fails when the user is not logged in", func() { runCommand("name") Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) It("fails with usage when a name is not provided", func() { runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) }) Context("when the user is logged in and provides the name of a group", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true group := models.SecurityGroup{} group.Guid = "being-a-guid" group.Name = "security-group-name" fakeSecurityGroupRepo.ReadReturns(group, nil) }) JustBeforeEach(func() { runCommand("security-group-name") }) It("Describes what it is doing to the user", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{"Binding", "security-group-name", "as", "my-user"}, []string{"OK"}, []string{"TIP: Changes will not apply to existing running applications until they are restarted."}, ))