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"}, ))
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."}, )) })
}) 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{ { SpaceFields: models.SpaceFields{Guid: "my-space-guid-1", Name: "space-1"},
Context("everything is hunky dory", func() { BeforeEach(func() { org := models.Organization{} org.Name = "org-name" org.Guid = "org-guid" fakeOrgRepo.ListOrgsReturns([]models.Organization{org}, nil) space := models.Space{} space.Name = "space-name" space.Guid = "space-guid" fakeSpaceRepo.FindByNameInOrgSpace = space securityGroup := models.SecurityGroup{} securityGroup.Name = "security-group" securityGroup.Guid = "security-group-guid" fakeSecurityGroupRepo.ReadReturns(securityGroup, nil) }) JustBeforeEach(func() { runCommand("security-group", "org-name", "space-name") }) It("assigns the security group to the space", func() { secGroupGuid, spaceGuid := fakeSpaceBinder.BindSpaceArgsForCall(0) Expect(secGroupGuid).To(Equal("security-group-guid")) Expect(spaceGuid).To(Equal("space-guid")) }) It("describes what it is doing for the user's benefit", func() { Expect(ui.Outputs).To(ContainSubstrings(