OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python3
/
dist-packages
/
twisted
/
words
/
test
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
๐
..
-
03/31/2022 06:22:39 AM
rwxr-xr-x
๐
__init__.py
14 bytes
09/08/2017 10:38:36 AM
rw-r--r--
๐
__pycache__
-
03/31/2022 06:22:40 AM
rwxr-xr-x
๐
test_basechat.py
2.45 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_basesupport.py
2.99 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_domish.py
19.7 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_irc.py
100.97 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_irc_service.py
9.41 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_ircsupport.py
10.45 KB
09/08/2017 10:38:35 AM
rw-r--r--
๐
test_jabberclient.py
16.47 KB
03/22/2022 11:03:56 AM
rw-r--r--
๐
test_jabbercomponent.py
13.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabbererror.py
11.25 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabberjid.py
7.04 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabberjstrports.py
996 bytes
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabbersasl.py
9.21 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabbersaslmechanisms.py
5.62 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_jabberxmlstream.py
44.65 KB
03/22/2022 11:03:56 AM
rw-r--r--
๐
test_jabberxmppstringprep.py
5.42 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_service.py
27.79 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_tap.py
2.13 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_xishutil.py
9.18 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_xmlstream.py
6.13 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_xmpproutertap.py
2.34 KB
09/08/2017 10:38:36 AM
rw-r--r--
๐
test_xpath.py
10.74 KB
09/08/2017 10:38:36 AM
rw-r--r--
Editing: test_xpath.py
Close
# -*- coding: utf-8 -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. from __future__ import absolute_import, division from twisted.trial import unittest from twisted.words.xish import xpath from twisted.words.xish.domish import Element from twisted.words.xish.xpath import XPathQuery from twisted.words.xish.xpathparser import SyntaxError class XPathTests(unittest.TestCase): def setUp(self): # Build element: # <foo xmlns='testns' attrib1='value1' attrib3="user@host/resource"> # somecontent # <bar> # <foo> # <gar>DEF</gar> # </foo> # </bar> # somemorecontent # <bar attrib2="value2"> # <bar> # <foo/> # <gar>ABC</gar> # </bar> # <bar/> # <bar attrib4='value4' attrib5='value5'> # <foo/> # <gar>JKL</gar> # </bar> # <bar attrib4='value4' attrib5='value4'> # <foo/> # <gar>MNO</gar> # </bar> # <bar attrib4='value4' attrib5='value6' attrib6='รก'> # <quux>โ</quux> # </bar> # </foo> self.e = Element(("testns", "foo")) self.e["attrib1"] = "value1" self.e["attrib3"] = "user@host/resource" self.e.addContent(u"somecontent") self.bar1 = self.e.addElement("bar") self.subfoo = self.bar1.addElement("foo") self.gar1 = self.subfoo.addElement("gar") self.gar1.addContent(u"DEF") self.e.addContent(u"somemorecontent") self.bar2 = self.e.addElement("bar") self.bar2["attrib2"] = "value2" self.bar3 = self.bar2.addElement("bar") self.subfoo2 = self.bar3.addElement("foo") self.gar2 = self.bar3.addElement("gar") self.gar2.addContent(u"ABC") self.bar4 = self.e.addElement("bar") self.bar5 = self.e.addElement("bar") self.bar5["attrib4"] = "value4" self.bar5["attrib5"] = "value5" self.subfoo3 = self.bar5.addElement("foo") self.gar3 = self.bar5.addElement("gar") self.gar3.addContent(u"JKL") self.bar6 = self.e.addElement("bar") self.bar6["attrib4"] = "value4" self.bar6["attrib5"] = "value4" self.subfoo4 = self.bar6.addElement("foo") self.gar4 = self.bar6.addElement("gar") self.gar4.addContent(u"MNO") self.bar7 = self.e.addElement("bar") self.bar7["attrib4"] = "value4" self.bar7["attrib5"] = "value6" self.bar7["attrib6"] = u"รก" self.quux = self.bar7.addElement("quux") self.quux.addContent(u"\N{SNOWMAN}") def test_staticMethods(self): """ Test basic operation of the static methods. """ self.assertEqual(xpath.matches("/foo/bar", self.e), True) self.assertEqual(xpath.queryForNodes("/foo/bar", self.e), [self.bar1, self.bar2, self.bar4, self.bar5, self.bar6, self.bar7]) self.assertEqual(xpath.queryForString("/foo", self.e), "somecontent") self.assertEqual(xpath.queryForStringList("/foo", self.e), ["somecontent", "somemorecontent"]) def test_locationFooBar(self): """ Test matching foo with child bar. """ xp = XPathQuery("/foo/bar") self.assertEqual(xp.matches(self.e), 1) def test_locationFooBarFoo(self): """ Test finding foos at the second level. """ xp = XPathQuery("/foo/bar/foo") self.assertEqual(xp.matches(self.e), 1) self.assertEqual(xp.queryForNodes(self.e), [self.subfoo, self.subfoo3, self.subfoo4]) def test_locationNoBar3(self): """ Test not finding bar3. """ xp = XPathQuery("/foo/bar3") self.assertEqual(xp.matches(self.e), 0) def test_locationAllChilds(self): """ Test finding childs of foo. """ xp = XPathQuery("/foo/*") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar1, self.bar2, self.bar4, self.bar5, self.bar6, self.bar7]) def test_attribute(self): """ Test matching foo with attribute. """ xp = XPathQuery("/foo[@attrib1]") self.assertEqual(xp.matches(self.e), True) def test_attributeWithValueAny(self): """ Test find nodes with attribute having value. """ xp = XPathQuery("/foo/*[@attrib2='value2']") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar2]) def test_locationWithValueUnicode(self): """ Nodes' attributes can be matched with non-ASCII values. """ xp = XPathQuery(u"/foo/*[@attrib6='รก']") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar7]) def test_namespaceFound(self): """ Test matching node with namespace. """ xp = XPathQuery("/foo[@xmlns='testns']/bar") self.assertEqual(xp.matches(self.e), 1) def test_namespaceNotFound(self): """ Test not matching node with wrong namespace. """ xp = XPathQuery("/foo[@xmlns='badns']/bar2") self.assertEqual(xp.matches(self.e), 0) def test_attributeWithValue(self): """ Test matching node with attribute having value. """ xp = XPathQuery("/foo[@attrib1='value1']") self.assertEqual(xp.matches(self.e), 1) def test_queryForString(self): """ queryforString on absolute paths returns their first CDATA. """ xp = XPathQuery("/foo") self.assertEqual(xp.queryForString(self.e), "somecontent") def test_queryForStringList(self): """ queryforStringList on absolute paths returns all their CDATA. """ xp = XPathQuery("/foo") self.assertEqual(xp.queryForStringList(self.e), ["somecontent", "somemorecontent"]) def test_queryForStringListAnyLocation(self): """ queryforStringList on relative paths returns all their CDATA. """ xp = XPathQuery("//foo") self.assertEqual(xp.queryForStringList(self.e), ["somecontent", "somemorecontent"]) def test_queryForNodes(self): """ Test finding nodes. """ xp = XPathQuery("/foo/bar") self.assertEqual(xp.queryForNodes(self.e), [self.bar1, self.bar2, self.bar4, self.bar5, self.bar6, self.bar7]) def test_textCondition(self): """ Test matching a node with given text. """ xp = XPathQuery("/foo[text() = 'somecontent']") self.assertEqual(xp.matches(self.e), True) def test_textConditionUnicode(self): """ A node can be matched by text with non-ascii code points. """ xp = XPathQuery(u"//*[text()='\N{SNOWMAN}']") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.quux]) def test_textNotOperator(self): """ Test for not operator. """ xp = XPathQuery("/foo[not(@nosuchattrib)]") self.assertEqual(xp.matches(self.e), True) def test_anyLocationAndText(self): """ Test finding any nodes named gar and getting their text contents. """ xp = XPathQuery("//gar") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.gar1, self.gar2, self.gar3, self.gar4]) self.assertEqual(xp.queryForStringList(self.e), ["DEF", "ABC", "JKL", "MNO"]) def test_anyLocation(self): """ Test finding any nodes named bar. """ xp = XPathQuery("//bar") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar1, self.bar2, self.bar3, self.bar4, self.bar5, self.bar6, self.bar7]) def test_anyLocationQueryForString(self): """ L{XPathQuery.queryForString} should raise a L{NotImplementedError} for any location. """ xp = XPathQuery("//bar") self.assertRaises(NotImplementedError, xp.queryForString, None) def test_andOperator(self): """ Test boolean and operator in condition. """ xp = XPathQuery("//bar[@attrib4='value4' and @attrib5='value5']") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar5]) def test_orOperator(self): """ Test boolean or operator in condition. """ xp = XPathQuery("//bar[@attrib5='value4' or @attrib5='value5']") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar5, self.bar6]) def test_booleanOperatorsParens(self): """ Test multiple boolean operators in condition with parens. """ xp = XPathQuery("""//bar[@attrib4='value4' and (@attrib5='value4' or @attrib5='value6')]""") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar6, self.bar7]) def test_booleanOperatorsNoParens(self): """ Test multiple boolean operators in condition without parens. """ xp = XPathQuery("""//bar[@attrib5='value4' or @attrib5='value5' or @attrib5='value6']""") self.assertEqual(xp.matches(self.e), True) self.assertEqual(xp.queryForNodes(self.e), [self.bar5, self.bar6, self.bar7]) def test_badXPathNoClosingBracket(self): """ A missing closing bracket raises a SyntaxError. This test excercises the most common failure mode. """ exc = self.assertRaises(SyntaxError, XPathQuery, """//bar[@attrib1""") self.assertTrue(exc.msg.startswith("Trying to find one of"), ("SyntaxError message '%s' doesn't start with " "'Trying to find one of'") % exc.msg)