diff --git a/phpunittests/autoload.php b/phpunittests/autoload.php new file mode 100644 index 00000000..8f41edfe --- /dev/null +++ b/phpunittests/autoload.php @@ -0,0 +1,10 @@ +assertEquals(Logger::getLogsFolder(), MANIACONTROL_PATH . 'logs' . DIRECTORY_SEPARATOR); + } +} diff --git a/phpunittests/core/ManiaControlTest.php b/phpunittests/core/ManiaControlTest.php new file mode 100644 index 00000000..c7e111fb --- /dev/null +++ b/phpunittests/core/ManiaControlTest.php @@ -0,0 +1,23 @@ +run(10); + + sleep(15); + + //$this->l + //$this->assertNull($maniaControl); + } + +/* public function testGetClient(){ + $maniaControl = new ManiaControl(); + $mcClient = $maniaControl->getClient(); + + //$maniaControl->connect(); + //$mpClient = new Maniaplanet\DedicatedServer\Connection(); + }*/ +} diff --git a/phpunittests/core/Update/PluginUpdateManagerTest.php b/phpunittests/core/Update/PluginUpdateManagerTest.php new file mode 100644 index 00000000..73a117dd --- /dev/null +++ b/phpunittests/core/Update/PluginUpdateManagerTest.php @@ -0,0 +1,41 @@ +getContent(); + + $this->assertJson($dataJson); + + $data = json_decode($dataJson); + + $this->assertEquals(8, $data[0]->id); + $this->assertEquals("https://download.maniacontrol.com/plugins/8_Dedimania_Plugin_v0.1.zip", $data[0]->currentVersion->url); + } + + public function testGetPluginUpdates() { + $maniaControl = new ManiaControl(); + $updateManager = $maniaControl->getUpdateManager(); + $pluginUpdateManager = $updateManager->getPluginUpdateManager(); + + //No Plugins Running so No new Updates + $this->assertFalse($pluginUpdateManager->getPluginsUpdates()); + + $maniaControl->run(5); + + $this->assertNotFalse($pluginUpdateManager->getPluginsUpdates()); + //TODO load Plugin manually and then test (could happen that no update is existing) + } +} diff --git a/phpunittests/core/Update/UpdateManagerTest.php b/phpunittests/core/Update/UpdateManagerTest.php new file mode 100644 index 00000000..6fd9945e --- /dev/null +++ b/phpunittests/core/Update/UpdateManagerTest.php @@ -0,0 +1,147 @@ +getBuildDateFileName(); + + if (!file_exists($fileName)) { + $this->assertTrue($updateManager->setBuildDate("BuildDateTest-6543210")); + } + + $this->assertFileExists($fileName); + + $buildDate = $updateManager->getBuildDate(); + $this->assertStringEqualsFile($fileName, $buildDate); + + $this->assertTrue($updateManager->setBuildDate("BuildDateTest-0123456")); + $this->assertEquals($updateManager->getBuildDate(), "BuildDateTest-0123456"); + + $this->assertStringEqualsFile($fileName, $updateManager->getBuildDate()); + } + + public function testGetPluginUpdateManagerTest() { + $maniaControl = new ManiaControl(); + $updateManager = new UpdateManager($maniaControl); + + $pluginUpdateManager = $updateManager->getPluginUpdateManager(); + + $this->assertInstanceOf("ManiaControl\\Update\\PluginUpdateManager", $pluginUpdateManager); + } + + public function testIsNightlyUpdateChannel() { + $maniaControl = new ManiaControl(); + $updateManager = new UpdateManager($maniaControl); + + $this->assertTrue($updateManager->isNightlyUpdateChannel(UpdateManager::CHANNEL_NIGHTLY)); + + $isNightly = $updateManager->isNightlyUpdateChannel(null); + + $this->assertEquals($updateManager->isNightlyUpdateChannel($updateManager->getCurrentUpdateChannelSetting()), $isNightly); + } + + public function testCheckCoreUpdateAsync() { + $maniaControl = new ManiaControl(); + + $updateManager = $maniaControl->getUpdateManager(); + + $called = false; + $function = function ($updateData) use (&$called) { + $called = true; + $this->assertNotNull($updateData); + $this->assertObjectHasAttribute("version", $updateData); + }; + + $updateManager->checkCoreUpdateAsync($function); + + $maniaControl->run(6); + + $this->assertTrue($called); + } + + public function testPerformCoreUpdate() { + $maniaControl = new ManiaControl(); + $updateManager = $maniaControl->getUpdateManager(); + + //No Update Data Available -> so Fail + $this->assertFalse($updateManager->performCoreUpdate()); + + //Should Also Fail with a Player + $player = new Player($maniaControl, true); + $this->assertFalse($updateManager->performCoreUpdate($player)); + + $message = '[ERROR] Update failed: No update Data available!'; + $message = '[' . date('d-M-Y H:i:s e') . '] ' . $message . PHP_EOL; + + //Check message + $this->assertContains($message, $this->getActualOutput()); + + $dataJson = '[{"id":"260","version":"0.166","channel":"nightly","min_dedicated_build":"2014-04-02_18_00","release_date":"2017-03-16 21:57:40","url":"https:\/\/download.maniacontrol.com\/nightly\/ManiaControl_nightly_0-166.zip"}]'; + + //Create and Test Core Update Data + $updateData = new UpdateData(json_decode($dataJson)[0]); + + $this->assertEquals("0.166", $updateData->version); + $this->assertEquals("nightly", $updateData->channel); + $this->assertEquals("2014-04-02_18_00", $updateData->minDedicatedBuild); + $this->assertEquals("2017-03-16 21:57:40", $updateData->releaseDate); + $this->assertEquals("https://download.maniacontrol.com/nightly/ManiaControl_nightly_0-166.zip", $updateData->url); + + $updateManager->setCoreUpdateData($updateData); + + //Methods should return its non closure success + $this->assertTrue($updateManager->performCoreUpdate($player)); + + $maniaControl->run(5); + + //Check if Tempfolder got Deleted + $tempFolder = MANIACONTROL_PATH . 'temp' . DIRECTORY_SEPARATOR; + $this->assertFileNotExists($tempFolder); + + //Check if UpdateFileName got Deleted + $updateFileName = $tempFolder . basename($updateData->url); + $this->assertFileNotExists($updateFileName); + + $fileName = $this->getBuildDateFileName(); + $this->assertStringEqualsFile($fileName, $updateData->releaseDate); + $this->assertEquals($updateData->releaseDate, $updateManager->getBuildDate()); + $this->assertContains("Update finished!", $this->getActualOutput()); + } + + public function testPerformCoreUpdateFailUrl() { + $maniaControl = new ManiaControl(); + $updateManager = $maniaControl->getUpdateManager(); + + $dataJson = '[{"id":"260","version":"0.166","channel":"nightly","min_dedicated_build":"2014-04-02_18_00","release_date":"2017-03-16 21:57:40","url":"https:\/\/download.maniacontrol.com\/nightly\/ManiaControl_nightly_0-166.zip"}]'; + + //Create and Test Core Update Data + $updateData = new UpdateData(json_decode($dataJson)[0]); + $updateData->url = "Invalid_URL"; + $updateManager->setCoreUpdateData($updateData); + + $updateManager->performCoreUpdate(); + + $maniaControl->run(5); + + $player = new Player($maniaControl, true); + $this->assertTrue($updateManager->performCoreUpdate($player)); + $this->assertContains("[ERROR] Update failed: Couldn't load Update zip! Could not resolve host: Invalid_URL", $this->getActualOutput()); + } + + //TODO real test with download and unpack in a certain dir +} diff --git a/phpunittests/phpunit.xml b/phpunittests/phpunit.xml new file mode 100644 index 00000000..252f085e --- /dev/null +++ b/phpunittests/phpunit.xml @@ -0,0 +1,25 @@ + + + + + core + + + + + ../core + + + + + + + + + + + + + + \ No newline at end of file