Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/GeoIp2/tests/Unit/GeoIp2Test.php')
-rw-r--r--plugins/GeoIp2/tests/Unit/GeoIp2Test.php135
1 files changed, 135 insertions, 0 deletions
diff --git a/plugins/GeoIp2/tests/Unit/GeoIp2Test.php b/plugins/GeoIp2/tests/Unit/GeoIp2Test.php
new file mode 100644
index 0000000000..6b67150ef0
--- /dev/null
+++ b/plugins/GeoIp2/tests/Unit/GeoIp2Test.php
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserCountry\tests\Unit;
+
+use Piwik\Container\StaticContainer;
+use Piwik\Plugins\GeoIp2\GeoIP2AutoUpdater;
+use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
+use Piwik\Plugins\UserCountry\LocationProvider;
+use Exception;
+
+class GeoIp2Test extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Test that redundant checks work.
+ *
+ * @group Plugins
+ */
+ public function testGeoIpUpdaterRedundantChecks()
+ {
+ LocationProvider::$providers = null;
+
+ // create empty ISP file
+ $this->createEmptyISPFile();
+
+ // run redundant checks
+ $updater = new Piwik_GeoIp2_GeoIP2AutoUpdater_publictest();
+ $updater->performRedundantDbChecks();
+
+ // check that files are renamed correctly
+ $this->checkBrokenGeoIPState();
+
+ // create empty file again & run checks again
+ $this->createEmptyISPFile();
+ $updater->performRedundantDbChecks();
+
+ // check that w/ broken files already there, redundant checks still work correctly
+ $this->checkBrokenGeoIPState();
+ }
+
+ /**
+ * @group Plugins
+ *
+ * @dataProvider getInvalidGeoIpUrlsToTest
+ */
+ public function testGeoIpDownloadInvalidUrl($url)
+ {
+ // unset translations, otherwise Exception message will be translated
+ StaticContainer::get('Piwik\Translation\Translator')->reset();
+
+ $updater = new Piwik_GeoIp2_GeoIP2AutoUpdater_publictest();
+ try {
+ $updater->downloadFile('loc', $url);
+ $this->fail("Downloading invalid url succeeded!");
+ } catch (Exception $ex) {
+ $this->assertEquals("GeoIp2_UnsupportedArchiveType", $ex->getMessage());
+ }
+ }
+
+ public function getInvalidGeoIpUrlsToTest()
+ {
+ return array(array("http://localhost/tests/resources/geoip.tar"),
+ array("http://localhost/tests/resources/geoip.tar.bz2"),
+ array("http://localhost/tests/resources/geoip.dat"));
+ }
+
+ protected $backUpNames;
+
+ public function setUp()
+ {
+ $this->backUpNames = GeoIp2::$dbNames;
+
+ GeoIp2::$dbNames = [
+ 'loc' => ['DBIP-City.mmdb'],
+ 'isp' => ['DBIP-ISP.mmdb']
+ ];
+ }
+
+ public function tearDown()
+ {
+ GeoIp2::$dbNames = $this->backUpNames;
+
+ $geoIpDirPath = PIWIK_INCLUDE_PATH . '/tests/lib/geoip-files';
+ $filesToRemove = array('DBIP-ISP.mmdb.broken', 'DBIP-ISP.mmdb');
+
+ foreach ($filesToRemove as $name) {
+ $path = $geoIpDirPath . '/' . $name;
+ if (file_exists($path)) {
+ @unlink($path);
+ }
+ }
+ }
+
+ private function createEmptyISPFile()
+ {
+ $geoIpDir = PIWIK_INCLUDE_PATH . '/tests/lib/geoip-files';
+
+ $fd = fopen($geoIpDir . '/DBIP-ISP.mmdb', 'w');
+ fclose($fd);
+ }
+
+ private function checkBrokenGeoIPState()
+ {
+ $geoIpDir = PIWIK_INCLUDE_PATH . '/tests/lib/geoip-files';
+
+ $this->assertFalse(file_exists($geoIpDir . '/DBIP-City.mmdb.broken'));
+
+ $this->assertFalse(file_exists($geoIpDir . '/DBIP-ISP.mmdb'));
+ $this->assertTrue(file_exists($geoIpDir . '/DBIP-ISP.mmdb.broken'));
+ }
+}
+
+class Piwik_GeoIp2_GeoIP2AutoUpdater_publictest extends GeoIP2AutoUpdater
+{
+ public function __construct()
+ {
+ // empty
+ }
+
+ // during tests do not call the Log::error or they will be displayed in the output
+ public function performRedundantDbChecks($logErrors = false)
+ {
+ parent::performRedundantDbChecks($logErrors);
+ }
+
+ public function downloadFile($type, $url)
+ {
+ parent::downloadFile($type, $url);
+ }
+}