public void GetPrincipal_HttpContextUserIsAuthenticated_ReturnsSecurityPrincipalWithNameFromUser()
        {
            var identityStub = MockRepository.GenerateStub <IIdentity>();

            identityStub.Stub(_ => _.IsAuthenticated).Return(true);
            identityStub.Stub(_ => _.Name).Return("The User");

            var principalStub = MockRepository.GenerateStub <IPrincipal>();

            principalStub.Stub(_ => _.Identity).Return(identityStub);

            var httpContextStub = MockRepository.GenerateStub <HttpContextBase>();

            httpContextStub.User = principalStub;

            var httpContextProviderStub = MockRepository.GenerateStub <IHttpContextProvider>();

            httpContextProviderStub.Stub(_ => _.GetCurrentHttpContext()).Return(httpContextStub);

            IPrincipalProvider principalProvider = new HttpContextPrincipalProvider(httpContextProviderStub);

            var securityPrincipal = principalProvider.GetPrincipal();

            Assert.That(securityPrincipal, Is.TypeOf <SecurityPrincipal>());
            Assert.That(securityPrincipal.User, Is.EqualTo("The User"));
        }
        public void GetPrincipal_HttpContextProviderReturnsNull_ThrowsInvalidOperationException()
        {
            var httpContextProviderStub = MockRepository.GenerateStub <IHttpContextProvider>();

            httpContextProviderStub.Stub(_ => _.GetCurrentHttpContext()).Return(null);

            IPrincipalProvider principalProvider = new HttpContextPrincipalProvider(httpContextProviderStub);

            Assert.That(
                () => principalProvider.GetPrincipal(),
                Throws.InvalidOperationException.With.Message.EqualTo("IHttpContextProvider.GetCurrentHttpContext() evaludated and returned null."));
        }
        public void GetPrincipal_HttpContextUserIsNotAuthenticated_ReturnsNullSecurityPrincipal()
        {
            var identityStub = MockRepository.GenerateStub <IIdentity>();

            identityStub.Stub(_ => _.IsAuthenticated).Return(false);

            var principalStub = MockRepository.GenerateStub <IPrincipal>();

            principalStub.Stub(_ => _.Identity).Return(identityStub);

            var httpContextStub = MockRepository.GenerateStub <HttpContextBase>();

            httpContextStub.User = principalStub;

            var httpContextProviderStub = MockRepository.GenerateStub <IHttpContextProvider>();

            httpContextProviderStub.Stub(_ => _.GetCurrentHttpContext()).Return(httpContextStub);

            IPrincipalProvider principalProvider = new HttpContextPrincipalProvider(httpContextProviderStub);

            Assert.That(principalProvider.GetPrincipal(), Is.TypeOf <NullSecurityPrincipal>());
        }
        public void GetIsNull()
        {
            IPrincipalProvider principalProvider = new HttpContextPrincipalProvider(MockRepository.GenerateStub <IHttpContextProvider>());

            Assert.That(principalProvider.IsNull, Is.False);
        }