58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
|
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
|