diff --git a/pytests/util/test_location.py b/pytests/util/test_location.py new file mode 100644 index 0000000..21dd2e2 --- /dev/null +++ b/pytests/util/test_location.py @@ -0,0 +1,57 @@ +import pytest +import json + +import util.location + + +@pytest.fixture +def urllib_req(mocker): + util.location.reset() + return mocker.patch("util.location.urllib.request") + + +@pytest.fixture +def primaryLocation(): + return { + "country": "Middle Earth", + "longitude": "10.0", + "latitude": "20.5", + "ip": "127.0.0.1", + } + + +@pytest.fixture +def secondaryLocation(): + return { + "country_name": "Rivia", + "longitude": "-10.0", + "latitude": "-23", + "ip": "127.0.0.6", + } + + +def test_primary_provider(urllib_req, primaryLocation): + urllib_req.urlopen.return_value.read.return_value = json.dumps(primaryLocation) + + assert util.location.country() == primaryLocation["country"] + assert util.location.coordinates() == ( + primaryLocation["latitude"], + primaryLocation["longitude"], + ) + assert util.location.public_ip() == primaryLocation["ip"] + + +def test_secondary_provider(mocker, urllib_req, secondaryLocation): + urlopen = mocker.MagicMock() + urlopen.read.return_value = json.dumps(secondaryLocation) + urllib_req.urlopen.side_effect = [RuntimeError(), urlopen] + + assert util.location.country() == secondaryLocation["country_name"] + assert util.location.coordinates() == ( + secondaryLocation["latitude"], + secondaryLocation["longitude"], + ) + assert util.location.public_ip() == secondaryLocation["ip"] + + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4