}) Context("when the user is logged in and provides the name of a security group", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) 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")
SpaceFields: models.SpaceFields{GUID: "my-space-guid-1", Name: "space-1"}, Organization: models.OrganizationFields{GUID: "my-org-guid-1", Name: "org-1"}, }, { SpaceFields: models.SpaceFields{GUID: "my-space-guid", Name: "space-2"}, Organization: models.OrganizationFields{GUID: "my-org-guid-1", Name: "org-2"}, }, }, } securityGroupRepo.ReadReturns(securityGroup, nil) }) It("should fetch the security group from its repo", func() { runCommand("my-group") Expect(securityGroupRepo.ReadArgsForCall(0)).To(Equal("my-group")) }) It("tells the user what it's about to do and then shows the group", func() { runCommand("my-group") Expect(ui.Outputs).To(ContainSubstrings( []string{"Getting", "security group", "my-group", "my-user"}, []string{"OK"}, []string{"Name", "my-group"}, []string{"Rules"}, []string{"["}, []string{"{"}, []string{"just-pretend", "that-this-is-correct"}, []string{"}"}, []string{"]"}, []string{"#0", "org-1", "space-1"},
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 default staging group set", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{"Unbinding", "security group", "a-security-group-name", "my-user"}, []string{"OK"}, )) Expect(fakeSecurityGroupRepo.ReadArgsForCall(0)).To(Equal("a-security-group-name")) Expect(fakeStagingSecurityGroupsRepo.UnbindFromStagingSetArgsForCall(0)).To(Equal("just-pretend-this-is-a-guid")) }) }) Context("when the security group does not exist", func() { BeforeEach(func() { fakeSecurityGroupRepo.ReadReturns(models.SecurityGroup{}, errors.NewModelNotFoundError("security group", "anana-qui-parle")) }) It("warns the user", func() { runCommand("anana-qui-parle") Expect(ui.WarnOutputs).To(ContainSubstrings( []string{"Security group", "anana-qui-parle", "does not exist"}, ))