diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-04-13 10:30:31 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-04-13 10:30:31 +0200 |
commit | c3fbc2b6fd09bb5b94112da9248cae28d6ef85e3 (patch) | |
tree | 4cfed4ffef8eef8e9bdaa9defd3e22eb90cce331 | |
parent | 0a72e66e9feaf555c485f312de1cd3377aeb6a9f (diff) | |
parent | 906b6b7337b7cd8922c0b1287f25bf03fff5c471 (diff) | |
download | nextcloud-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.php | 3 | ||||
-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 |