It("Describes what it is doing to the user", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{"Adding", "security-group-name", "as", "my-user"}, []string{"OK"}, )) }) It("adds the group to the running group set", func() { Expect(fakeSecurityGroupRepo.ReadArgsForCall(0)).To(Equal("security-group-name")) Expect(fakeRunningSecurityGroupRepo.AddToRunningSetArgsForCall(0)).To(Equal("being-a-guid")) }) Context("when adding the security group to the running set fails", func() { BeforeEach(func() { fakeRunningSecurityGroupRepo.AddToRunningSetReturns(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"}, )) }) }) Context("when the security group with the given name cannot be found", func() { BeforeEach(func() { fakeSecurityGroupRepo.ReadReturns(models.SecurityGroup{}, errors.New("Crème insufficiently brûlée'd")) })