Skip to content

Commit

Permalink
MDL-77040 core: assert types of returned Geoplugin data, not values.
Browse files Browse the repository at this point in the history
The results we get from these tests are beyond our control, and are
unreliable for use in testing.

See also previous change 215cd2d in similar tests.
  • Loading branch information
paulholden committed Jan 26, 2023
1 parent 880462a commit 7f59718
Showing 1 changed file with 30 additions and 20 deletions.
50 changes: 30 additions & 20 deletions iplookup/tests/geoplugin_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,39 +26,49 @@
*/
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'));
}
}

0 comments on commit 7f59718

Please sign in to comment.