From faa364138450fc390906956e2db358387200e19d Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Mon, 3 Oct 2016 11:42:30 +0200 Subject: Python3 (#37) * Handle python3's configparser as well * tests: Open file in text mode to avoid string bytes conversion with Python3 * tests: drop unnecessary dict These arent sortable in Python3 * Convert returned facts to list While Python2 has a list here Python3 returns dict_values which is not indexable as is. * tests: Parse url for comparison Python3 uses hash seeds for comparison so the QS parts dont have a fixed order. * Test python3.4 and python3.5 as well --- tests/test_get_json.py | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'tests/test_get_json.py') diff --git a/tests/test_get_json.py b/tests/test_get_json.py index d424936..eca8765 100644 --- a/tests/test_get_json.py +++ b/tests/test_get_json.py @@ -2,6 +2,10 @@ import responses import unittest +try: + import urlparse +except ImportError: + from urllib import parse as urlparse from foreman_ansible_inventory import ForemanInventory @@ -14,6 +18,18 @@ class TestGetJson(unittest.TestCase): self.inv.foreman_pw = 'mastter' self.inv.foreman_ssl_verify = True + def assertEqualUrl(self, url1, url2): + p1 = urlparse.urlparse(url1) + p2 = urlparse.urlparse(url2) + q1 = urlparse.parse_qs(p1.query) + q2 = urlparse.parse_qs(p2.query) + self.assertEqual(p1.scheme, p2.scheme) + self.assertEqual(p1.netloc, p2.netloc) + self.assertEqual(p1.path, p2.path) + self.assertEqual(p1.params, p2.params) + self.assertEqual(p1.fragment, p2.fragment) + self.assertEqual(q1, q2) + @responses.activate def test_get_hosts(self): url = 'http://localhost:3000/api/v2/hosts' @@ -25,16 +41,16 @@ class TestGetJson(unittest.TestCase): status=200) ret = self.inv._get_hosts() - self.assertEqual(sorted(ret), - sorted([{u'name': u'foo'}, - {u'name': u'bar'}, - {u'name': u'foo'}, - {u'name': u'bar'}])) + self.assertEqual(ret, + [{u'name': u'foo'}, + {u'name': u'bar'}, + {u'name': u'foo'}, + {u'name': u'bar'}]) self.assertEqual(len(responses.calls), 2) - self.assertEqual(responses.calls[0].request.url, - '%s?per_page=250&page=1' % url) - self.assertEqual(responses.calls[1].request.url, - '%s?per_page=250&page=2' % url) + self.assertEqualUrl(responses.calls[0].request.url, + '%s?per_page=250&page=1' % url) + self.assertEqualUrl(responses.calls[1].request.url, + '%s?per_page=250&page=2' % url) @responses.activate def test_get_facts(self): @@ -52,8 +68,8 @@ class TestGetJson(unittest.TestCase): ret = self.inv._get_facts({'id': 10}) self.assertEqual(ret, {u'fact2': u'val2', u'fact1': u'val1'}) self.assertEqual(len(responses.calls), 1) - self.assertEqual(responses.calls[0].request.url, - '%s?per_page=250&page=1' % url) + self.assertEqualUrl(responses.calls[0].request.url, + '%s?per_page=250&page=1' % url) @responses.activate def test_resolve_params(self): @@ -72,5 +88,6 @@ class TestGetJson(unittest.TestCase): sorted({'param1': 'value1', 'param2': 'value2'}.items())) self.assertEqual(len(responses.calls), 1) - self.assertEqual(responses.calls[0].request.url, - '%s?per_page=250&page=1' % url) + + self.assertEqualUrl(responses.calls[0].request.url, + '%s?per_page=250&page=1' % url) -- cgit v1.2.3