From ea65b672e75d2b544a2d9c3ef0d497c1e66075bc Mon Sep 17 00:00:00 2001 From: Robert Robinson Date: Sat, 12 Sep 2015 22:10:28 -0600 Subject: Initial cut at getting the stanzas to work. (cherry picked from commit 8c7df49) --- tests/test_stanza_xep_0122.py | 137 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 tests/test_stanza_xep_0122.py (limited to 'tests/test_stanza_xep_0122.py') diff --git a/tests/test_stanza_xep_0122.py b/tests/test_stanza_xep_0122.py new file mode 100644 index 00000000..2330b6a2 --- /dev/null +++ b/tests/test_stanza_xep_0122.py @@ -0,0 +1,137 @@ +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) -- cgit v1.2.3 From 5f9abe2e0e06b4cda898db90ba1b524640411e42 Mon Sep 17 00:00:00 2001 From: Robert Robinson Date: Mon, 14 Sep 2015 17:04:16 -0600 Subject: Working through test case issues. (cherry picked from commit 6b58cef) --- tests/test_stanza_xep_0122.py | 172 +++++++++++++++++++++--------------------- 1 file changed, 86 insertions(+), 86 deletions(-) (limited to 'tests/test_stanza_xep_0122.py') diff --git a/tests/test_stanza_xep_0122.py b/tests/test_stanza_xep_0122.py index 2330b6a2..6e1e4d7b 100644 --- a/tests/test_stanza_xep_0122.py +++ b/tests/test_stanza_xep_0122.py @@ -46,92 +46,92 @@ class TestDataForms(SleekTest): """) - 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! - - - - - - - """) + # 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) -- cgit v1.2.3 From f2bf6072ec447cf5cc331b4057b29078b1c932b5 Mon Sep 17 00:00:00 2001 From: Robert Robinson Date: Mon, 14 Sep 2015 16:35:47 -0600 Subject: Add plugin (cherry picked from commit 2296d56) --- tests/test_stanza_xep_0122.py | 196 +++++++++++++++++++++++------------------- 1 file changed, 108 insertions(+), 88 deletions(-) (limited to 'tests/test_stanza_xep_0122.py') diff --git a/tests/test_stanza_xep_0122.py b/tests/test_stanza_xep_0122.py index 6e1e4d7b..5576c45f 100644 --- a/tests/test_stanza_xep_0122.py +++ b/tests/test_stanza_xep_0122.py @@ -1,8 +1,7 @@ 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 @@ -46,92 +45,113 @@ class TestDataForms(SleekTest): """) - # 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! - # - # - # - # - # - # - # """) + self.assertTrue(validation.get_basic()) + self.assertFalse(validation.get_open()) + self.assertFalse(validation.get_range()) + self.assertFalse(validation.get_regex()) + + 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! + + + + + + + """) + + self.assertFalse(validation.get_basic()) + self.assertTrue(validation.get_open()) + self.assertFalse(validation.get_range()) + self.assertFalse(validation.get_regex()) + + 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!') + + regex_value = '[0-9]+' + + validation = field['validate'] + validation.set_regex(regex_value) + + self.check(msg, """ + + + + A text field + + Some text! + + [0-9]+ + + + + + """) + + self.assertFalse(validation.get_basic()) + self.assertFalse(validation.get_open()) + self.assertFalse(validation.get_range()) + self.assertTrue(validation.get_regex()) + + self.assertEqual(regex_value, validation.get_regex()) + + 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! + + + + + + + """) + + self.assertDictEqual(dict(minimum=str(0), maximum=str(10)), validation.get_range()) suite = unittest.TestLoader().loadTestsFromTestCase(TestDataForms) -- cgit v1.2.3 From 2a127a57a7790626c8a0bb979ec6e10d96e4535d Mon Sep 17 00:00:00 2001 From: Robert Robinson Date: Tue, 15 Sep 2015 10:09:06 -0600 Subject: Add test case Reported->Data Form Validation Add a test case that will verify that reported fields can contain data form validation data. --- tests/test_stanza_xep_0122.py | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'tests/test_stanza_xep_0122.py') diff --git a/tests/test_stanza_xep_0122.py b/tests/test_stanza_xep_0122.py index 5576c45f..fca49bbb 100644 --- a/tests/test_stanza_xep_0122.py +++ b/tests/test_stanza_xep_0122.py @@ -16,7 +16,7 @@ class TestDataForms(SleekTest): register_stanza_plugin(xep_0004.FormField, xep_0122.FormValidation) def test_basic_validation(self): - """Testing using multiple instructions elements in a data form.""" + """Testing basic validation setting and getting.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', @@ -51,7 +51,7 @@ class TestDataForms(SleekTest): self.assertFalse(validation.get_regex()) def test_open_validation(self): - """Testing using multiple instructions elements in a data form.""" + """Testing open validation setting and getting.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', @@ -85,7 +85,7 @@ class TestDataForms(SleekTest): self.assertFalse(validation.get_regex()) def test_regex_validation(self): - """Testing using multiple instructions elements in a data form.""" + """Testing regex validation setting and getting.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', @@ -123,7 +123,7 @@ class TestDataForms(SleekTest): self.assertEqual(regex_value, validation.get_regex()) def test_range_validation(self): - """Testing using multiple instructions elements in a data form.""" + """Testing range validation setting and getting.""" msg = self.Message() form = msg['form'] field = form.addField(var='f1', @@ -153,5 +153,37 @@ class TestDataForms(SleekTest): self.assertDictEqual(dict(minimum=str(0), maximum=str(10)), validation.get_range()) + def test_reported_field_validation(self): + """ + Testing adding validation to the field when it's stored in the reported. + :return: + """ + msg = self.Message() + form = msg['form'] + field = form.addReported(var='f1', ftype='text-single', label='Text') + validation = field['validate'] + validation.set_basic(True) + + form.addItem({'f1': 'Some text!'}) + + self.check(msg, """ + + + + + + + + + + + + Some text! + + + + + """) + suite = unittest.TestLoader().loadTestsFromTestCase(TestDataForms) -- cgit v1.2.3