mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 13:38:32 +01:00
MDL-67593 core_iplookup: use MaxMind test database in unit tests
Instead of downloading a live database (now not available publicly) use a local test database.
This commit is contained in:
parent
7850f76a93
commit
b145fe216c
BIN
iplookup/tests/fixtures/GeoIP2-City-Test.mmdb
vendored
Normal file
BIN
iplookup/tests/fixtures/GeoIP2-City-Test.mmdb
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
10
iplookup/tests/fixtures/README.txt
vendored
Normal file
10
iplookup/tests/fixtures/README.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
GeoIP2-City-Test.mmdb:
|
||||
Copyright: maxmind (github.com/maxmind)
|
||||
|
||||
https://github.com/maxmind/MaxMind-DB/blob/master/test-data/GeoIP2-City-Test.mmdb
|
||||
|
||||
Licence: Creative Commons Attribution-ShareAlike 3.0 Unported License
|
||||
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
No changes have been made to this file.
|
@ -36,56 +36,15 @@ require_once("{$CFG->dirroot}/iplookup/lib.php");
|
||||
*/
|
||||
class core_iplookup_geoip_testcase extends advanced_testcase {
|
||||
public function setUp() {
|
||||
if (!PHPUNIT_LONGTEST) {
|
||||
// These tests are intensive and required downloads.
|
||||
$this->markTestSkipped('PHPUNIT_LONGTEST is not defined');
|
||||
}
|
||||
|
||||
$this->resetAfterTest();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Setup the GeoIP2File system.
|
||||
*/
|
||||
public function setup_geoip2file() {
|
||||
global $CFG;
|
||||
|
||||
// Store the file somewhere where it won't be wiped out..
|
||||
$gzfile = "$CFG->dataroot/phpunit/geoip/GeoLite2-City.mmdb.gz";
|
||||
check_dir_exists(dirname($gzfile));
|
||||
if (file_exists($gzfile) and (filemtime($gzfile) < time() - 60*60*24*30)) {
|
||||
// Delete file if older than 1 month.
|
||||
unlink($gzfile);
|
||||
}
|
||||
|
||||
if (!file_exists($gzfile)) {
|
||||
download_file_content('http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz',
|
||||
null, null, false, 300, 20, false, $gzfile);
|
||||
}
|
||||
|
||||
$this->assertTrue(file_exists($gzfile));
|
||||
|
||||
$geoipfile = str_replace('.gz', '', $gzfile);
|
||||
|
||||
// Open our files (in binary mode).
|
||||
$file = gzopen($gzfile, 'rb');
|
||||
$geoipfilebuf = fopen($geoipfile, 'wb');
|
||||
|
||||
// Keep repeating until the end of the input file.
|
||||
while (!gzeof($file)) {
|
||||
// Read buffer-size bytes.
|
||||
// Both fwrite and gzread and binary-safe.
|
||||
fwrite($geoipfilebuf, gzread($file, 4096));
|
||||
}
|
||||
|
||||
// Files are done, close files.
|
||||
fclose($geoipfilebuf);
|
||||
gzclose($file);
|
||||
|
||||
$this->assertTrue(file_exists($geoipfile));
|
||||
|
||||
$CFG->geoip2file = $geoipfile;
|
||||
$CFG->geoip2file = "$CFG->dirroot/iplookup/tests/fixtures/GeoIP2-City-Test.mmdb";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -121,9 +80,8 @@ class core_iplookup_geoip_testcase extends advanced_testcase {
|
||||
*/
|
||||
public function ip_provider() {
|
||||
return [
|
||||
'IPv4: Sample suggested by maxmind themselves' => ['24.24.24.24'],
|
||||
'IPv4: github.com' => ['192.30.255.112'],
|
||||
'IPv6: UCLA' => ['2607:f010:3fe:fff1::ff:fe00:25'],
|
||||
'IPv4: IPV4 test' => ['81.2.69.142'],
|
||||
'IPv6: IPV6 test' => ['2001:252:1::1:1:1'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -27,4 +27,4 @@ unzip v1.4.1.zip
|
||||
mv GeoIP2-php-2.9.0/src/ /path/to/moodle/lib/maxmind/GeoIp2/
|
||||
mv MaxMind-DB-Reader-php-1.4.1/src/MaxMind/ /path/to/moodle/lib/maxmind/MaxMind/
|
||||
|
||||
4) Run unit tests on iplookup/tests/geoip_test.php with PHPUNIT_LONGTEST defined.
|
||||
4) Run unit tests on iplookup/tests/geoip_test.php.
|
||||
|
Loading…
x
Reference in New Issue
Block a user