]> source.dussan.org Git - nextcloud-server.git/commitdiff
Properly cast type
authorLukas Reschke <lukas@owncloud.com>
Wed, 24 Feb 2016 18:49:03 +0000 (19:49 +0100)
committerLukas Reschke <lukas@owncloud.com>
Wed, 24 Feb 2016 18:58:41 +0000 (19:58 +0100)
The current logic is checking whether:

1. The returned value is a boolen
2. The returned value is a string and then matches for "true"

Since the config is now written to the database the data is now a string with the value "1" if HTTPS is set to true. Effectively this option was thus always disabled at the moment, falling back to plain HTTP.

This change casts the data to a boolean if it is defined as boolean.

Fixes https://github.com/owncloud/core/issues/22605
Fixes https://github.com/owncloud/core/issues/22016

apps/files_external/js/settings.js
apps/files_external/lib/storageconfig.php
apps/files_external/tests/storageconfigtest.php

index 26df203091e33512d63e99e1df553214b899a77e..cf4b27a7eabb41bd1d54812c3375d3cfb3a419f7 100644 (file)
@@ -859,6 +859,9 @@ MountConfigListView.prototype = _.extend({
                                var input = $(this);
                                var val = storageConfig.backendOptions[input.data('parameter')];
                                if (val !== undefined) {
+                                       if(input.is('input:checkbox')) {
+                                               input.prop('checked', val);
+                                       }
                                        input.val(storageConfig.backendOptions[input.data('parameter')]);
                                        highlightInput(input);
                                }
index 6f44b25a2e6478f825c45ffdc46c0990f51a343c..f853da53d15730deeb670f88cb6eaa67704fc428 100644 (file)
@@ -210,6 +210,20 @@ class StorageConfig implements \JsonSerializable {
         * @param array $backendOptions backend options
         */
        public function setBackendOptions($backendOptions) {
+               if($this->getBackend() instanceof  Backend) {
+                       $parameters = $this->getBackend()->getParameters();
+                       foreach($backendOptions as $key => $value) {
+                               if(isset($parameters[$key])) {
+                                       switch ($parameters[$key]->getType()) {
+                                               case \OCA\Files_External\Lib\DefinitionParameter::VALUE_BOOLEAN:
+                                                       $value = (bool)$value;
+                                                       break;
+                                       }
+                                       $backendOptions[$key] = $value;
+                               }
+                       }
+               }
+
                $this->backendOptions = $backendOptions;
        }
 
index d7f8d2b4d7de9af949792ce37440db9379411a52..60ec14dd08070543e5d20408300d7f25c3968e13 100644 (file)
@@ -30,6 +30,17 @@ class StorageConfigTest extends \Test\TestCase {
                $backend = $this->getMockBuilder('\OCA\Files_External\Lib\Backend\Backend')
                        ->disableOriginalConstructor()
                        ->getMock();
+               $parameter = $this->getMockBuilder('\OCA\Files_External\Lib\DefinitionParameter')
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $parameter
+                       ->expects($this->once())
+                       ->method('getType')
+                       ->willReturn(1);
+               $backend
+                       ->expects($this->once())
+                       ->method('getParameters')
+                       ->willReturn(['secure' => $parameter]);
                $backend->method('getIdentifier')
                        ->willReturn('storage::identifier');
 
@@ -43,7 +54,7 @@ class StorageConfigTest extends \Test\TestCase {
                $storageConfig->setMountPoint('test');
                $storageConfig->setBackend($backend);
                $storageConfig->setAuthMechanism($authMech);
-               $storageConfig->setBackendOptions(['user' => 'test', 'password' => 'password123']);
+               $storageConfig->setBackendOptions(['user' => 'test', 'password' => 'password123', 'secure' => '1']);
                $storageConfig->setPriority(128);
                $storageConfig->setApplicableUsers(['user1', 'user2']);
                $storageConfig->setApplicableGroups(['group1', 'group2']);
@@ -51,16 +62,17 @@ class StorageConfigTest extends \Test\TestCase {
 
                $json = $storageConfig->jsonSerialize();
 
-               $this->assertEquals(1, $json['id']);
-               $this->assertEquals('/test', $json['mountPoint']);
-               $this->assertEquals('storage::identifier', $json['backend']);
-               $this->assertEquals('auth::identifier', $json['authMechanism']);
-               $this->assertEquals('test', $json['backendOptions']['user']);
-               $this->assertEquals('password123', $json['backendOptions']['password']);
-               $this->assertEquals(128, $json['priority']);
-               $this->assertEquals(['user1', 'user2'], $json['applicableUsers']);
-               $this->assertEquals(['group1', 'group2'], $json['applicableGroups']);
-               $this->assertEquals(['preview' => false], $json['mountOptions']);
+               $this->assertSame(1, $json['id']);
+               $this->assertSame('/test', $json['mountPoint']);
+               $this->assertSame('storage::identifier', $json['backend']);
+               $this->assertSame('auth::identifier', $json['authMechanism']);
+               $this->assertSame('test', $json['backendOptions']['user']);
+               $this->assertSame('password123', $json['backendOptions']['password']);
+               $this->assertSame(true, $json['backendOptions']['secure']);
+               $this->assertSame(128, $json['priority']);
+               $this->assertSame(['user1', 'user2'], $json['applicableUsers']);
+               $this->assertSame(['group1', 'group2'], $json['applicableGroups']);
+               $this->assertSame(['preview' => false], $json['mountOptions']);
        }
 
 }