diff options
author | Guido Günther <agx@sigxcpu.org> | 2016-08-13 17:20:16 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2016-08-14 14:18:12 +0200 |
commit | 1c5e75d047040ba09e63442d0360e4f87836fce5 (patch) | |
tree | 18bb9512f20efed61491cb5de94768d9dc49a659 /tests | |
parent | c4f81ff47b43931beefe4dcd671d8d71387a80b2 (diff) |
Add a test for methods invoking _get_json()
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_get_json.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/test_get_json.py b/tests/test_get_json.py new file mode 100644 index 0000000..d424936 --- /dev/null +++ b/tests/test_get_json.py @@ -0,0 +1,76 @@ +# vim: set fileencoding=utf-8 : + +import responses +import unittest + +from foreman_ansible_inventory import ForemanInventory + + +class TestGetJson(unittest.TestCase): + def setUp(self): + self.inv = ForemanInventory() + self.inv.foreman_url = 'http://localhost:3000' + self.inv.foreman_user = 'doesnot' + self.inv.foreman_pw = 'mastter' + self.inv.foreman_ssl_verify = True + + @responses.activate + def test_get_hosts(self): + url = 'http://localhost:3000/api/v2/hosts' + responses.add(responses.GET, + url, + json={'results': [{'name': 'foo'}, + {'name': 'bar'}], + 'total': 4}, + 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(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) + + @responses.activate + def test_get_facts(self): + self.inv.want_facts = True + url = 'http://localhost:3000/api/v2/hosts/10/facts' + responses.add(responses.GET, + url, + json={'results': {'facts': {'fact1': 'val1', + 'fact2': 'val2', + } + }, + }, + status=200) + + 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) + + @responses.activate + def test_resolve_params(self): + url = 'http://localhost:3000/api/v2/hosts/10' + responses.add(responses.GET, + url, + json={'all_parameters': + [{'name': 'param1', + 'value': 'value1'}, + {'name': 'param2', + 'value': 'value2'}]}, + status=200) + + ret = self.inv._resolve_params({'id': 10}) + self.assertEqual(sorted(ret.items()), + 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) |