summaryrefslogtreecommitdiff
path: root/tests/unittest/__init__.py
blob: 13ad92fd7bb0dafe6cac70503b4b69c660afd8d1 (plain)
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
from unittest import TestCase
import urllib.parse as urlparse


# URL comparison where query param order is insignificant
def url_equals(self, a, b, parse_fragment=False):
    parsed_a = urlparse.urlparse(a, allow_fragments=parse_fragment)
    parsed_b = urlparse.urlparse(b, allow_fragments=parse_fragment)
    query_a = urlparse.parse_qsl(parsed_a.query)
    query_b = urlparse.parse_qsl(parsed_b.query)
    if parse_fragment:
        fragment_a = urlparse.parse_qsl(parsed_a.fragment)
        fragment_b = urlparse.parse_qsl(parsed_b.fragment)
        self.assertCountEqual(fragment_a, fragment_b)
    else:
        self.assertEqual(parsed_a.fragment, parsed_b.fragment)
    self.assertEqual(parsed_a.scheme, parsed_b.scheme)
    self.assertEqual(parsed_a.netloc, parsed_b.netloc)
    self.assertEqual(parsed_a.path, parsed_b.path)
    self.assertEqual(parsed_a.params, parsed_b.params)
    self.assertEqual(parsed_a.username, parsed_b.username)
    self.assertEqual(parsed_a.password, parsed_b.password)
    self.assertEqual(parsed_a.hostname, parsed_b.hostname)
    self.assertEqual(parsed_a.port, parsed_b.port)
    self.assertCountEqual(query_a, query_b)


TestCase.assertURLEqual = url_equals

# Form body comparison where order is insignificant
TestCase.assertFormBodyEqual = lambda self, a, b: self.assertCountEqual(
        urlparse.parse_qsl(a), urlparse.parse_qsl(b))