summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-04-13 09:43:45 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-04-13 09:43:45 +0200
commit906b6b7337b7cd8922c0b1287f25bf03fff5c471 (patch)
treeb1ffd4e5dd9ba11b2fc80790cd3d6b28214b05de
parent75adee1ebd088819d6c3737bd7069419f268bf0d (diff)
downloadnextcloud-server-906b6b7337b7cd8922c0b1287f25bf03fff5c471.tar.gz
nextcloud-server-906b6b7337b7cd8922c0b1287f25bf03fff5c471.zip
Prevent php message: "Trying to get property of non-object at /xxx/lib/private/ocsclient.php#282"
-rw-r--r--lib/private/ocsclient.php3
-rw-r--r--tests/lib/ocsclienttest.php (renamed from tests/lib/OCSClientTest.php)45
2 files changed, 48 insertions, 0 deletions
diff --git a/lib/private/ocsclient.php b/lib/private/ocsclient.php
index 84469cb5e0d..b00772fb799 100644
--- a/lib/private/ocsclient.php
+++ b/lib/private/ocsclient.php
@@ -262,6 +262,9 @@ class OCSClient {
}
$tmp = $data->data->content;
+ if (is_null($tmp)) {
+ return null;
+ }
$app = [];
$app['id'] = (int)$tmp->id;
diff --git a/tests/lib/OCSClientTest.php b/tests/lib/ocsclienttest.php
index fa3f1fe7848..f4bf1536291 100644
--- a/tests/lib/OCSClientTest.php
+++ b/tests/lib/ocsclienttest.php
@@ -773,6 +773,51 @@ class OCSClientTest extends \Test\TestCase {
];
$this->assertSame($expected, $this->ocsClient->getApplication('MyId'));
}
+ public function testGetApplicationEmptyXml() {
+ $this->config
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('appstoreenabled', true)
+ ->will($this->returnValue(true));
+ $this->config
+ ->expects($this->at(1))
+ ->method('getSystemValue')
+ ->with('appstoreurl', 'https://api.owncloud.com/v1')
+ ->will($this->returnValue('https://api.owncloud.com/v1'));
+
+ $response = $this->getMock('\OCP\Http\Client\IResponse');
+ $response
+ ->expects($this->once())
+ ->method('getBody')
+ ->will($this->returnValue('<?xml version="1.0"?>
+ <ocs>
+ <meta>
+ <status>ok</status>
+ <statuscode>100</statuscode>
+ <message></message>
+ </meta>
+ </ocs>
+ '));
+
+ $client = $this->getMock('\OCP\Http\Client\IClient');
+ $client
+ ->expects($this->once())
+ ->method('get')
+ ->with(
+ 'https://api.owncloud.com/v1/content/data/MyId',
+ [
+ 'timeout' => 5,
+ ]
+ )
+ ->will($this->returnValue($response));
+
+ $this->clientService
+ ->expects($this->once())
+ ->method('newClient')
+ ->will($this->returnValue($client));
+
+ $this->assertSame(null, $this->ocsClient->getApplication('MyId'));
+ }
public function testGetApplicationDownloadDisabledAppStore() {
$this->config