public void Does_not_set_current_user_in_context_if_one_is_not_logged_in()
		{
			MockRepository mocks = new MockRepository();
			IWebContext context = mocks.CreateMock<IWebContext>();

			using (mocks.Record())
			{
				Expect.Call(context.GetUserIdentity()).Return(null);
			}

			using (mocks.Playback())
			{
				ISystemUserContextManager manager = new SystemUserContextManager(context, null);
				manager.SetUserContext();
			}

			mocks.VerifyAll();
		}
		public void Correctly_gets_current_user_in_web_context()
		{
			MockRepository mocks = new MockRepository();
			IWebContext context = mocks.CreateMock<IWebContext>();
			ISystemUser user = mocks.CreateMock<ISystemUser>();

			using (mocks.Record())
			{
				Expect.Call(context.GetItem<ISystemUser>(SystemUserContextManager.CURRENT_USER)).Return(user);
			}

			using (mocks.Playback())
			{
				ISystemUserContextManager manager = new SystemUserContextManager(context, null);
				
				Assert.That(manager.GetCurrentUser(), Is.SameAs(user));
			}

			mocks.VerifyAll();
		}
		public void Correctly_sets_current_user_in_web_context()
		{
			MockRepository mocks = new MockRepository();
			IWebContext context = mocks.CreateMock<IWebContext>();
			IIdentity userIdentity = mocks.CreateMock<IIdentity>();
			ISystemUserRepository repository = mocks.CreateMock<ISystemUserRepository>();
			ISystemUser user = mocks.CreateMock<ISystemUser>();

			using (mocks.Record())
			{
				Expect.Call(context.GetUserIdentity()).Return(userIdentity);
				Expect.Call(userIdentity.Name).Return("*****@*****.**");
				Expect.Call(repository.GetByEmailAddress("*****@*****.**")).Return(user);
				context.SetItem(SystemUserContextManager.CURRENT_USER, user);
			}

			using (mocks.Playback())
			{
				ISystemUserContextManager manager = new SystemUserContextManager(context, repository);
				manager.SetUserContext();
			}

			mocks.VerifyAll();
		}