1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

[5.1.x] Fixed #35841 -- Restored support for DB-IP databases in GeoIP2.

Thanks Felix Farquharson for the report and Claude Paroz for the
review.

Regression in 40b5b1596f.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 3fad712a91 from main.
This commit is contained in:
Nick Pope
2024-10-15 09:48:59 +01:00
committed by Natalia
parent 434cf004b8
commit 51eb666758
6 changed files with 67 additions and 8 deletions

View File

@@ -12,3 +12,17 @@ Updates can be found in [this repository][1].
[0]: https://github.com/maxmind/MaxMind-DB/blob/main/LICENSE-MIT
[1]: https://github.com/maxmind/MaxMind-DB/tree/main/test-data
# DB-IP Lite Test Databases
The following test databases are provided under [this license][2]:
- `dbip-city-lite-test.mmdb`
- `dbip-country-lite-test.mmdb`
They have been modified to strip them down to a minimal dataset for testing.
Updates can be found at [this download page][3] from DB-IP.
[2]: https://creativecommons.org/licenses/by/4.0/
[3]: https://db-ip.com/db/lite.php

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -124,7 +124,8 @@ class GeoLite2Test(SimpleTestCase):
def test_country(self):
g = GeoIP2(city="<invalid>")
self.assertIs(g._metadata.database_type.endswith("Country"), True)
self.assertIs(g.is_city, False)
self.assertIs(g.is_country, True)
for query in self.query_values:
with self.subTest(query=query):
self.assertEqual(g.country(query), self.expected_country)
@@ -137,7 +138,8 @@ class GeoLite2Test(SimpleTestCase):
def test_country_using_city_database(self):
g = GeoIP2(country="<invalid>")
self.assertIs(g._metadata.database_type.endswith("City"), True)
self.assertIs(g.is_city, True)
self.assertIs(g.is_country, False)
for query in self.query_values:
with self.subTest(query=query):
self.assertEqual(g.country(query), self.expected_country)
@@ -150,7 +152,8 @@ class GeoLite2Test(SimpleTestCase):
def test_city(self):
g = GeoIP2(country="<invalid>")
self.assertIs(g._metadata.database_type.endswith("City"), True)
self.assertIs(g.is_city, True)
self.assertIs(g.is_country, False)
for query in self.query_values:
with self.subTest(query=query):
self.assertEqual(g.city(query), self.expected_city)
@@ -224,6 +227,27 @@ class GeoIP2Test(GeoLite2Test):
"""Non-free GeoIP2 databases are supported."""
@skipUnless(HAS_GEOIP2, "GeoIP2 is required.")
@override_settings(
GEOIP_CITY="dbip-city-lite-test.mmdb",
GEOIP_COUNTRY="dbip-country-lite-test.mmdb",
)
class DBIPLiteTest(GeoLite2Test):
"""DB-IP Lite databases are supported."""
expected_city = GeoLite2Test.expected_city | {
"accuracy_radius": None,
"city": "London (Shadwell)",
"latitude": 51.5181,
"longitude": -0.0714189,
"postal_code": None,
"region_code": None,
"time_zone": None,
# Kept for backward compatibility.
"region": None,
}
@skipUnless(HAS_GEOIP2, "GeoIP2 is required.")
class ErrorTest(SimpleTestCase):
def test_missing_path(self):