function ip2countryTestCase::testIPLookup in IP-based Determination of a Visitor's Country 6
Same name and namespace in other branches
- 7 tests/ip2country.test \ip2countryTestCase::testIpLookup()
 
Tests IP lookup for addresses in / not in the database.
File
- ./
ip2country.test, line 112  - Tests suite for the ip2country module.
 
Class
- ip2countryTestCase
 - Need 1 class for unit tests, 1 class for functional tests 1 function for DB tests because filling takes so long
 
Code
function testIPLookup() {
  ip2country_update_database('arin');
  $this
    ->assertTrue(($count = ip2country_get_count()) != 0, t('Database has been updated with @rows rows.', array(
    '@rows' => $count,
  )));
  // Real working IPs
  $ip_array = array(
    '125.29.33.201',
    '212.58.224.138',
    '184.51.240.110',
    '210.87.9.66',
    '93.184.216.119',
  );
  foreach ($ip_array as $ip_address) {
    // Test dotted quad string form of address
    $country = ip2country_get_country($ip_address);
    $this
      ->assertTrue($country, t('@ip found, resolved to @country.', array(
      '@ip' => $ip_address,
      '@country' => $country,
    )));
    // Test 32-bit unsigned long form of address
    $usl_country = ip2country_get_country(ip2long($ip_address));
    $this
      ->assertTrue($usl_country == $country, t('Unsigned long lookup found same country code.'));
    $this
      ->pass(t('Valid IP found in database.'));
  }
  // Invalid and reserved IPs
  $ip_array = array(
    '127.0.0.1',
    '358.1.1.0',
  );
  foreach ($ip_array as $ip_address) {
    $country = ip2country_get_country($ip_address);
    $this
      ->assertFalse($country, t('@ip not found in database.', array(
      '@ip' => $ip_address,
    )));
    $this
      ->pass(t('Invalid IP not found in database.'));
  }
  ip2country_empty_database();
  $this
    ->assertTrue(ip2country_get_count() == 0, t('Database is Empty.'));
}