~launchpad-pqm/launchpad/devel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Copyright 2011 Canonical Ltd.  This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).

"""Test the search result PageMatch class."""

__metaclass__ = type

from canonical.testing.layers import DatabaseFunctionalLayer
from lp.services.googlesearch import PageMatch
from lp.testing import TestCaseWithFactory


class TestPageMatchURLHandling(TestCaseWithFactory):

    layer = DatabaseFunctionalLayer

    def test_rewrite_url_handles_invalid_data(self):
        # Given a bad url, pagematch can get a valid one.
        bad_url = ("http://launchpad.dev/+search?"
                   "field.text=WUSB54GC+ karmic&"
                   "field.actions.search=Search")
        p = PageMatch('Bad,', bad_url, 'Bad data')
        expected = ("http://launchpad.dev/+search?"
                   "field.text=WUSB54GC++karmic&"
                   "field.actions.search=Search")
        self.assertEqual(expected, p.url)

    def test_rewrite_url_handles_invalid_data_partial_escaped(self):
        # Given a url with partial escaped values, pagematch does not error.
        partial_encoded_url = (
           "http://launchpad.dev/+search?"
           "field.text=WUSB54GC+%2Bkarmic&"
           "field.actions.search=Search")
        p = PageMatch('Weird.', partial_encoded_url, 'Weird data')
        expected = (
            "http://launchpad.dev/+search?"
            "field.text=WUSB54GC+%2Bkarmic&"
            "field.actions.search=Search")
        self.assertEqual(expected, p.url)