1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-05-11 04:34:06 +02:00
Nextcloud-News/tests/Unit/Config/ConfigTest.php
2016-07-23 21:24:54 +02:00

231 lines
7.7 KiB
PHP

<?php
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Alessandro Cosentino <cosenal@gmail.com>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Alessandro Cosentino 2012
* @copyright Bernhard Posselt 2012, 2014
*/
namespace OCA\News\Config;
use PHPUnit_Framework_TestCase;
class ConfigTest extends PHPUnit_Framework_TestCase {
private $fileSystem;
private $config;
private $configPath;
private $loggerParams;
public function setUp() {
$this->logger = $this->getMockBuilder(
'OCP\ILogger')
->disableOriginalConstructor()
->getMock();
$this->fileSystem = $this->getMockBuilder('OCP\Files\Folder')->getMock();
$this->loggerParams = ['hi'];
$this->config = new Config(
$this->fileSystem, $this->logger, $this->loggerParams
);
$this->configPath = 'config.json';
}
public function testDefaults() {
$this->assertEquals(60, $this->config->getAutoPurgeMinimumInterval());
$this->assertEquals(200, $this->config->getAutoPurgeCount());
$this->assertEquals(10, $this->config->getMaxRedirects());
$this->assertEquals(60, $this->config->getFeedFetcherTimeout());
$this->assertEquals(true, $this->config->getUseCronUpdates());
$this->assertEquals('', $this->config->getExploreUrl());
$this->assertEquals(1024*1024*100, $this->config->getMaxSize());
}
public function testRead () {
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('getContent')
->will($this->returnValue(
'autoPurgeCount = 3' . "\n" . 'useCronUpdates = true'
));
$this->config->read($this->configPath);
$this->assertSame(3, $this->config->getAutoPurgeCount());
$this->assertSame(true, $this->config->getUseCronUpdates());
}
public function testReadIgnoresVeryLowPurgeInterval () {
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('getContent')
->will($this->returnValue('autoPurgeMinimumInterval = 59'));
$this->config->read($this->configPath);
$this->assertSame(60, $this->config->getAutoPurgeMinimumInterval());
}
public function testReadBool () {
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('getContent')
->will($this->returnValue(
'autoPurgeCount = 3' . "\n" . 'useCronUpdates = false')
);
$this->config->read($this->configPath);
$this->assertSame(3, $this->config->getAutoPurgeCount());
$this->assertSame(false, $this->config->getUseCronUpdates());
}
public function testReadLogsInvalidValue() {
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('getContent')
->will($this->returnValue('autoPurgeCounts = 3'));
$this->logger->expects($this->once())
->method('warning')
->with($this->equalTo('Configuration value "autoPurgeCounts" ' .
'does not exist. Ignored value.'),
$this->equalTo($this->loggerParams));
$this->config->read($this->configPath);
}
public function testReadLogsInvalidINI() {
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('getContent')
->will($this->returnValue(''));
$this->logger->expects($this->once())
->method('warning')
->with($this->equalTo('Configuration invalid. Ignoring values.'),
$this->equalTo($this->loggerParams));
$this->config->read($this->configPath);
}
public function testWrite () {
$json = 'autoPurgeMinimumInterval = 60' . "\n" .
'autoPurgeCount = 3' . "\n" .
'maxRedirects = 10' . "\n" .
'maxSize = 399' . "\n" .
'exploreUrl = http://google.de' . "\n" .
'feedFetcherTimeout = 60' . "\n" .
'useCronUpdates = true';
$this->config->setAutoPurgeCount(3);
$this->config->setMaxSize(399);
$this->config->setExploreUrl('http://google.de');
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('putContent')
->with($this->equalTo($json));
$this->config->write($this->configPath);
}
public function testReadingNonExistentConfigWillWriteDefaults() {
$this->fileSystem->expects($this->once())
->method('nodeExists')
->with($this->equalTo($this->configPath))
->will($this->returnValue(false));
$this->config->setUseCronUpdates(false);
$json = 'autoPurgeMinimumInterval = 60' . "\n" .
'autoPurgeCount = 200' . "\n" .
'maxRedirects = 10' . "\n" .
'maxSize = 104857600' . "\n" .
'exploreUrl = ' . "\n" .
'feedFetcherTimeout = 60' . "\n" .
'useCronUpdates = false';
$this->fileSystem->expects($this->once())
->method('newFile')
->with($this->equalTo($this->configPath));
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$this->fileSystem->expects($this->once())
->method('get')
->with($this->equalTo($this->configPath))
->will($this->returnValue($file));
$file->expects($this->once())
->method('putContent')
->with($this->equalTo($json));
$this->config->read($this->configPath, true);
}
public function testNoLowMinimumAutoPurgeInterval() {
$this->config->setAutoPurgeMinimumInterval(59);
$interval = $this->config->getAutoPurgeMinimumInterval();
$this->assertSame(60, $interval);
}
public function testMinimumAutoPurgeInterval() {
$this->config->setAutoPurgeMinimumInterval(61);
$interval = $this->config->getAutoPurgeMinimumInterval();
$this->assertSame(61, $interval);
}
public function testMaxRedirects() {
$this->config->setMaxRedirects(21);
$redirects = $this->config->getMaxRedirects();
$this->assertSame(21, $redirects);
}
public function testFeedFetcherTimeout() {
$this->config->setFeedFetcherTimeout(2);
$timout = $this->config->getFeedFetcherTimeout();
$this->assertSame(2, $timout);
}
}