server/test/unittest_hookhelper.py
changeset 2968 0e3460341023
parent 2773 b2530e3e0afb
parent 2920 64322aa83a1d
equal deleted inserted replaced
2902:dd9f2dd02f85 2968:0e3460341023
    58         op3 = schemahooks.MemSchemaNotifyChanges(session)
    58         op3 = schemahooks.MemSchemaNotifyChanges(session)
    59         op4 = hooks.DelayedDeleteOp(session)
    59         op4 = hooks.DelayedDeleteOp(session)
    60         op5 = hooks.CheckORelationOp(session)
    60         op5 = hooks.CheckORelationOp(session)
    61         self.assertEquals(session.pending_operations, [op1, op2, op4, op5, op3])
    61         self.assertEquals(session.pending_operations, [op1, op2, op4, op5, op3])
    62 
    62 
    63 
       
    64     def test_in_state_notification(self):
       
    65         result = []
       
    66         # test both email notification and transition_information
       
    67         # whatever if we can connect to the default stmp server, transaction
       
    68         # should not fail
       
    69         def in_state_changed(session, eidfrom, rtype, eidto):
       
    70             tr = previous_state(session, eidfrom)
       
    71             if tr is None:
       
    72                 result.append(tr)
       
    73                 return
       
    74             content = u'trÀnsition from %s to %s' % (tr.name, entity_name(session, eidto))
       
    75             result.append(content)
       
    76             SendMailOp(session, msg=content, recipients=['test@logilab.fr'])
       
    77         self.hm.register_hook(in_state_changed,
       
    78                              'before_add_relation', 'in_state')
       
    79         self.execute('INSERT CWUser X: X login "paf", X upassword "wouf", X in_state S, X in_group G WHERE S name "activated", G name "users"')
       
    80         self.assertEquals(result, [None])
       
    81         searchedops = [op for op in self.session.pending_operations
       
    82                        if isinstance(op, SendMailOp)]
       
    83         self.assertEquals(len(searchedops), 0,
       
    84                           self.session.pending_operations)
       
    85         self.commit()
       
    86         self.execute('SET X in_state S WHERE X login "paf", S name "deactivated"')
       
    87         self.assertEquals(result, [None, u'trÀnsition from activated to deactivated'])
       
    88         # one to send the mail, one to close the smtp connection
       
    89         searchedops = [op for op in self.session.pending_operations
       
    90                        if isinstance(op, SendMailOp)]
       
    91         self.assertEquals(len(searchedops), 1,
       
    92                           self.session.pending_operations)
       
    93         self.commit()
       
    94         self.assertEquals([], self.session.pending_operations)
       
    95 
       
    96 if __name__ == '__main__':
    63 if __name__ == '__main__':
    97     unittest_main()
    64     unittest_main()