summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-04-13 10:30:31 +0200
committerMorris Jobke <hey@morrisjobke.de>2015-04-13 10:30:31 +0200
commitc3fbc2b6fd09bb5b94112da9248cae28d6ef85e3 (patch)
tree4cfed4ffef8eef8e9bdaa9defd3e22eb90cce331
parent0a72e66e9feaf555c485f312de1cd3377aeb6a9f (diff)
parent906b6b7337b7cd8922c0b1287f25bf03fff5c471 (diff)
downloadnextcloud-server-c3fbc2b6fd09bb5b94112da9248cae28d6ef85e3.tar.gz
nextcloud-server-c3fbc2b6fd09bb5b94112da9248cae28d6ef85e3.zip
Merge pull request #15563 from owncloud/fix-try-getting-propert-of-non-object-ocsclient
Prevent php message: "Trying to get property of non-object at /xxx/lib/p...
-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