Ignore:
Timestamp:
01/11/10 16:30:22 (10 years ago)
Author:
pjkersha
Message:

Working and tested version with functionality for adding custom attribute value types and functions.

Location:
TI12-security/trunk/ndg_xacml/ndg/xacml/test
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/__init__.py

    r7666 r7682  
    1414from ndg.xacml.core.attributevalue import (AttributeValueClassFactory,  
    1515                                           AttributeValue) 
     16from ndg.xacml.core.functions.v1.bag import BagBase 
     17from ndg.xacml.core.functions.v1.at_least_one_member_of import \ 
     18    AtLeastOneMemberOfBase  
     19     
    1620from ndg.xacml.parsers import XMLParseError 
    1721from ndg.xacml.parsers.etree import QName 
     
    4650    def value(self): 
    4751        """Override default value property to give custom result.  Also, 
    48         'value' becomes a read-only property""" 
    49         return self.group, self.value 
     52        'value' becomes a read-only property.  Making this change is critical 
     53        to the function of the GroupRoleAtLeastOneMemberOf class below - it 
     54        relies on being able to make comparison of the value attribute of  
     55        different GroupRoleAttributeValue instances.  Defined this way,  
     56        comparison is by group,role to group,role tuple 
     57        """ 
     58        return self.group, self.role 
    5059     
     60 
     61class GroupRoleBag(BagBase): 
     62    """Bag function for Group/Role custom attribute value type""" 
     63    TYPE = GroupRoleAttributeValue 
     64    FUNCTION_NS = 'urn:grouprole-bag' 
     65 
     66   
     67class GroupRoleAtLeastOneMemberOf(AtLeastOneMemberOfBase): 
     68    """At least one member of function for Group/Role custom attribute value  
     69    type""" 
     70    TYPE = GroupRoleAttributeValue 
     71    FUNCTION_NS = 'urn:grouprole-bag' 
     72 
    5173     
    5274class ETreeGroupRoleDataTypeReader(ETreeDataTypeReaderBase): 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/context/test_pdp.py

    r7666 r7682  
    3636        'http://localhost/action-and-single-subject-role-restricted' 
    3737    AT_LEAST_ONE_SUBJECT_ROLE_RESTRICTED_ID = \ 
    38         'http://localhost/at-least-of-subject-role-restricted' 
     38        'http://localhost/at-least-one-of-subject-role-restricted' 
    3939         
    4040    def setUp(self): 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/context/test_pdp_with_custom_attributevalue_types.py

    r7668 r7682  
    2020from ndg.xacml.core.attributevalue import AttributeValueClassFactory 
    2121from ndg.xacml.core.functions import functionMap 
    22 from ndg.xacml.core.functions.v1.bag import BagBase 
    23 from ndg.xacml.core.functions.v1.at_least_one_member_of import \ 
    24     AtLeastOneMemberOfBase  
    2522from ndg.xacml.core.context.request import Request 
    2623from ndg.xacml.core.context.subject import Subject 
     
    3532from ndg.xacml.test import (XACML_ESGFTEST1_FILEPATH,   
    3633                            GroupRoleAttributeValue,  
    37                             ETreeGroupRoleDataTypeReader) 
     34                            ETreeGroupRoleDataTypeReader, 
     35                            GroupRoleBag, 
     36                            GroupRoleAtLeastOneMemberOf) 
    3837from ndg.xacml.test.context import (AnyUriAttributeValue, StringAttributeValue, 
    3938                                    SUBJECT_ID) 
    4039 
    41  
     40     
    4241class XacmlEvalPdpWithCustomAttrTypes(unittest.TestCase): 
    4342    """Evaluate a policy which contains custom XACML Attribute Value Data types 
    4443    """ 
    4544    AT_LEAST_ONE_SUBJECT_ROLE_RESTRICTED_ID = \ 
    46         'http://localhost/at-least-of-subject-role-restricted'        
    47           
     45        'http://localhost/at-least-one-of-subject-role-restricted'        
     46    SUBJECT_DOES_NOT_HAVE_ANY_OF_SPECIFIED_ROLES_ID = \ 
     47        'http://localhost/subject-does-not-have-any-of-specified-roles' 
     48         
    4849    @staticmethod 
    4950    def _createRequestCtx(resourceId,  
     
    121122         
    122123        # Add extra matching and bag functions 
     124        functionMap['urn:grouprole-bag'] = GroupRoleBag 
     125        functionMap['urn:grouprole-at-least-one-member-of' 
     126                    ] = GroupRoleAtLeastOneMemberOf 
    123127         
    124128        # Example policy with custom attribute value type used with ESGF  
     
    135139            self.failIf(result.decision != Decision.PERMIT,  
    136140                        "Expecting Permit decision")     
    137              
     141                     
     142    def test02SubjectDoesNotHaveAnyOfSpecifiedRolesForResource(self): 
     143        # Test at least one member function 
     144        request = self._createRequestCtx( 
     145        self.__class__.SUBJECT_DOES_NOT_HAVE_ANY_OF_SPECIFIED_ROLES_ID, 
     146        action='write') 
     147         
     148        response = self.pdp.evaluate(request) 
     149        self.failIf(response is None, "Null response") 
     150        for result in response.results: 
     151            self.failIf(result.decision != Decision.DENY,  
     152                        "Expecting Deny decision")     
     153            
    138154             
    139155if __name__ == "__main__": 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/esgf1.xml

    r7666 r7682  
    4545                    <!-- Pattern match the request URI --> 
    4646                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match"> 
    47                         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/at-least-of-subject-role-restricted.*$</AttributeValue> 
     47                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/at-least-one-of-subject-role-restricted.*$</AttributeValue> 
    4848                        <ResourceAttributeDesignator 
    4949                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
     
    8383        </Condition> 
    8484    </Rule> 
     85    <Rule RuleId="Subject doesn't have any of specified roles" Effect="Permit"> 
     86        <!--  
     87            Example where test subject doesn't have the required roles 
     88        --> 
     89        <Target> 
     90            <Resources> 
     91                <Resource> 
     92                    <!-- Pattern match the request URI --> 
     93                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match"> 
     94                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/subject-does-not-have-any-of-specified-roles.*$</AttributeValue> 
     95                        <ResourceAttributeDesignator 
     96                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
     97                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/> 
     98                    </ResourceMatch> 
     99                </Resource> 
     100            </Resources> 
     101        </Target> 
     102         
     103        <!--  
     104            The condition narrows down the constraints layed down in the target to 
     105            something more specific 
     106             
     107            The user must have at least one of the roles set - in this 
     108            case 'staff' 
     109        --> 
     110        <Condition> 
     111            <Apply FunctionId="urn:grouprole-at-least-one-member-of"> 
     112                <SubjectAttributeDesignator  
     113                    AttributeId="urn:esg:attr" 
     114                    DataType="urn:grouprole"/> 
     115                <Apply FunctionId="urn:grouprole-bag"> 
     116                    <AttributeValue DataType="urn:grouprole"> 
     117                        <esg:groupRole> 
     118                            <esg:group>ACME</esg:group> 
     119                            <esg:role>PrincipalInvestigator</esg:role> 
     120                        </esg:groupRole> 
     121                    </AttributeValue> 
     122                    <AttributeValue DataType="urn:grouprole"> 
     123                        <esg:groupRole> 
     124                            <esg:group>Staff</esg:group> 
     125                            <esg:role>Administrator</esg:role> 
     126                        </esg:groupRole> 
     127                    </AttributeValue> 
     128                </Apply> 
     129            </Apply> 
     130        </Condition> 
     131    </Rule> 
    85132</Policy> 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/ndg1.xml

    r7445 r7682  
    131131                    <!-- Pattern match the request URI --> 
    132132                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match"> 
    133                         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/at-least-of-subject-role-restricted.*$</AttributeValue> 
     133                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/at-least-one-of-subject-role-restricted.*$</AttributeValue> 
    134134                        <ResourceAttributeDesignator 
    135135                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
  • TI12-security/trunk/ndg_xacml/ndg/xacml/test/policy/test_policy.py

    r7666 r7682  
    1717 
    1818from ndg.xacml.core.policy import Policy 
     19from ndg.xacml.core.functions import functionMap 
    1920from ndg.xacml.core.attributedesignator import SubjectAttributeDesignator 
    2021from ndg.xacml.core.attributeselector import AttributeSelector 
     
    2627from ndg.xacml.test import (XACML_NDGTEST1_FILEPATH, THIS_DIR,  
    2728                            GroupRoleAttributeValue,  
    28                             ETreeGroupRoleDataTypeReader) 
     29                            ETreeGroupRoleDataTypeReader, 
     30                            GroupRoleBag, 
     31                            GroupRoleAtLeastOneMemberOf) 
    2932                                
    3033     
     
    275278                                ETreeGroupRoleDataTypeReader) 
    276279         
     280        # Add extra matching and bag functions 
     281        functionMap['urn:grouprole-bag'] = GroupRoleBag 
     282        functionMap['urn:grouprole-at-least-one-member-of' 
     283                    ] = GroupRoleAtLeastOneMemberOf 
     284                             
    277285        PolicyReader = ReaderFactory.getReader(Policy) 
    278286        policy = PolicyReader.parse(self.__class__.XACML_ESGFTEST1_FILEPATH) 
Note: See TracChangeset for help on using the changeset viewer.