It("tries to find the user in CC", func() { userRequirement.Execute() Expect(userRepo.FindByUsernameCallCount()).To(Equal(1)) Expect(userRepo.FindByUsernameArgsForCall(0)).To(Equal("the-username")) }) Context("when the call to find the user succeeds", func() { var user models.UserFields BeforeEach(func() { user = models.UserFields{Username: "******", GUID: "the-guid"} userRepo.FindByUsernameReturns(user, nil) }) It("stores the user that was found", func() { userRequirement.Execute() Expect(userRequirement.GetUser()).To(Equal(user)) }) It("does not error", func() { err := userRequirement.Execute() Expect(err).NotTo(HaveOccurred()) }) }) Context("when the call to find the user fails", func() { userError := errors.New("some error") BeforeEach(func() { userRepo.FindByUsernameReturns(models.UserFields{}, userError) }) It("errors", func() {