Ignore:
Timestamp:
25/03/10 08:27:00 (10 years ago)
Author:
pjkersha
Message:

Added request subject, resource, action and environment types

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDG_XACML/ndg/xacml/test/test_xacml.py

    r6770 r6771  
    2020from ndg.xacml.parsers.etree.factory import ReaderFactory 
    2121 
     22from ndg.xacml.core.attribute import Attribute 
    2223from ndg.xacml.core.context.request import Request 
    23 from ndg.xacml.core.subject import Subject 
    24 from ndg.xacml.core.resource import Resource 
    25 from ndg.xacml.core.action import Action 
     24from ndg.xacml.core.context.response import Response 
     25from ndg.xacml.core.context.result import Result, Decision 
     26from ndg.xacml.core.context.subject import Subject 
     27from ndg.xacml.core.context.resource import Resource 
     28from ndg.xacml.core.context.action import Action 
    2629 
    2730THIS_DIR = path.dirname(__file__) 
     
    4245    def test01ETreeParseRule1Policy(self): 
    4346        PolicyReader = ReaderFactory.getReader(Policy) 
    44         policy = PolicyReader.parse(XACMLTestCase.XACML_TEST1_FILEPATH) 
     47        policy = PolicyReader.parse(XACMLPolicyTestCase.XACML_TEST1_FILEPATH) 
    4548        self.assert_(policy) 
    4649         
     
    9194    def test02ETreeParseRule2Policy(self): 
    9295        PolicyReader = ReaderFactory.getReader(Policy) 
    93         policy = PolicyReader.parse(XACMLTestCase.XACML_TEST2_FILEPATH) 
     96        policy = PolicyReader.parse(XACMLPolicyTestCase.XACML_TEST2_FILEPATH) 
    9497        self.assert_(policy) 
    9598         
     
    244247         
    245248        try: 
    246             policy = PolicyReader.parse(XACMLTestCase.XACML_TEST3_FILEPATH) 
     249            policy = PolicyReader.parse(XACMLPolicyTestCase.XACML_TEST3_FILEPATH) 
    247250            self.assert_(policy) 
    248251        except NotImplementedError, e: 
     
    251254    def test04ETreeParseRule4Policy(self): 
    252255        PolicyReader = ReaderFactory.getReader(Policy) 
    253         policy = PolicyReader.parse(XACMLTestCase.XACML_TEST4_FILEPATH) 
     256        policy = PolicyReader.parse(XACMLPolicyTestCase.XACML_TEST4_FILEPATH) 
    254257        self.assert_(policy) 
    255258                     
     
    258261        # resources for NDG 
    259262        PolicyReader = ReaderFactory.getReader(Policy) 
    260         policy = PolicyReader.parse(XACMLTestCase.XACML_NDGTEST1_FILEPATH) 
     263        policy = PolicyReader.parse(XACMLPolicyTestCase.XACML_NDGTEST1_FILEPATH) 
    261264        self.assert_(policy) 
    262  
     265         
     266         
     267class MyPDP(PDPInterface): 
     268     
     269    def __init__(self): 
     270        self.policy = None 
     271         
     272    @classmethod 
     273    def fromPolicy(cls, source): 
     274        pdp = cls() 
     275        self.policy = ReaderFactory.getReader(Policy).parse(source) 
     276         
     277    def evaluate(self, request): 
     278        response = Response 
     279        result = Result() 
     280        response.results.append(result) 
     281        result.decision = Decision.INDETERMINATE 
     282         
     283        # Check policy target for match 
     284        if not self.matchTarget(self.policy.target, request): 
     285            result.decision = Decision.NOT_APPLICABLE 
     286            return response 
     287         
     288        # Check rules 
     289        for rule in self.policy.rules: 
     290            if not self.matchTarget(rule.target, request): 
     291                continue 
     292             
     293        return response 
     294     
     295    def matchTarget(self, target, request): 
     296        if target is None: 
     297            return False 
     298         
     299        for targetSubject in target.subjects: 
     300            for requestSubject in request.subjects: 
     301                if subject. 
     302                 
     303class TestContextHandler(AbstractContextHandler): 
     304    """Test implementation of Context Handler""" 
     305     
     306    def __init__(self): 
     307        super(TestContextHandler, self).__init__() 
     308        self.pip = None         
     309         
     310    def handlePEPRequest(self, myRequest): 
     311         
     312        # Convert myRequest to XACML context request 
     313        request = myRequest 
     314         
     315        if self.pdp is None: 
     316            raise TypeError('No "pdp" attribute set') 
     317         
     318        response = self.pdp.evaluate(request) 
     319         
     320        # Convert XACML context response to domain specific request 
     321        myResponse = response 
     322         
     323        return myResponse 
     324     
    263325 
    264326class XACMLContextTestCase(unittest.TestCase): 
    265327    """Test PDP, PAP, PIP and Context handler""" 
    266328     
    267     def test01(self): 
     329    def test01CreateRequest(self): 
    268330        request = Request() 
    269331         
    270332        subject = Subject() 
    271         subject. 
     333        subjectAttribute = Attribute() 
     334        subject.attributes.append(subjectAttribute) 
     335        subjectAttribute.attributeId = \ 
     336                            "urn:oasis:names:tc:xacml:1.0:subject:subject-id" 
     337        subjectAttribute.dataType = \ 
     338                            "urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name" 
     339        subjectAttribute.attributeValue = 'bs@simpsons.com' 
     340         
    272341        request.subjects.append(subject) 
    273  
    274         request.resources.append(Resource()) 
     342         
     343        resource = Resource() 
     344        resourceAttribute = Attribute() 
     345        resource.attributes.append(resourceAttribute) 
     346         
     347        resourceAttribute.attributeId = \ 
     348                            "urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
     349                             
     350        resourceAttribute.dataType = "http://www.w3.org/2001/XMLSchema#anyURI" 
     351        resourceAttribute.attributeValue = \ 
     352                            'file://example/med/record/patient/BartSimpson' 
     353 
     354        request.resources.append(resource) 
     355         
    275356        request.action = Action() 
     357        actionAttribute = Attribute() 
     358        request.action.append(actionAttribute) 
     359         
     360        requestAttribute.attributeId = \ 
     361                                "urn:oasis:names:tc:xacml:1.0:action:action-id" 
     362        requestAttribute.dataType = "http://www.w3.org/2001/XMLSchema#string" 
     363        requestAttribute.attributeValue = 'read' 
     364         
     365    def test02CreateResponse(self): 
     366        response = Response() 
     367        result = Result() 
     368        response.results.append(result) 
     369        result.decision = Decision.value = Decision.NOT_APPLICABLE 
     370         
     371    def test03CreateContextHandler(self): 
     372 
    276373         
    277374 
Note: See TracChangeset for help on using the changeset viewer.