Changeset 6558


Ignore:
Timestamp:
11/02/10 17:09:43 (9 years ago)
Author:
pjkersha
Message:

Working serialised 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

    r6553 r6558  
    328328     
    329329    # "Permit" decision type 
    330     PERMIT = "Permit" 
     330    PERMIT_STR = "Permit" 
    331331     
    332332    # "Deny" decision type 
    333     DENY = "Deny" 
     333    DENY_STR = "Deny" 
    334334     
    335335    # "Indeterminate" decision type 
    336     INDETERMINATE = "Indeterminate" 
    337          
    338     TYPES = (PERMIT, DENY, INDETERMINATE) 
     336    INDETERMINATE_STR = "Indeterminate" 
     337         
     338    TYPES = (PERMIT_STR, DENY_STR, INDETERMINATE_STR) 
    339339     
    340340    __slots__ = ('__value',) 
     
    347347        if not isinstance(value, basestring): 
    348348            raise TypeError('Expecting string type for "value" attribute; got ' 
    349                             'instead' % type(value)) 
     349                            '%r instead' % type(value)) 
    350350             
    351351        if value not in DecisionType.TYPES: 
    352352            raise AttributeError('Permissable decision types are %r; got %r ' 
    353                                  'instead' % (DecisionType.TYPES, 
    354                                               value)) 
     353                                 'instead' % (DecisionType.TYPES, value)) 
    355354        self.__value = value 
    356355         
     
    362361    def __str__(self): 
    363362        return self.__value 
     363 
     364    def __eq__(self, decision): 
     365        return self.__value == decision.value 
     366 
     367 
     368class PermitDecisionType(DecisionType): 
     369    """Permit authorisation Decision""" 
     370    def __init__(self): 
     371        super(PermitDecisionType, self).__init__(DecisionType.PERMIT_STR) 
     372         
     373    def _setValue(self):   
     374        raise AttributeError("can't set attribute") 
     375 
     376 
     377class DenyDecisionType(DecisionType): 
     378    """Deny authorisation Decision""" 
     379    def __init__(self): 
     380        super(DenyDecisionType, self).__init__(DecisionType.DENY_STR) 
     381         
     382    def _setValue(self, value):   
     383        raise AttributeError("can't set attribute") 
     384 
     385 
     386class IndeterminateDecisionType(DecisionType): 
     387    """Indeterminate authorisation Decision""" 
     388    def __init__(self): 
     389        super(IndeterminateDecisionType, self).__init__( 
     390                                            DecisionType.INDETERMINATE_STR) 
     391         
     392    def _setValue(self, value):   
     393        raise AttributeError("can't set attribute") 
     394 
     395# Add instances of each for convenience 
     396DecisionType.PERMIT = PermitDecisionType() 
     397DecisionType.DENY = DenyDecisionType() 
     398DecisionType.INDETERMINATE = IndeterminateDecisionType() 
    364399 
    365400 
     
    401436        self.__resource = None   
    402437         
    403         self.__decision = DecisionType(DecisionType.INDETERMINATE)     
     438        self.__decision = DecisionType.INDETERMINATE    
    404439        self.__actions = TypedList(Action) 
    405440        self.__evidence = None 
     
    506541        @param value: the decision of the authorization request 
    507542        ''' 
    508         if not isinstance(value, basestring): 
     543        if not isinstance(value, DecisionType): 
    509544            raise TypeError('Expecting %r type for "decision" attribute; ' 
    510                             'got instead' % (DecisionType, type(value))) 
     545                            'got %r instead' % (DecisionType, type(value))) 
    511546        self.__decision = value 
     547 
     548    decision = property(_getDecision, _setDecision,  
     549                        doc="Authorization decision as a DecisionType instance") 
    512550     
    513551    @property 
  • TI12-security/trunk/ndg_security_saml/saml/test/test_saml.py

    r6553 r6558  
    2424                             AuthzDecisionStatement, Assertion, AttributeQuery,  
    2525                             Response, Issuer, Subject, NameID, StatusCode,  
    26                              StatusMessage, Status, Conditions,  
     26                             StatusMessage, Status, Conditions, DecisionType, 
    2727                             XSStringAttributeValue, Action, 
    2828                             AuthzDecisionQuery) 
     
    487487 
    488488 
    489     def test05CreateAuthzDecisionQueryResponse(self): 
     489    def test09CreateAuthzDecisionQueryResponse(self): 
    490490        response = Response() 
    491         response.issueInstant = datetime.utcnow() 
     491        now = datetime.utcnow() 
     492        response.issueInstant = now 
    492493         
    493494        # Make up a request ID that this response is responding to 
     
    498499        response.issuer = Issuer() 
    499500        response.issuer.format = Issuer.X509_SUBJECT 
    500         response.issuer.value = \ 
    501                         SAMLTestCase.ISSUER_DN 
     501        response.issuer.value = SAMLTestCase.ISSUER_DN 
    502502         
    503503        response.status = Status() 
     
    508508            
    509509        assertion = Assertion() 
     510        assertion.version = SAMLVersion(SAMLVersion.VERSION_20) 
     511        assertion.id = str(uuid4()) 
     512        assertion.issueInstant = now 
     513         
    510514        authzDecisionStatement = AuthzDecisionStatement() 
     515        authzDecisionStatement.decision = DecisionType.PERMIT 
    511516        authzDecisionStatement.resource = SAMLTestCase.RESOURCE_URI 
    512517        authzDecisionStatement.actions.append(Action()) 
     
    515520        assertion.authzDecisionStatements.append(authzDecisionStatement) 
    516521         
    517 #        assertion.subject = Subject()   
    518 #        assertion.subject.nameID = NameID() 
    519 #        assertion.subject.nameID.format = SAMLTestCase.NAMEID_FORMAT 
    520 #        assertion.subject.nameID.value = SAMLTestCase.NAMEID_VALUE     
    521 #             
    522 #        assertion.issuer = Issuer() 
    523 #        assertion.issuer.format = Issuer.X509_SUBJECT 
    524 #        assertion.issuer.value = SAMLTestCase.ISSUER_DN 
     522        # Add a conditions statement for a validity of 8 hours 
     523        assertion.conditions = Conditions() 
     524        assertion.conditions.notBefore = now 
     525        assertion.conditions.notOnOrAfter = now + timedelta(seconds=60*60*8) 
     526                
     527        assertion.subject = Subject()   
     528        assertion.subject.nameID = NameID() 
     529        assertion.subject.nameID.format = SAMLTestCase.NAMEID_FORMAT 
     530        assertion.subject.nameID.value = SAMLTestCase.NAMEID_VALUE     
     531             
     532        assertion.issuer = Issuer() 
     533        assertion.issuer.format = Issuer.X509_SUBJECT 
     534        assertion.issuer.value = SAMLTestCase.ISSUER_DN 
    525535 
    526536        response.assertions.append(assertion) 
  • TI12-security/trunk/ndg_security_saml/saml/xml/etree.py

    r6553 r6558  
    371371         
    372372        for authzDecisionStatement in assertion.authzDecisionStatements: 
    373             authzDecisionStatementElem = AuthzDecisionStatementElementTree.toXML( 
    374                                         authzDecisionStatement, 
    375                                         **authzDecisionValueElementTreeFactoryKw) 
     373            authzDecisionStatementElem = \ 
     374                AuthzDecisionStatementElementTree.toXML(authzDecisionStatement) 
    376375            elem.append(authzDecisionStatementElem) 
    377376             
Note: See TracChangeset for help on using the changeset viewer.