import unittest import json import urllib.request import util.location class location(unittest.TestCase): def setUp(self): patcher = unittest.mock.patch("util.location.urllib.request") self.addCleanup(patcher.stop) self.request = patcher.start() util.location.reset() self.primary = { "country": "Middle Earth", "longitude": "10.0", "latitude": "20.5", "ip": "127.0.0.1", } self.secondary = { "country_name": "Rivia", "longitude": "-10.0", "latitude": "-23", "ip": "127.0.0.6", } def test_primary_provider(self): self.request.urlopen.return_value.read.return_value = json.dumps(self.primary) util.location.country() self.assertEqual(self.primary["country"], util.location.country()) self.assertEqual( (self.primary["latitude"], self.primary["longitude"]), util.location.coordinates(), ) self.assertEqual(self.primary["ip"], util.location.public_ip()) def test_secondary_provider(self): urlopen = unittest.mock.MagicMock() urlopen.read.return_value = json.dumps(self.secondary) self.request.urlopen.side_effect = [RuntimeError(), urlopen] self.assertEqual(self.secondary["country_name"], util.location.country()) self.assertEqual( (self.secondary["latitude"], self.secondary["longitude"]), util.location.coordinates(), ) self.assertEqual(self.secondary["ip"], util.location.public_ip()) # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4