Merge pull request #24983 from owncloud/issue-23776-do-not-allow-boolean-user-config
Do not allow to store boolean configs, they behave unexpected on postgres
This commit is contained in:
commit
ed92f4c427
5 changed files with 30 additions and 5 deletions
|
@ -154,7 +154,7 @@ class AllConfig implements \OCP\IConfig {
|
|||
*
|
||||
* @param string $appName the appName that we want to store the value under
|
||||
* @param string $key the key of the value, under which will be saved
|
||||
* @param string $value the value that should be stored
|
||||
* @param string|float|int $value the value that should be stored
|
||||
*/
|
||||
public function setAppValue($appName, $key, $value) {
|
||||
\OC::$server->getAppConfig()->setValue($appName, $key, $value);
|
||||
|
@ -198,11 +198,16 @@ class AllConfig implements \OCP\IConfig {
|
|||
* @param string $userId the userId of the user that we want to store the value under
|
||||
* @param string $appName the appName that we want to store the value under
|
||||
* @param string $key the key under which the value is being stored
|
||||
* @param string $value the value that you want to store
|
||||
* @param string|float|int $value the value that you want to store
|
||||
* @param string $preCondition only update if the config value was previously the value passed as $preCondition
|
||||
* @throws \OCP\PreConditionNotMetException if a precondition is specified and is not met
|
||||
* @throws \UnexpectedValueException when trying to store an unexpected value
|
||||
*/
|
||||
public function setUserValue($userId, $appName, $key, $value, $preCondition = null) {
|
||||
if (!is_int($value) && !is_float($value) && !is_string($value)) {
|
||||
throw new \UnexpectedValueException('Only integers, floats and strings are allowed as value');
|
||||
}
|
||||
|
||||
// TODO - FIXME
|
||||
$this->fixDIInit();
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ class AppConfig implements IAppConfig {
|
|||
*
|
||||
* @param string $app app
|
||||
* @param string $key key
|
||||
* @param string $value value
|
||||
* @param string|float|int $value value
|
||||
* @return bool True if the value was inserted or updated, false if the value was the same
|
||||
*/
|
||||
public function setValue($app, $key, $value) {
|
||||
|
|
|
@ -88,7 +88,7 @@ interface IAppConfig {
|
|||
* sets a value in the appconfig
|
||||
* @param string $app app
|
||||
* @param string $key key
|
||||
* @param string $value value
|
||||
* @param string|float|int $value value
|
||||
* @deprecated 8.0.0 use method setAppValue of \OCP\IConfig
|
||||
*
|
||||
* Sets a value. If the key did not exist before it will be created.
|
||||
|
|
|
@ -104,7 +104,7 @@ interface IConfig {
|
|||
* Writes a new app wide value
|
||||
*
|
||||
* @param string $appName the appName that we want to store the value under
|
||||
* @param string $key the key of the value, under which will be saved
|
||||
* @param string|float|int $key the key of the value, under which will be saved
|
||||
* @param string $value the value that should be stored
|
||||
* @return void
|
||||
* @since 6.0.0
|
||||
|
@ -149,6 +149,7 @@ interface IConfig {
|
|||
* @param string $value the value that you want to store
|
||||
* @param string $preCondition only update if the config value was previously the value passed as $preCondition
|
||||
* @throws \OCP\PreConditionNotMetException if a precondition is specified and is not met
|
||||
* @throws \UnexpectedValueException when trying to store an unexpected value
|
||||
* @since 6.0.0 - parameter $precondition was added in 8.0.0
|
||||
*/
|
||||
public function setUserValue($userId, $appName, $key, $value, $preCondition = null);
|
||||
|
|
|
@ -123,6 +123,25 @@ class AllConfigTest extends \Test\TestCase {
|
|||
$config->deleteUserValue('userPreCond', 'appPreCond', 'keyPreCond');
|
||||
}
|
||||
|
||||
public function dataSetUserValueUnexpectedValue() {
|
||||
return [
|
||||
[true],
|
||||
[false],
|
||||
[null],
|
||||
[new \stdClass()],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataSetUserValueUnexpectedValue
|
||||
* @param mixed $value
|
||||
* @expectedException \UnexpectedValueException
|
||||
*/
|
||||
public function testSetUserValueUnexpectedValue($value) {
|
||||
$config = $this->getConfig();
|
||||
$config->setUserValue('userSetBool', 'appSetBool', 'keySetBool', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \OCP\PreConditionNotMetException
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue