}) Context("when the group with the given name exists", func() { BeforeEach(func() { securityGroupRepo.ReadReturns(models.SecurityGroup{ SecurityGroupFields: models.SecurityGroupFields{ Name: "my-group", GUID: "group-guid", }, }, nil) }) Context("delete a security group", func() { It("when passed the -f flag", func() { runCommand("-f", "my-group") Expect(securityGroupRepo.ReadArgsForCall(0)).To(Equal("my-group")) Expect(securityGroupRepo.DeleteArgsForCall(0)).To(Equal("group-guid")) Expect(ui.Prompts).To(BeEmpty()) }) It("should prompt user when -f flag is not present", func() { ui.Inputs = []string{"y"} runCommand("my-group") Expect(securityGroupRepo.ReadArgsForCall(0)).To(Equal("my-group")) Expect(securityGroupRepo.DeleteArgsForCall(0)).To(Equal("group-guid")) Expect(ui.Prompts).To(ContainSubstrings( []string{"Really delete the security group", "my-group"}, ))
}) Context("when the user is logged in and provides the name of a security group", func() { BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) }) Context("when a security group with that name does not exist", func() { BeforeEach(func() { fakeSecurityGroupRepo.ReadReturns(models.SecurityGroup{}, errors.NewModelNotFoundError("security group", "my-nonexistent-security-group")) }) It("fails and tells the user", func() { runCommand("my-nonexistent-security-group", "my-org", "my-space") Expect(fakeSecurityGroupRepo.ReadArgsForCall(0)).To(Equal("my-nonexistent-security-group")) Expect(ui.Outputs()).To(ContainSubstrings( []string{"FAILED"}, []string{"security group", "my-nonexistent-security-group", "not found"}, )) }) }) Context("when the org does not exist", func() { BeforeEach(func() { fakeOrgRepo.FindByNameReturns(models.Organization{}, errors.New("Org org not found")) }) It("fails and tells the user", func() { runCommand("sec group", "org", "space")
}) 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."}, )) }) It("binds the group to the running group set", func() { Expect(fakeSecurityGroupRepo.ReadArgsForCall(0)).To(Equal("security-group-name")) Expect(fakeRunningSecurityGroupRepo.BindToRunningSetArgsForCall(0)).To(Equal("being-a-guid")) }) Context("when binding the security group to the running set fails", func() { BeforeEach(func() { fakeRunningSecurityGroupRepo.BindToRunningSetReturns(errors.New("WOAH. I know kung fu")) }) It("fails and describes the failure to the user", func() { Expect(ui.Outputs()).To(ContainSubstrings( []string{"FAILED"}, []string{"WOAH. I know kung fu"}, )) }) })