Changeset 7665


Ignore:
Timestamp:
28/10/10 14:48:06 (9 years ago)
Author:
pjkersha
Message:

Working tests refactored into policy and context sub-packages.

Location:
TI12-security/trunk/ndg_xacml/ndg/xacml
Files:
3 edited
3 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/ndg_xacml/ndg/xacml/core/context/handler.py

    r7336 r7665  
    5454 
    5555    pdp = property(_getPdp, _setPdp, None, "Policy Decision Point") 
    56          
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/__init__.py

    r7664 r7665  
    1212from os import path 
    1313 
    14 import unittest 
    15  
    1614THIS_DIR = path.dirname(__file__) 
    1715XACML_NDGTEST1_FILENAME = "ndg1.xml" 
    1816XACML_NDGTEST1_FILEPATH = path.join(THIS_DIR, XACML_NDGTEST1_FILENAME) 
    19  
    20  
    21 class XacmlContextBaseTestCase(unittest.TestCase): 
    22     """Base class containing common methods for test initialisation""" 
    2317     
    24     def _createRequestCtx(self,  
    25                           resourceId,  
    26                           includeSubject=True, 
    27                           subjectRoles=('staff',), 
    28                           roleAttributeId=ROLE_ATTRIBUTE_ID, 
    29                           action='read'): 
    30         """Create an example XACML Request Context for tests""" 
    31         request = Request() 
    32          
    33         if includeSubject: 
    34             subject = Subject() 
    35             openidSubjectAttribute = Attribute() 
    36              
    37              
    38             openidSubjectAttribute.attributeId = "urn:esg:openid" 
    39             openidSubjectAttribute.dataType = AnyUriAttributeValue.IDENTIFIER 
    40              
    41             openidSubjectAttribute.attributeValues.append( 
    42                                                         AnyUriAttributeValue()) 
    43             openidSubjectAttribute.attributeValues[-1].value = SUBJECT_ID 
    44                                          
    45              
    46             subject.attributes.append(openidSubjectAttribute) 
    47      
    48             for role in subjectRoles: 
    49                 roleAttribute = Attribute() 
    50                  
    51                 roleAttribute.attributeId = roleAttributeId 
    52                 roleAttribute.dataType = StringAttributeValue.IDENTIFIER 
    53                  
    54                 roleAttribute.attributeValues.append(StringAttributeValue()) 
    55                 roleAttribute.attributeValues[-1].value = role  
    56              
    57                 subject.attributes.append(roleAttribute) 
    58                                        
    59             request.subjects.append(subject) 
    60          
    61         resource = Resource() 
    62         resourceAttribute = Attribute() 
    63         resource.attributes.append(resourceAttribute) 
    64          
    65         resourceAttribute.attributeId = Identifiers.Resource.RESOURCE_ID 
    66                              
    67         resourceAttribute.dataType = AnyUriAttributeValue.IDENTIFIER 
    68         resourceAttribute.attributeValues.append(AnyUriAttributeValue()) 
    69         resourceAttribute.attributeValues[-1].value = resourceId 
    70  
    71         request.resources.append(resource) 
    72          
    73         request.action = Action() 
    74         actionAttribute = Attribute() 
    75         request.action.attributes.append(actionAttribute) 
    76          
    77         actionAttribute.attributeId = Identifiers.Action.ACTION_ID 
    78         actionAttribute.dataType = StringAttributeValue.IDENTIFIER 
    79         actionAttribute.attributeValues.append(StringAttributeValue()) 
    80         actionAttribute.attributeValues[-1].value = action 
    81          
    82         return request 
    83          
    84     def _createPDPfromNdgTest1Policy(self): 
    85         pdp = PDP.fromPolicySource(XACML_NDGTEST1_FILEPATH, ReaderFactory) 
    86         return pdp 
    87      
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/context/__init__.py

    r7664 r7665  
    1111__contact__ = "Philip.Kershaw@stfc.ac.uk" 
    1212__revision__ = "$Id$" 
     13import unittest 
     14from os import path 
     15 
     16from ndg.xacml.core import Identifiers 
     17from ndg.xacml.core.attribute import Attribute 
     18from ndg.xacml.core.attributevalue import (AttributeValue,  
     19                                           AttributeValueClassFactory) 
     20 
     21from ndg.xacml.core.context.request import Request 
     22from ndg.xacml.core.context.subject import Subject 
     23from ndg.xacml.core.context.resource import Resource 
     24from ndg.xacml.core.context.action import Action 
     25from ndg.xacml.core.context.pdp import PDP 
     26from ndg.xacml.core.context.handler import CtxHandlerBase 
     27from ndg.xacml.parsers.etree.factory import ReaderFactory 
     28 
     29from ndg.xacml.test import XACML_NDGTEST1_FILEPATH 
     30  
     31ROLE_ATTRIBUTE_ID = "urn:ndg:security:authz:1.0:attr" 
     32SUBJECT_ID = 'https://my.name.somewhere.ac.uk' 
     33 
     34attributeValueFactory = AttributeValueClassFactory() 
     35AnyUriAttributeValue = attributeValueFactory(AttributeValue.ANY_TYPE_URI) 
     36StringAttributeValue = attributeValueFactory(AttributeValue.STRING_TYPE_URI) 
     37 
     38 
     39class TestContextHandler(CtxHandlerBase): 
     40    """Test implementation of Context Handler which includes an implemented PIP 
     41    interface""" 
     42     
     43    def __init__(self): 
     44        """Add an attribute to hold a reference to a policy information point""" 
     45         
     46        super(TestContextHandler, self).__init__() 
     47         
     48    def handlePEPRequest(self, myRequest): 
     49        """Handle request from Policy Enforcement Point 
     50         
     51        @param pepRequest: request from PEP, derived class determines its type 
     52        e.g. SAML AuthzDecisionQuery 
     53        @type myRequest: type 
     54        @return: PEP response - derived class determines type 
     55        @rtype: None 
     56        """ 
     57         
     58        # Convert myRequest to XACML context request - var assignment here is  
     59        # representative of this process rather than actually doing anything. 
     60        xacmlRequest = myRequest 
     61         
     62        if self.pdp is None: 
     63            raise TypeError('No "pdp" attribute set') 
     64         
     65        # Add a reference to this context so that the PDP can invoke queries 
     66        # back to the PIP 
     67        xacmlRequest.ctxHandler = self  
     68                
     69        xacmlResponse = self.pdp.evaluate(xacmlRequest) 
     70         
     71        # Convert XACML context response to domain specific request 
     72        myResponse = xacmlResponse 
     73         
     74        return myResponse 
     75     
     76    def pipQuery(self, request, designator): 
     77        '''PIP adds admin attribute value for given attribute ID and for any  
     78        subject''' 
     79        if designator.attributeId == ROLE_ATTRIBUTE_ID: 
     80            attrVal = StringAttributeValue(value='admin') 
     81            return [attrVal] 
     82        else: 
     83            return None  
     84         
     85         
     86class XacmlContextBaseTestCase(unittest.TestCase): 
     87    """Base class containing common methods for test initialisation""" 
     88     
     89    @staticmethod 
     90    def _createRequestCtx(resourceId,  
     91                          includeSubject=True, 
     92                          subjectRoles=('staff',), 
     93                          roleAttributeId=ROLE_ATTRIBUTE_ID, 
     94                          action='read'): 
     95        """Create an example XACML Request Context for tests""" 
     96        request = Request() 
     97         
     98        if includeSubject: 
     99            subject = Subject() 
     100            openidSubjectAttribute = Attribute() 
     101             
     102            openidSubjectAttribute.attributeId = "urn:esg:openid" 
     103            openidSubjectAttribute.dataType = AnyUriAttributeValue.IDENTIFIER 
     104             
     105            openidSubjectAttribute.attributeValues.append( 
     106                                                        AnyUriAttributeValue()) 
     107            openidSubjectAttribute.attributeValues[-1].value = SUBJECT_ID 
     108                                         
     109             
     110            subject.attributes.append(openidSubjectAttribute) 
     111     
     112            for role in subjectRoles: 
     113                roleAttribute = Attribute() 
     114                 
     115                roleAttribute.attributeId = roleAttributeId 
     116                roleAttribute.dataType = StringAttributeValue.IDENTIFIER 
     117                 
     118                roleAttribute.attributeValues.append(StringAttributeValue()) 
     119                roleAttribute.attributeValues[-1].value = role  
     120             
     121                subject.attributes.append(roleAttribute) 
     122                                       
     123            request.subjects.append(subject) 
     124         
     125        resource = Resource() 
     126        resourceAttribute = Attribute() 
     127        resource.attributes.append(resourceAttribute) 
     128         
     129        resourceAttribute.attributeId = Identifiers.Resource.RESOURCE_ID 
     130                             
     131        resourceAttribute.dataType = AnyUriAttributeValue.IDENTIFIER 
     132        resourceAttribute.attributeValues.append(AnyUriAttributeValue()) 
     133        resourceAttribute.attributeValues[-1].value = resourceId 
     134 
     135        request.resources.append(resource) 
     136         
     137        request.action = Action() 
     138        actionAttribute = Attribute() 
     139        request.action.attributes.append(actionAttribute) 
     140         
     141        actionAttribute.attributeId = Identifiers.Action.ACTION_ID 
     142        actionAttribute.dataType = StringAttributeValue.IDENTIFIER 
     143        actionAttribute.attributeValues.append(StringAttributeValue()) 
     144        actionAttribute.attributeValues[-1].value = action 
     145         
     146        return request 
     147         
     148    @staticmethod 
     149    def _createPDPfromNdgTest1Policy(): 
     150        """Create PDP from NDG test policy file""" 
     151        pdp = PDP.fromPolicySource(XACML_NDGTEST1_FILEPATH, ReaderFactory) 
     152        return pdp 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/context/test_context.py

    r7664 r7665  
    1212__revision__ = "$Id$" 
    1313import unittest 
    14 from os import path 
    1514import logging 
    1615logging.basicConfig(level=logging.DEBUG) 
    1716 
    18 from ndg.xacml.test import XACML_NDGTEST1_FILEPATH 
    19 from ndg.xacml.parsers.etree.factory import ReaderFactory 
    20 from ndg.xacml.core import Identifiers 
    2117from ndg.xacml.core.context.pdpinterface import PDPInterface 
    2218from ndg.xacml.core.context.pdp import PDP 
    2319from ndg.xacml.core.context.handler import CtxHandlerInterface 
    24 from ndg.xacml.core.attribute import Attribute 
    25 from ndg.xacml.core.attributevalue import (AttributeValue,  
    26                                            AttributeValueClassFactory) 
    27 from ndg.xacml.core.context.request import Request 
    2820from ndg.xacml.core.context.response import Response 
    2921from ndg.xacml.core.context.result import Result, Decision 
    30 from ndg.xacml.core.context.subject import Subject 
    31 from ndg.xacml.core.context.resource import Resource 
    32 from ndg.xacml.core.context.action import Action 
    33  
    34 attributeValueFactory = AttributeValueClassFactory() 
    35 AnyUriAttributeValue = attributeValueFactory(AttributeValue.ANY_TYPE_URI) 
    36 StringAttributeValue = attributeValueFactory(AttributeValue.STRING_TYPE_URI) 
    37  
    38 ROLE_ATTRIBUTE_ID = "urn:ndg:security:authz:1.0:attr" 
    39 SUBJECT_ID = 'https://my.name.somewhere.ac.uk' 
    40  
    41  
    42 class TestContextHandler(CtxHandlerInterface): 
    43     """Test implementation of Context Handler which includes an implemented PIP 
    44     interface""" 
    45      
    46     def __init__(self): 
    47         """Add an attribute to hold a reference to a policy information point""" 
    48          
    49         super(TestContextHandler, self).__init__() 
    50         self.pip = None         
    51          
    52     def handlePEPRequest(self, myRequest): 
    53         """Handle request from Policy Enforcement Point 
    54          
    55         @param pepRequest: request from PEP, derived class determines its type 
    56         e.g. SAML AuthzDecisionQuery 
    57         @type myRequest: type 
    58         @return: PEP response - derived class determines type 
    59         @rtype: None 
    60         """ 
    61          
    62         # Convert myRequest to XACML context request - var assignment here is  
    63         # representative of this process rather than actually doing anything. 
    64         xacmlRequest = myRequest 
    65          
    66         if self.pdp is None: 
    67             raise TypeError('No "pdp" attribute set') 
    68          
    69         # Add a reference to this context so that the PDP can invoke queries 
    70         # back to the PIP 
    71         xacmlRequest.ctxHandler = self  
    72                 
    73         xacmlResponse = self.pdp.evaluate(xacmlRequest) 
    74          
    75         # Convert XACML context response to domain specific request 
    76         myResponse = xacmlResponse 
    77          
    78         return myResponse 
    79      
    80     def pipQuery(self, request, designator): 
    81         '''PIP adds admin attribute value for given attribute ID and for any  
    82         subject''' 
    83         if designator.attributeId == ROLE_ATTRIBUTE_ID: 
    84             attrVal = StringAttributeValue(value='admin') 
    85             return [attrVal] 
    86         else: 
    87             return None     
     22from ndg.xacml.test.context import XacmlContextBaseTestCase, TestContextHandler   
    8823 
    8924 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/context/test_pdp.py

    r7664 r7665  
    55''' 
    66import unittest 
     7 
     8from ndg.xacml.core.context.result import Decision 
     9from ndg.xacml.test.context import XacmlContextBaseTestCase, TestContextHandler 
    710 
    811     
Note: See TracChangeset for help on using the changeset viewer.