diff --git a/iplookup/tests/geoplugin_test.php b/iplookup/tests/geoplugin_test.php index 8b66e1e6d87..08167e34497 100644 --- a/iplookup/tests/geoplugin_test.php +++ b/iplookup/tests/geoplugin_test.php @@ -26,39 +26,49 @@ namespace core; */ class geoplugin_test extends \advanced_testcase { - public function setUp(): void { + /** + * Load required test libraries + */ + public static function setUpBeforeClass(): void { global $CFG; - require_once("$CFG->libdir/filelib.php"); - require_once("$CFG->dirroot/iplookup/lib.php"); + require_once("{$CFG->dirroot}/iplookup/lib.php"); + } + /** + * In order to execute this test PHPUNIT_LONGTEST should be defined as true in phpunit.xml or directly in config.php + */ + public function setUp(): void { if (!PHPUNIT_LONGTEST) { - // we do not want to DDOS their server, right? $this->markTestSkipped('PHPUNIT_LONGTEST is not defined'); } - - $this->resetAfterTest(); - - $CFG->geoipfile = ''; } - public function test_ipv4() { + /** + * Test IPv4 address + * + * @covers ::iplookup_find_location + */ + public function test_ipv4(): void { $result = iplookup_find_location('50.0.184.0'); - $this->assertEquals('array', gettype($result)); - $this->assertEquals('Santa Rosa', $result['city']); - $this->assertEqualsWithDelta(-122.7128, $result['longitude'], 0.1, 'Coordinates are out of accepted tolerance'); - $this->assertEqualsWithDelta(38.4354, $result['latitude'], 0.1, 'Coordinates are out of accepted tolerance'); + $this->assertIsArray($result); + $this->assertIsFloat($result['latitude']); + $this->assertIsFloat($result['longitude']); + $this->assertIsString($result['city']); + $this->assertIsString($result['country']); + $this->assertIsArray($result['title']); + $this->assertIsString($result['title'][0]); + $this->assertIsString($result['title'][1]); $this->assertNull($result['error']); - $this->assertEquals('array', gettype($result['title'])); - $this->assertEquals('Santa Rosa', $result['title'][0]); - $this->assertEquals('United States', $result['title'][1]); } - public function test_geoip_ipv6() { + /** + * Test IPv6 address (unsupported by Geoplugin) + * + * @covers ::iplookup_find_location + */ + public function test_ipv6(): void { $result = iplookup_find_location('2a01:8900:2:3:8c6c:c0db:3d33:9ce6'); - - $this->assertNotNull($result['error']); $this->assertEquals($result['error'], get_string('invalidipformat', 'error')); } } -