import unittest from narval.reader import REGISTRY as reg from narval.elements import chat reg.register_class(chat.BotConfigurationElement) class BotConfigurationElementTC(unittest.TestCase): xml_string = """ all myuser myuser myuser myuser all toto """ def setUp(self): self.elmt = reg.from_string(self.xml_string)[0] def test_base(self): self.assertEquals(self.elmt.verbose, True) #self.assertEquals(self.elmt.mode, 'default') self.assertEquals(self.elmt.min_treshold, 0.30) self.assertEquals(self.elmt.max_treshold, 0.70) def test_has_access_right(self): # with master_id self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'shutdown'), False) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'shutdown'), True) self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'undefined'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'undefined'), False) self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'response'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'response'), True) self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'log_control'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'log_control'), False) # without master_id self.assertEquals(self.elmt.has_access_right(None, 'syt', 'undefined'), True) self.assertEquals(self.elmt.has_access_right(None, 'toto', 'undefined'), True) self.assertEquals(self.elmt.has_access_right(None, 'syt', 'log_control'), False) self.assertEquals(self.elmt.has_access_right(None, 'toto', 'log_control'), False) # special behaviour in group chat self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'shutdown', True), False) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'shutdown', True), False) def test_roundtrip(self): clone = reg.from_string(self.elmt.as_xml())[0] self.assertEquals(self.elmt._ns_attrs, clone._ns_attrs) self.assertEquals(self.elmt.acls, clone.acls) class BotConfigurationElementTCWildcards(unittest.TestCase): xml_string = """ myuser all myuser """ def setUp(self): self.elmt = reg.from_string(self.xml_string)[0] def test_has_access_right(self): self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'log_control'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'log_control'), True) self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'log_categorize'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'log_categorize'), True) self.assertEquals(self.elmt.has_access_right('syt', 'syt', 'kb_add_stmt'), True) self.assertEquals(self.elmt.has_access_right('syt', 'toto', 'kb_add_stmt'), False) if __name__ == '__main__': unittest.main()