def test_reject_form_with_multiple_different_types(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", "urn:xmpp:dataforms:softwarefoo", ] ), forms_xso.Field( var="os_version", values=[ "10.5.1", ] ), forms_xso.Field( var="os", values=[ "Mac", ] ), ]) with self.assertRaisesRegex( ValueError, "form with multiple types"): caps115.build_forms_string(forms)
def test_accept_form_with_multiple_identical_types(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", "urn:xmpp:dataforms:softwareinfo", ]), forms_xso.Field(var="os_version", values=[ "10.5.1", ]), ]) caps115.build_forms_string(forms)
def test_multiple(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM), forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "uri:foo", ] ), ]) forms[1].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "uri:bar", ] ), ]) self.assertEqual( b"uri:bar<uri:foo<", caps115.build_forms_string(forms) )
def test_value_and_var_escaping(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "urn:xmpp:<dataforms:softwareinfo", ] ), forms_xso.Field( var="os_version", values=[ "10.&5.1", ] ), forms_xso.Field( var="os>", values=[ "Mac", ] ), ]) self.assertEqual( b"urn:xmpp:<dataforms:softwareinfo<" b"os><Mac<" b"os_version<10.&5.1<", caps115.build_forms_string(forms) )
def test_ignore_form_without_type(self): forms = [ forms_xso.Data(type_=forms_xso.DataType.FORM), forms_xso.Data(type_=forms_xso.DataType.FORM) ] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[]), forms_xso.Field(var="os_version", values=[ "10.5.1", ]), ]) forms[1].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", ]), forms_xso.Field(var="os_version", values=[ "10.5.1", ]), forms_xso.Field(var="os", values=[ "Mac", ]), ]) self.assertEqual( b"urn:xmpp:dataforms:softwareinfo<" b"os<Mac<" b"os_version<10.5.1<", caps115.build_forms_string(forms))
def test_xep_form(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", ]), forms_xso.Field(var="os_version", values=[ "10.5.1", ]), forms_xso.Field(var="os", values=[ "Mac", ]), forms_xso.Field(var="ip_version", values=[ "ipv4", "ipv6", ]), forms_xso.Field(var="software", values=[ "Psi", ]), forms_xso.Field(var="software_version", values=[ "0.11", ]), ]) self.assertEqual( b"urn:xmpp:dataforms:softwareinfo<" b"ip_version<ipv4<ipv6<" b"os<Mac<" b"os_version<10.5.1<" b"software<Psi<" b"software_version<0.11<", caps115.build_forms_string(forms))
def test_xep_form(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", ] ), forms_xso.Field( var="os_version", values=[ "10.5.1", ] ), forms_xso.Field( var="os", values=[ "Mac", ] ), forms_xso.Field( var="ip_version", values=[ "ipv4", "ipv6", ] ), forms_xso.Field( var="software", values=[ "Psi", ] ), forms_xso.Field( var="software_version", values=[ "0.11", ] ), ]) self.assertEqual( b"urn:xmpp:dataforms:softwareinfo<" b"ip_version<ipv4<ipv6<" b"os<Mac<" b"os_version<10.5.1<" b"software<Psi<" b"software_version<0.11<", caps115.build_forms_string(forms) )
def test_reject_form_with_multiple_different_types(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", "urn:xmpp:dataforms:softwarefoo", ]), forms_xso.Field(var="os_version", values=[ "10.5.1", ]), forms_xso.Field(var="os", values=[ "Mac", ]), ]) with self.assertRaisesRegex(ValueError, "form with multiple types"): caps115.build_forms_string(forms)
def test_accept_form_with_multiple_identical_types(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", "urn:xmpp:dataforms:softwareinfo", ] ), forms_xso.Field( var="os_version", values=[ "10.5.1", ] ), ]) caps115.build_forms_string(forms)
def test_ignore_form_without_type(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM), forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ ] ), forms_xso.Field( var="os_version", values=[ "10.5.1", ] ), ]) forms[1].fields.extend([ forms_xso.Field( var="FORM_TYPE", values=[ "urn:xmpp:dataforms:softwareinfo", ] ), forms_xso.Field( var="os_version", values=[ "10.5.1", ] ), forms_xso.Field( var="os", values=[ "Mac", ] ), ]) self.assertEqual( b"urn:xmpp:dataforms:softwareinfo<" b"os<Mac<" b"os_version<10.5.1<", caps115.build_forms_string(forms) )
def test_value_and_var_escaping(self): forms = [forms_xso.Data(type_=forms_xso.DataType.FORM)] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "urn:xmpp:<dataforms:softwareinfo", ]), forms_xso.Field(var="os_version", values=[ "10.&5.1", ]), forms_xso.Field(var="os>", values=[ "Mac", ]), ]) self.assertEqual( b"urn:xmpp:<dataforms:softwareinfo<" b"os><Mac<" b"os_version<10.&5.1<", caps115.build_forms_string(forms))
def test_multiple(self): forms = [ forms_xso.Data(type_=forms_xso.DataType.FORM), forms_xso.Data(type_=forms_xso.DataType.FORM) ] forms[0].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "uri:foo", ]), ]) forms[1].fields.extend([ forms_xso.Field(var="FORM_TYPE", values=[ "uri:bar", ]), ]) self.assertEqual(b"uri:bar<uri:foo<", caps115.build_forms_string(forms))