Ignore:
Timestamp:
24/11/09 14:14:53 (10 years ago)
Author:
pjkersha
Message:

Unit tested MSI PDP with per attribute entry attribute authority addresses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg_security_test/ndg/security/test/unit/authz/msi/test_msi.py

    r6022 r6043  
    1111from os import path 
    1212from ndg.security.test.unit import BaseTestCase 
    13 from ndg.security.common.authz.msi import Policy 
     13from ndg.security.common.authz.msi import (Policy, PDP, PIPBase, Subject, 
     14                                           Request, Resource, Response, 
     15                                           PIPAttributeQuery, 
     16                                           PIPAttributeResponse) 
    1417 
    15  
    16 class PolicyTestCase(BaseTestCase): 
     18class MsiBaseTestCase(BaseTestCase): 
     19    """Base class for passing common class variables between unit test classes 
     20    in this module""" 
    1721    THIS_DIR = path.dirname(__file__) 
    18     POLICY_1_0_FILENAME = 'policy-1.0.xml' 
    19     POLICY_1_0_FILEPATH = path.join(THIS_DIR, POLICY_1_0_FILENAME) 
    2022    POLICY_1_1_FILENAME = 'policy-1.1.xml' 
    2123    POLICY_1_1_FILEPATH = path.join(THIS_DIR, POLICY_1_1_FILENAME) 
     24     
     25     
     26class PolicyTestCase(MsiBaseTestCase): 
     27    """Unit tests for the MSI Policy""" 
     28    POLICY_1_0_FILENAME = 'policy-1.0.xml' 
     29    POLICY_1_0_FILEPATH = path.join(MsiBaseTestCase.THIS_DIR,  
     30                                    POLICY_1_0_FILENAME) 
    2231    ATTRIBUTE_AUTHORITY_URI = 'http://localhost:7443/AttributeAuthority' 
    2332     
     
    3645                       PolicyTestCase.ATTRIBUTE_AUTHORITY_URI) 
    3746         
    38     def test01ParseVersion1_1PolicyFile(self): 
     47    def test02ParseVersion1_1PolicyFile(self): 
    3948        policy = Policy.Parse(PolicyTestCase.POLICY_1_1_FILEPATH) 
    4049         
     
    4857                assert(attribute.name) 
    4958                assert(attribute.attributeAuthorityURI) 
     59 
     60 
     61class PIPPlaceholder(PIPBase): 
     62    """Policy Information Point for Testing the PDP""" 
     63    def __init__(self): 
     64        pass 
     65     
     66    def attributeQuery(self, attributeQuery): 
     67        subject = attributeQuery[PIPAttributeQuery.SUBJECT_NS] 
     68        username = subject[Subject.USERID_NS] 
     69         
     70        attributeResponse = PIPAttributeResponse() 
     71         
     72        if username == BaseTestCase.OPENID_URI: 
     73            attributeResponse[Subject.ROLES_NS] = BaseTestCase.ATTRIBUTE_VALUES 
     74             
     75        return attributeResponse 
     76 
     77     
     78class PDPTestCase(MsiBaseTestCase): 
     79    """Unit tests for the Policy Decision Point""" 
     80    PERMITTED_RESOURCE_URI = '/test_securedURI' 
     81    DENIED_RESOURCE_URI = '/test_accessDeniedToSecuredURI' 
     82     
     83    def setUp(self): 
     84        pip = PIPPlaceholder() 
     85        policy = Policy.Parse(PDPTestCase.POLICY_1_1_FILEPATH) 
     86        self.pdp = PDP(policy, pip) 
     87         
     88        # Make a request object to pass to the PDP 
     89        self.request = Request() 
     90        self.request.subject[Subject.USERID_NS] = PDPTestCase.OPENID_URI 
     91     
     92    def test01AccessPermitted(self): 
     93        self.request.resource[Resource.URI_NS 
     94                              ] = PDPTestCase.PERMITTED_RESOURCE_URI 
     95        response = self.pdp.evaluate(self.request) 
     96         
     97        self.assert_(response.status == Response.DECISION_PERMIT) 
     98 
     99    def test02AccessDenied(self): 
     100        self.request.resource[Resource.URI_NS] = PDPTestCase.DENIED_RESOURCE_URI       
     101        response = self.pdp.evaluate(self.request) 
     102         
     103        self.assert_(response.status == Response.DECISION_DENY) 
     104 
     105         
     106if __name__ == "__main__": 
     107    import unittest 
     108    unittest.main() 
Note: See TracChangeset for help on using the changeset viewer.