예제 #1
0
    def test_policy_selected_event(self):
        from pyramid.testing import testConfig
        from pyramid_multiauth import MultiAuthPolicySelected

        policies = [TestAuthnPolicy2(), TestAuthnPolicy3()]
        policy = MultiAuthenticationPolicy(policies)
        # Simulate loading from config:
        policies[0]._pyramid_multiauth_name = "name"

        with testConfig() as config:
            request = DummyRequest()

            selected_policy = []

            def track_policy(event):
                selected_policy.append(event)

            config.add_subscriber(track_policy, MultiAuthPolicySelected)

            self.assertEquals(policy.authenticated_userid(request), "test2")

            self.assertEquals(selected_policy[0].policy, policies[0])
            self.assertEquals(selected_policy[0].policy_name, "name")
            self.assertEquals(selected_policy[0].userid, "test2")
            self.assertEquals(selected_policy[0].request, request)
            self.assertEquals(len(selected_policy), 1)

            # Effective principals also triggers an event when groupfinder
            # is provided.
            policy_with_group = MultiAuthenticationPolicy(policies,
                                                          lambda u, r: ['foo'])
            policy_with_group.effective_principals(request)
            self.assertEquals(len(selected_policy), 2)
예제 #2
0
    def test_policy_selected_event(self):
        from pyramid.testing import testConfig
        from pyramid_multiauth import MultiAuthPolicySelected

        policies = [TestAuthnPolicy2(), TestAuthnPolicy3()]
        policy = MultiAuthenticationPolicy(policies)
        # Simulate loading from config:
        policies[0]._pyramid_multiauth_name = "name"

        with testConfig() as config:
            request = DummyRequest()

            selected_policy = []

            def track_policy(event):
                selected_policy.append(event)

            config.add_subscriber(track_policy, MultiAuthPolicySelected)

            self.assertEquals(policy.authenticated_userid(request), "test2")

            self.assertEquals(selected_policy[0].policy, policies[0])
            self.assertEquals(selected_policy[0].policy_name, "name")
            self.assertEquals(selected_policy[0].userid, "test2")
            self.assertEquals(selected_policy[0].request, request)
            self.assertEquals(len(selected_policy), 1)

            # Effective principals also triggers an event when groupfinder
            # is provided.
            policy_with_group = MultiAuthenticationPolicy(
                policies, lambda u, r: ['foo'])
            policy_with_group.effective_principals(request)
            self.assertEquals(len(selected_policy), 2)
예제 #3
0
 def test_stacking_of_effective_principals(self):
     policies = [TestAuthnPolicy2(), TestAuthnPolicy3()]
     policy = MultiAuthenticationPolicy(policies)
     request = DummyRequest()
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test2", "test3", "test4"])
     policies.reverse()
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test2", "test3", "test4"])
     policies.append(TestAuthnPolicy1())
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test1", "test2",
                        "test3", "test4"])
예제 #4
0
 def test_stacking_of_effective_principals(self):
     policies = [TestAuthnPolicy2(), TestAuthnPolicy3()]
     policy = MultiAuthenticationPolicy(policies)
     request = DummyRequest()
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test2", "test3", "test4"])
     policies.reverse()
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test2", "test3", "test4"])
     policies.append(TestAuthnPolicy1())
     self.assertEquals(
         sorted(policy.effective_principals(request)),
         [Authenticated, Everyone, "test1", "test2", "test3", "test4"])
예제 #5
0
 def test_authenticated_userid_unauthenticated_with_groupfinder(self):
     policies = [TestAuthnPolicy2()]
     policy = MultiAuthenticationPolicy(policies, testgroupfinder)
     request = DummyRequest()
     self.assertEquals(policy.authenticated_userid(request), None)
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Everyone, 'test2'])
예제 #6
0
 def test_only_unauthenticated_userid_with_groupfinder(self):
     policies = [TestAuthnPolicyUnauthOnly()]
     policy = MultiAuthenticationPolicy(policies, testgroupfinder)
     request = DummyRequest()
     self.assertEquals(policy.unauthenticated_userid(request), "test3")
     self.assertEquals(policy.authenticated_userid(request), None)
     self.assertEquals(policy.effective_principals(request), [Everyone])
예제 #7
0
 def test_authenticated_userid_unauthenticated_with_groupfinder(self):
     policies = [TestAuthnPolicy2()]
     policy = MultiAuthenticationPolicy(policies, testgroupfinder)
     request = DummyRequest()
     self.assertEquals(policy.authenticated_userid(request), None)
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Everyone, 'test2'])
예제 #8
0
 def test_only_unauthenticated_userid_with_groupfinder(self):
     policies = [TestAuthnPolicyUnauthOnly()]
     policy = MultiAuthenticationPolicy(policies, testgroupfinder)
     request = DummyRequest()
     self.assertEquals(policy.unauthenticated_userid(request), "test3")
     self.assertEquals(policy.authenticated_userid(request), None)
     self.assertEquals(policy.effective_principals(request), [Everyone])
예제 #9
0
 def test_basic_stacking(self):
     policies = [TestAuthnPolicy1(), TestAuthnPolicy2()]
     policy = MultiAuthenticationPolicy(policies)
     request = DummyRequest()
     self.assertEquals(policy.authenticated_userid(request), "test2")
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test1", "test2"])
예제 #10
0
 def test_basic_stacking(self):
     policies = [TestAuthnPolicy1(), TestAuthnPolicy2()]
     policy = MultiAuthenticationPolicy(policies)
     request = DummyRequest()
     self.assertEquals(policy.authenticated_userid(request),
                       "test2")
     self.assertEquals(sorted(policy.effective_principals(request)),
                       [Authenticated, Everyone, "test1", "test2"])