Ejemplo n.º 1
0
    def test_root(self):
        tree = URLTree()

        url = URL('http://w3af.org/')
        tree.add_url(url)

        expected = {URLNode(u'http://w3af.org', 1): {}}
        self.assertEqual(tree.tree, expected)
Ejemplo n.º 2
0
    def test_root(self):
        tree = URLTree()

        url = URL('http://w3af.org/')
        tree.add_url(url)

        expected = url_tree_factory()
        expected[u'http://w3af.org']

        self.assertEqual(tree.tree, expected)
Ejemplo n.º 3
0
    def test_nested_paths_and_files(self):
        tree = URLTree()

        url_1 = URL('http://w3af.org/foo/bar/')
        url_2 = URL('http://w3af.org/spam/eggs/123.txt')
        tree.add_url(url_1)
        tree.add_url(url_2)

        expected = url_tree_factory()
        expected[u'http://w3af.org'][u'foo'][u'bar']
        expected[u'http://w3af.org'][u'spam'][u'eggs'][u'123.txt']

        self.assertEqual(tree.tree, expected)
Ejemplo n.º 4
0
    def test_two_independent_paths(self):
        tree = URLTree()

        url_1 = URL('http://w3af.org/foo/')
        url_2 = URL('http://w3af.org/bar/')
        tree.add_url(url_1)
        tree.add_url(url_2)

        expected = url_tree_factory()
        expected[u'http://w3af.org'][u'foo']
        expected[u'http://w3af.org'][u'bar']

        self.assertEqual(tree.tree, expected)
Ejemplo n.º 5
0
    def _get_known_urls(self, all_known_urls):
        """
        This method calls kb.get_all_known_urls() to retrieve the URLs,
        then it structures them into a tree which has some helper methods
        to allow us to easily print them using jinja2 templates.

        :return: A URLTree instance
        """
        url_tree = URLTree()

        for url in all_known_urls:
            url_tree.add_url(url)

        return url_tree
Ejemplo n.º 6
0
    def test_two_independent_paths(self):
        tree = URLTree()

        url_1 = URL('http://w3af.org/foo/')
        url_2 = URL('http://w3af.org/bar/')
        tree.add_url(url_1)
        tree.add_url(url_2)

        expected = {
            URLNode("http://w3af.org", 0): {
                URLNode("foo", 1): {},
                URLNode("bar", 1): {}
            }
        }
        self.assertEqual(tree.tree, expected)
Ejemplo n.º 7
0
    def test_two_nested_paths(self):
        tree = URLTree()

        url_1 = URL('http://w3af.org/foo/bar/')
        url_2 = URL('http://w3af.org/spam/eggs/')
        tree.add_url(url_1)
        tree.add_url(url_2)

        expected = {
            URLNode("http://w3af.org", 0): {
                URLNode("foo", 0): {
                    URLNode("bar", 1): {}
                },
                URLNode("spam", 0): {
                    URLNode("eggs", 1): {}
                }
            }
        }

        self.assertEqual(tree.tree, expected)
Ejemplo n.º 8
0
    def test_render_simple(self):
        w3af_core = w3afCore()

        w3af_core.status.start()
        w3af_core.status.set_running_plugin('crawl', 'web_spider')
        status = w3af_core.status.get_status_as_dict()

        known_urls = URLTree()
        known_urls.add_url(URL('http://w3af.org/'))
        known_urls.add_url(URL('http://w3af.org/foo/'))
        known_urls.add_url(URL('http://w3af.org/foo/abc.html'))
        known_urls.add_url(URL('http://w3af.org/foo/bar/'))
        known_urls.add_url(URL('http://w3af.org/123.txt'))

        total_urls = 150

        x = xml_file()

        scan_status = ScanStatus(x._get_jinja2_env(), status, total_urls,
                                 known_urls)
        xml = scan_status.to_string()
        self.maxDiff = None
        expected = (
            u'<scan-status>\n'
            u'    <status>Running</status>\n'
            u'    <is-paused>False</is-paused>\n'
            u'    <is-running>True</is-running>\n'
            u'\n'
            u'    <active-plugin>\n'
            u'        <crawl>web_spider</crawl>\n'
            u'        <audit>None</audit>\n'
            u'    </active-plugin>\n'
            u'\n'
            u'    <current-request>\n'
            u'        <crawl>None</crawl>\n'
            u'        <audit>None</audit>\n'
            u'    </current-request>\n'
            u'\n'
            u'    <queues>\n'
            u'        <crawl>\n'
            u'            <input-speed>0</input-speed>\n'
            u'            <output-speed>0</output-speed>\n'
            u'            <length>0</length>\n'
            u'            <processed-tasks>0</processed-tasks>\n'
            u'        </crawl>\n'
            u'\n'
            u'        <audit>\n'
            u'            <input-speed>0</input-speed>\n'
            u'            <output-speed>0</output-speed>\n'
            u'            <length>0</length>\n'
            u'            <processed-tasks>0</processed-tasks>\n'
            u'        </audit>\n'
            u'\n'
            u'        <grep>\n'
            u'            <input-speed>0</input-speed>\n'
            u'            <output-speed>0</output-speed>\n'
            u'            <length>0</length>\n'
            u'            <processed-tasks>None</processed-tasks>\n'
            u'        </grep>\n'
            u'    </queues>\n'
            u'\n'
            u'    <eta>\n'
            u'        <crawl>0 seconds.</crawl>\n'
            u'        <audit>0 seconds.</audit>\n'
            u'        <grep>0 seconds.</grep>\n'
            u'        <all>0 seconds.</all>\n'
            u'    </eta>\n'
            u'\n'
            u'    <rpm>0</rpm>\n'
            u'    <sent-request-count>0</sent-request-count>\n'
            u'    <progress>100</progress>\n'
            u'\n'
            u'    <total-urls>150</total-urls>\n'
            u'    <known-urls>    \n'
            u'    <node url="http://w3af.org">\n'
            u'                        \n'
            u'        <node url="foo">\n'
            u'                                            \n'
            u'            <node url="bar" />                            \n'
            u'            <node url="abc.html" />\n'
            u'                        \n'
            u'        </node>                        \n'
            u'        <node url="123.txt" />\n'
            u'                    \n'
            u'    </node>\n'
            u'    </known-urls>\n'
            u'</scan-status>')

        self.assertEqual(xml, expected)
        self.assertValidXML(xml)
Ejemplo n.º 9
0
 def test_empty(self):
     tree = URLTree()
     self.assertEqual(tree.tree, {})