Changeset 5513


Ignore:
Timestamp:
24/07/09 11:49:34 (10 years ago)
Author:
pjkersha
Message:

Split SAML unit tests into separate ones for SAML and SAML Attribute Authority interface.

Location:
TI12-security/trunk/python
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/saml/xml/etree.py

    r5510 r5513  
    5757        xml = self.serialize() 
    5858        xml = ">\n".join(xml.split(">")) 
    59         xml = "\n</".join(xml.split("<")) 
     59        xml = "\n<".join(xml.split("<")) 
    6060        xml = '\n'.join(xml.split('\n\n')) 
    6161        return xml 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/unit/attributeauthority/saml/test_samlinterface.py

    r5510 r5513  
    3737 
    3838class SamlAttributeAuthorityInterfaceTestCase(BaseTestCase): 
     39    """TODO: test SAML Attribute Authority interface""" 
    3940    thisDir = os.path.dirname(os.path.abspath(__file__)) 
    4041     
    4142    def test01(self): 
    42         samlUtil = SamlUtil() 
    43          
    44         # ESG core attributes 
    45         samlUtil.firstName = "Philip" 
    46         samlUtil.lastName = "Kershaw" 
    47         samlUtil.emailAddress = "p.j.k@somewhere" 
    48          
    49         # BADC specific attributes 
    50         badcRoleList = ( 
    51             'urn:badc:security:authz:1.0:attr:rapid',  
    52             'urn:badc:security:authz:1.0:attr:coapec',  
    53             'urn:badc:security:authz:1.0:attr:midas',  
    54             'urn:badc:security:authz:1.0:attr:quest',  
    55             'urn:badc:security:authz:1.0:attr:staff' 
    56         ) 
    57         for role in badcRoleList: 
    58             samlUtil.addAttribute("urn:badc:security:authz:1.0:attr", role) 
    59          
    60         # ESG Group/Role type list 
    61         esgGroupRoleList = ( 
    62             ("ESG-NCAR", "admin"), 
    63             ("ESG-PCMDI", "testUser"), 
    64         ) 
    65         for group, role in esgGroupRoleList: 
    66             samlUtil.addGroupRole(group, role) 
    67          
    68         # Make an assertion object 
    69         assertion = samlUtil.buildAssertion() 
    70          
    71         # Create XML rendering class using the ElementTree implementation 
    72         assertionETreeObject = AssertionETreeObject() 
    73          
    74         # Add mapping for ESG Group/Role Attribute Value to enable ElementTree 
    75         # Attribute Value factory to render the XML output 
    76         attributeValueETreeObjectClassMap = { 
    77             XSGroupRoleAttributeValue: XSGroupRoleAttributeValueETreeObject            
    78         } 
    79          
    80         # Create ElementTree Assertion Element 
    81         assertionElem = assertionETreeObject.create(assertion, 
    82                             customClassMap=attributeValueETreeObjectClassMap) 
    83          
    84         # Serialise to output 
    85         print(assertionETreeObject.prettyPrint()) 
    86  
    87  
    88 class SamlUtil(object): 
    89     def __init__(self): 
    90         self.__initialized = False 
    91      
    92         self.firstName = None 
    93         self.lastName = None 
    94         self.emailAddress = None 
    95          
    96         self.__groupRoleList = [] 
    97         self.__miscAttrList = [] 
    98  
    99     def addGroupRole(self, group, role): 
    100         self.__groupRoleList.append((group, role)) 
    101      
    102     def addAttribute(self, name, value): 
    103         self.__miscAttrList.append((name, value)) 
    104  
    105     def buildAssertion(self): 
    106      
    107         assertion = Assertion() 
    108         assertion.version = SAMLVersion(SAMLVersion.VERSION_20) 
    109         assertion.id = str(uuid4()) 
    110         assertion.issueInstant = datetime.utcnow() 
    111  
    112         attributeStatement = AttributeStatement() 
    113  
    114         if self.firstName is not None:     
    115             # special case handling for 'FirstName' attribute 
    116             fnAttribute = Attribute() 
    117             fnAttribute.name = "urn:esg:first:name" 
    118             fnAttribute.nameFormat = "http://www.w3.org/2001/XMLSchema#string" 
    119             fnAttribute.friendlyName = "FirstName" 
    120  
    121             firstName = XSStringAttributeValue() 
    122             firstName.value = self.firstName 
    123             fnAttribute.attributeValues.append(firstName) 
    124  
    125             attributeStatement.attributes.append(fnAttribute) 
    126          
    127  
    128         if self.lastName is not None: 
    129             # special case handling for 'LastName' attribute 
    130             lnAttribute = Attribute() 
    131             lnAttribute.name = "urn:esg:last:name" 
    132             lnAttribute.nameFormat = "http://www.w3.org/2001/XMLSchema#string" 
    133             lnAttribute.friendlyName = "LastName" 
    134  
    135             lastName = XSStringAttributeValue() 
    136             lastName.value = self.lastName 
    137             lnAttribute.attributeValues.append(lastName) 
    138  
    139             attributeStatement.attributes.append(lnAttribute) 
    140          
    141  
    142         if self.emailAddress is not None: 
    143             # special case handling for 'LastName' attribute 
    144             emailAddressAttribute = Attribute() 
    145             emailAddressAttribute.name = "urn:esg:email:address" 
    146             emailAddressAttribute.nameFormat = XMLConstants.XSD_NS+"#"+\ 
    147                                         XSStringAttributeValue.TYPE_LOCAL_NAME 
    148             emailAddressAttribute.friendlyName = "emailAddress" 
    149  
    150             emailAddress = XSStringAttributeValue() 
    151             emailAddress.value = self.emailAddress 
    152             emailAddressAttribute.attributeValues.append(emailAddress) 
    153  
    154             attributeStatement.attributes.append(emailAddressAttribute) 
    155          
    156         if len(self.__groupRoleList) > 0: 
    157             # custom group/role attribute to be added to attr statement 
    158             groupRoleAttribute = Attribute() 
    159             groupRoleAttribute.name = "GroupRole" 
    160             groupRoleAttribute.nameFormat = \ 
    161                                     XSGroupRoleAttributeValue.TYPE_LOCAL_NAME 
    162  
    163             for group, role in self.__groupRoleList: 
    164                 groupRole = XSGroupRoleAttributeValue() 
    165                 groupRole.group = group 
    166                 groupRole.role = role 
    167  
    168                 groupRoleAttribute.attributeValues.append(groupRole) 
    169              
    170             attributeStatement.attributes.append(groupRoleAttribute) 
    171          
    172         for name, value in self.__miscAttrList: 
    173             attribute = Attribute() 
    174             attribute.name = name 
    175             attribute.nameFormat="http://www.w3.org/2001/XMLSchema#string" 
    176  
    177             stringAttributeValue = XSStringAttributeValue() 
    178             stringAttributeValue.value = value 
    179             attribute.attributeValues.append(stringAttributeValue) 
    180  
    181             # add all attributes to the attribute statement                                                                                                    
    182             attributeStatement.attributes.append(attribute) 
    183              
    184         assertion.attributeStatements.append(attributeStatement) 
    185         return assertion 
     43        pass 
    18644     
    18745 
     46if __name__ == "__main__": 
     47    unittest.main()         
     48 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/unit/saml/__init__.py

    r4840 r5513  
    22Assertion implementation 
    33 
    4 NERC Data Grid Project 
     4NERC DataGrid Project 
    55""" 
    66__author__ = "P J Kershaw" 
Note: See TracChangeset for help on using the changeset viewer.