44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
|
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
|