Ignore:
Timestamp:
22/02/10 12:12:42 (11 years ago)
Author:
pjkersha
Message:
  • Enabling pickling by adding getstate and setstate methods
  • fixes for correct inheritance from SAMLObject
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/ndg_security_saml/saml/test/test_saml.py

    r6559 r6602  
    1717 
    1818import unittest 
     19import pickle 
    1920 
    2021from xml.etree.ElementTree import iselement 
     
    4344    UNCORRECTED_RESOURCE_URI = "http://LOCALHOST:80/My Secured URI" 
    4445    RESOURCE_URI = "http://localhost/My%20Secured%20URI" 
     46    XSSTRING_NS = "http://www.w3.org/2001/XMLSchema#string" 
    4547     
    4648    def __init__(self): 
     
    117119            fnAttribute = Attribute() 
    118120            fnAttribute.name = "urn:esg:first:name" 
    119             fnAttribute.nameFormat = "http://www.w3.org/2001/XMLSchema#string" 
     121            fnAttribute.nameFormat = SAMLUtil.XSSTRING_NS 
    120122            fnAttribute.friendlyName = "FirstName" 
    121123 
     
    131133            lnAttribute = Attribute() 
    132134            lnAttribute.name = "urn:esg:last:name" 
    133             lnAttribute.nameFormat = "http://www.w3.org/2001/XMLSchema#string" 
     135            lnAttribute.nameFormat = SAMLUtil.XSSTRING_NS 
    134136            lnAttribute.friendlyName = "LastName" 
    135137 
     
    158160            attribute = Attribute() 
    159161            attribute.name = name 
    160             attribute.nameFormat = "http://www.w3.org/2001/XMLSchema#string" 
     162            attribute.nameFormat = SAMLUtil.XSSTRING_NS 
    161163 
    162164            stringAttributeValue = XSStringAttributeValue() 
     
    286288                                                      SAMLTestCase.NAMEID_VALUE) 
    287289         
    288         elem = AttributeQueryElementTree.toXML(attributeQuery)         
     290        elem = AttributeQueryElementTree.toXML(attributeQuery) 
    289291        xmlOutput = prettyPrint(elem) 
    290292            
     
    327329        print("_"*80) 
    328330 
    329     def test05CreateAttributeQueryResponse(self): 
     331    def _createAttributeQueryResponse(self): 
    330332        response = Response() 
    331333        response.issueInstant = datetime.utcnow() 
     
    365367 
    366368        response.assertions.append(assertion) 
     369         
     370        return response 
     371         
     372    def test05CreateAttributeQueryResponse(self): 
     373        response = self._createAttributeQueryResponse() 
    367374         
    368375        # Create ElementTree Assertion Element 
     
    600607            ].actions[-1].value == Action.HTTP_GET_ACTION) 
    601608         
    602         
     609  
     610    def test12PickleAssertion(self): 
     611        # Test pickling with __slots__ 
     612        assertion = self._createAttributeAssertionHelper() 
     613        assertion.issuer = Issuer() 
     614        assertion.issuer.format = Issuer.X509_SUBJECT 
     615        assertion.issuer.value = SAMLTestCase.ISSUER_DN 
     616         
     617        jar = pickle.dumps(assertion) 
     618        assertion2 = pickle.loads(jar) 
     619        self.assert_(isinstance(assertion2, Assertion)) 
     620        self.assert_(assertion2.issuer.value == assertion.issuer.value) 
     621        self.assert_(assertion2.issuer.format == assertion.issuer.format) 
     622        self.assert_(len(assertion2.attributeStatements)==1) 
     623        self.assert_(len(assertion2.attributeStatements[0].attributes) > 0) 
     624        self.assert_(assertion2.attributeStatements[0].attributes[0 
     625                     ].attributeValues[0 
     626                     ].value == assertion.attributeStatements[0].attributes[0 
     627                                ].attributeValues[0].value) 
     628         
     629    def test13PickleAttributeQuery(self): 
     630        # Test pickling with __slots__ 
     631        samlUtil = SAMLUtil() 
     632        samlUtil.firstName = '' 
     633        samlUtil.lastName = '' 
     634        samlUtil.emailAddress = '' 
     635        query = samlUtil.buildAttributeQuery(SAMLTestCase.ISSUER_DN, 
     636                                             SAMLTestCase.NAMEID_VALUE) 
     637         
     638        jar = pickle.dumps(query) 
     639        query2 = pickle.loads(jar) 
     640 
     641        self.assert_(isinstance(query2, AttributeQuery)) 
     642        self.assert_(query2.subject.nameID.value == query.subject.nameID.value) 
     643        self.assert_((query2.subject.nameID.format ==  
     644                      query.subject.nameID.format)) 
     645        self.assert_(query2.issuer.value == query.issuer.value) 
     646        self.assert_(query2.issuer.format == query.issuer.format) 
     647        self.assert_(query2.issueInstant == query.issueInstant) 
     648        self.assert_(query2.id == query.id) 
     649        self.assert_(len(query2.attributes) == 3) 
     650        self.assert_(query2.attributes[0].name == "urn:esg:first:name") 
     651        self.assert_(query2.attributes[1].nameFormat == SAMLUtil.XSSTRING_NS) 
     652 
     653    def test14PickleAttributeQueryResponse(self): 
     654        response = self._createAttributeQueryResponse() 
     655         
     656        jar = pickle.dumps(response) 
     657        response2 = pickle.loads(jar) 
     658         
     659        self.assert_(isinstance(response2, Response)) 
     660        self.assert_((response2.status.statusCode.value ==  
     661                      response.status.statusCode.value)) 
     662        self.assert_((response2.status.statusMessage.value ==  
     663                      response.status.statusMessage.value)) 
     664        self.assert_(len(response2.assertions) == 1) 
     665        self.assert_(response2.assertions[0].id == response.assertions[0].id) 
     666        self.assert_((response2.assertions[0].conditions.notBefore ==  
     667                      response.assertions[0].conditions.notBefore)) 
     668        self.assert_((response2.assertions[0].conditions.notOnOrAfter ==  
     669                      response.assertions[0].conditions.notOnOrAfter)) 
     670        self.assert_(len(response2.assertions[0].attributeStatements) == 1) 
     671        self.assert_(len(response2.assertions[0].attributeStatements[0 
     672                                                            ].attributes) == 9) 
     673        self.assert_(response2.assertions[0].attributeStatements[0].attributes[1 
     674                     ].attributeValues[0 
     675                     ].value == response.assertions[0].attributeStatements[0 
     676                                    ].attributes[1].attributeValues[0].value) 
     677              
     678              
    603679if __name__ == "__main__": 
    604680    unittest.main()         
Note: See TracChangeset for help on using the changeset viewer.