import unittest from sleekxmpp import Message from sleekxmpp.test import SleekTest from sleekxmpp.thirdparty import OrderedDict import sleekxmpp.plugins.xep_0004 as xep_0004 import sleekxmpp.plugins.xep_0122 as xep_0122 from sleekxmpp.xmlstream import register_stanza_plugin class TestDataForms(SleekTest): def setUp(self): register_stanza_plugin(Message, xep_0004.Form) register_stanza_plugin(xep_0004.Form, xep_0004.FormField, iterable=True) register_stanza_plugin(xep_0004.FormField, xep_0004.FieldOption, iterable=True) register_stanza_plugin(xep_0004.FormField, xep_0122.FormValidation) def test_basic_validation(self): """Testing using multiple instructions elements in a data form.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', ftype='text-single', label='Text', desc='A text field', required=True, value='Some text!') validation = field['validate'] validation['datatype'] = 'xs:string' validation.set_basic(True) self.check(msg, """ A text field Some text! """) def test_open_validation(self): """Testing using multiple instructions elements in a data form.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', ftype='text-single', label='Text', desc='A text field', required=True, value='Some text!') validation = field['validate'] validation.set_open(True) self.check(msg, """ A text field Some text! """) def test_regex_validation(self): """Testing using multiple instructions elements in a data form.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', ftype='text-single', label='Text', desc='A text field', required=True, value='Some text!') validation = field['validate'] validation.set_regex('[0-9]+') self.check(msg, """ A text field Some text! [0-9]+ """) def test_range_validation(self): """Testing using multiple instructions elements in a data form.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', ftype='text-single', label='Text', desc='A text field', required=True, value='Some text!') validation = field['validate'] validation.set_range(True, minimum=0, maximum=10) self.check(msg, """ A text field Some text! """) suite = unittest.TestLoader().loadTestsFromTestCase(TestDataForms)