public void Should_throw_when_expectations_are_null()
        {
            ISecurityConfiguration securityConfiguration = FluentSecurityFactory.CreateSecurityConfigurationWithTwoExpectations();

            Assert.Throws <ArgumentNullException>(() =>
                                                  securityConfiguration.Verify <AdminController>(null)
                                                  );
        }
        public void Should_not_throw()
        {
            ISecurityConfiguration securityConfiguration = FluentSecurityFactory.CreateSecurityConfiguration();

            Assert.DoesNotThrow(() =>
                                securityConfiguration.Verify <AdminController>(expectations => { })
                                );
        }
        public void Should_throw_when_configuration_is_null()
        {
            ISecurityConfiguration securityConfiguration = null;

            Assert.Throws <ArgumentNullException>(() =>
                                                  securityConfiguration.Verify <AdminController>(expectations => { })
                                                  );
        }
        public void Should_verify_expectations()
        {
            ISecurityConfiguration securityConfiguration = FluentSecurityFactory.CreateSecurityConfiguration();

            var results = securityConfiguration.Verify <AdminController>(expectations =>
            {
                expectations.Expect().Has <DenyAnonymousAccessPolicy>();
                expectations.Expect(x => x.Login()).DoesNotHave <DenyAnonymousAccessPolicy>().Has <DenyAuthenticatedAccessPolicy>();
                expectations.Expect(x => x.NewUser())
                .DoesNotHave <DenyAnonymousAccessPolicy>()
                .DoesNotHave <RequireRolePolicy>(p => p.RolesRequired.Contains(UserRole.UserViewer))
                .Has <RequireRolePolicy>(p => p.RolesRequired.Contains(UserRole.UserEditor));
            });

            Assert.That(results.All(x => x.ExpectationsMet), results.ErrorMessages());
        }