Changeset 6559


Ignore:
Timestamp:
12/02/10 11:42:38 (9 years ago)
Author:
pjkersha
Message:

Working deserialized Response with AuthzDecisionStatement? in unit tests.

Location:
TI12-security/trunk/ndg_security_saml/saml
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/ndg_security_saml/saml/saml2/core.py

    r6558 r6559  
    345345 
    346346    def _setValue(self, value): 
    347         if not isinstance(value, basestring): 
    348             raise TypeError('Expecting string type for "value" attribute; got ' 
    349                             '%r instead' % type(value)) 
    350              
    351         if value not in DecisionType.TYPES: 
    352             raise AttributeError('Permissable decision types are %r; got %r ' 
    353                                  'instead' % (DecisionType.TYPES, value)) 
     347        if isinstance(value, DecisionType): 
     348            # Cast to string 
     349            value = str(value) 
     350             
     351        elif not isinstance(value, basestring): 
     352            raise TypeError('Expecting string or DecisionType instance for ' 
     353                            '"value" attribute; got %r instead' % type(value)) 
     354             
     355        if value not in self.__class__.TYPES: 
     356            raise AttributeError('Permissable decision types are %r; got ' 
     357                                 '%r instead' % (DecisionType.TYPES, value)) 
    354358        self.__value = value 
    355359         
  • TI12-security/trunk/ndg_security_saml/saml/test/test_saml.py

    r6558 r6559  
    487487 
    488488 
    489     def test09CreateAuthzDecisionQueryResponse(self): 
     489    def _createAuthzDecisionQueryResponse(self): 
     490        """Helper method for Authz Decision Response""" 
    490491        response = Response() 
    491492        now = datetime.utcnow() 
     
    536537        response.assertions.append(assertion) 
    537538         
     539        return response 
     540         
     541    def test09CreateAuthzDecisionQueryResponse(self): 
     542        response = self._createAuthzDecisionQueryResponse() 
     543        self.assert_(response.assertions[0]) 
     544        self.assert_(response.assertions[0].authzDecisionStatements[0]) 
     545        self.assert_(response.assertions[0].authzDecisionStatements[0 
     546            ].decision == DecisionType.PERMIT) 
     547        self.assert_(response.assertions[0].authzDecisionStatements[0 
     548            ].resource == SAMLTestCase.RESOURCE_URI) 
     549        self.assert_(response.assertions[0].authzDecisionStatements[0 
     550            ].decision == DecisionType.PERMIT) 
     551        self.assert_(response.assertions[0].authzDecisionStatements[0 
     552            ].actions[-1].namespace == Action.GHPP_NS_URI) 
     553        self.assert_(response.assertions[0].authzDecisionStatements[0 
     554            ].actions[-1].value == Action.HTTP_GET_ACTION) 
     555      
     556    def _serializeAuthzDecisionQueryResponse(self): 
     557        response = self._createAuthzDecisionQueryResponse() 
     558         
    538559        # Create ElementTree Assertion Element 
    539560        responseElem = ResponseElementTree.toXML(response) 
    540          
    541561        self.assert_(iselement(responseElem)) 
    542562         
    543563        # Serialise to output         
    544         xmlOutput = prettyPrint(responseElem)        
     564        xmlOutput = prettyPrint(responseElem) 
     565        return xmlOutput 
     566     
     567    def test10SerializeAuthzDecisionQueryResponse(self): 
     568        xmlOutput = self._serializeAuthzDecisionQueryResponse() 
    545569        self.assert_(len(xmlOutput)) 
    546570        print("\n"+"_"*80) 
    547571        print(xmlOutput) 
    548572        print("_"*80) 
    549  
     573         
     574        self.assert_('AuthzDecisionStatement' in xmlOutput) 
     575        self.assert_('GET' in xmlOutput) 
     576        self.assert_('Permit' in xmlOutput) 
     577 
     578    def test11DeserializeAuthzDecisionResponse(self): 
     579        xmlOutput = self._serializeAuthzDecisionQueryResponse() 
     580         
     581        authzDecisionResponseStream = StringIO() 
     582        authzDecisionResponseStream.write(xmlOutput) 
     583        authzDecisionResponseStream.seek(0) 
     584 
     585        tree = ElementTree.parse(authzDecisionResponseStream) 
     586        elem = tree.getroot() 
     587        response = ResponseElementTree.fromXML(elem) 
     588         
     589        self.assert_(response.assertions[0]) 
     590        self.assert_(response.assertions[0].authzDecisionStatements[0]) 
     591        self.assert_(response.assertions[0].authzDecisionStatements[0 
     592            ].decision == DecisionType.PERMIT) 
     593        self.assert_(response.assertions[0].authzDecisionStatements[0 
     594            ].resource == SAMLTestCase.RESOURCE_URI) 
     595        self.assert_(response.assertions[0].authzDecisionStatements[0 
     596            ].decision == DecisionType.PERMIT) 
     597        self.assert_(response.assertions[0].authzDecisionStatements[0 
     598            ].actions[-1].namespace == Action.GHPP_NS_URI) 
     599        self.assert_(response.assertions[0].authzDecisionStatements[0 
     600            ].actions[-1].value == Action.HTTP_GET_ACTION) 
     601         
    550602        
    551603if __name__ == "__main__": 
  • TI12-security/trunk/ndg_security_saml/saml/xml/etree.py

    r6558 r6559  
    4343                             AuthzDecisionQuery, Subject, NameID, Issuer,  
    4444                             Response, Status, StatusCode, StatusMessage,  
    45                              StatusDetail, Advice, Action, Evidence, 
    46                              XSStringAttributeValue)  
     45                             StatusDetail, Advice, Action, Evidence,  
     46                             DecisionType, XSStringAttributeValue)  
    4747                              
    4848from saml.common import SAMLVersion 
     
    581581     
    582582    @classmethod 
    583     def fromXML(cls, elem, **authzDecisionValueElementTreeFactoryKw): 
     583    def fromXML(cls, elem): 
    584584        """Parse an ElementTree SAML AuthzDecisionStatement element into an 
    585585        AuthzDecisionStatement object 
     
    602602                                    cls.DEFAULT_ELEMENT_LOCAL_NAME) 
    603603         
    604          
    605         authzDecisionStatement = cls() 
     604        # Unpack attributes from top-level element 
     605        attributeValues = [] 
     606        for attributeName in (cls.DECISION_ATTRIB_NAME, 
     607                              cls.RESOURCE_ATTRIB_NAME): 
     608            attributeValue = elem.attrib.get(attributeName) 
     609            if attributeValue is None: 
     610                raise XMLTypeParseError('No "%s" attribute found in "%s" ' 
     611                                 'element' % 
     612                                 (attributeName, 
     613                                  cls.DEFAULT_ELEMENT_LOCAL_NAME)) 
     614                 
     615            attributeValues.append(attributeValue) 
     616         
     617        authzDecisionStatement = AuthzDecisionStatement() 
     618        authzDecisionStatement.decision = DecisionType(attributeValues[0]) 
     619        authzDecisionStatement.resource = attributeValues[1] 
    606620 
    607621        for childElem in elem: 
     
    17181732        authzDecisionQuery.issueInstant = SAMLDateTime.fromString( 
    17191733                                                            attributeValues[1]) 
    1720         authzDecisionQuery.id = attributeValues[2] 
    1721          
     1734        authzDecisionQuery.id = attributeValues[2]         
    17221735        authzDecisionQuery.resource = attributeValues[3] 
    17231736         
Note: See TracChangeset for help on using the changeset viewer.