summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2017-07-04 11:31:38 +0200
committerFlorian Pritz <bluewind@xinu.at>2017-07-04 12:10:44 +0200
commit9bdf0973b337cbf73287422cc5fdceabc8703e61 (patch)
treefb02b08b50a33e39229e4d0cfddec15b36852942 /application
parent0ce11c1416c0bce491952410e791f7ca6cfad2dd (diff)
API: Fix return type of empty values in file/history
If the array is not casted to a object, json_encode will encode it as [] if empty, but {} if it contains data. Always return an object by casting the array to an object if it is empty. Fixes #15 Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application')
-rw-r--r--application/controllers/api/v2/file.php7
-rw-r--r--application/test/Test.php6
-rw-r--r--application/test/tests/api_v2/common.php4
-rw-r--r--application/test/tests/api_v2/test_history.php10
4 files changed, 24 insertions, 3 deletions
diff --git a/application/controllers/api/v2/file.php b/application/controllers/api/v2/file.php
index 6f95d5525..5dedcd508 100644
--- a/application/controllers/api/v2/file.php
+++ b/application/controllers/api/v2/file.php
@@ -65,6 +65,13 @@ class file extends \controllers\api\api_controller {
unset($history['multipaste_items'][$key]['items'][$inner_key]['sort_order']);
}
}
+
+ foreach (array("items", "multipaste_items") as $key) {
+ if (empty($history[$key])) {
+ $history[$key] = (object) array();
+ }
+ }
+
return $history;
}
diff --git a/application/test/Test.php b/application/test/Test.php
index 33278436b..b8052fbba 100644
--- a/application/test/Test.php
+++ b/application/test/Test.php
@@ -90,10 +90,14 @@ abstract class Test {
// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value
// Source: http://stackoverflow.com/a/9802854/953022
- protected function CallAPI($method, $url, $data = false)
+ protected function CallAPI($method, $url, $data = false, $return_json = false)
{
$result = $this->SendHTTPRequest($method, $url, $data);
+ if ($return_json) {
+ return $result;
+ }
+
$json = json_decode($result, true);
if ($json === NULL) {
$this->t->fail("json decode");
diff --git a/application/test/tests/api_v2/common.php b/application/test/tests/api_v2/common.php
index dbef3cc9c..103e156a8 100644
--- a/application/test/tests/api_v2/common.php
+++ b/application/test/tests/api_v2/common.php
@@ -53,8 +53,8 @@ class common extends \test\Test {
return $this->createApikey($userid, $access_level);
}
- protected function callEndpoint($verb, $endpoint, $data)
+ protected function callEndpoint($verb, $endpoint, $data, $return_json = false)
{
- return $this->CallAPI($verb, "$this->server_url/api/v2.0.0/$endpoint", $data);
+ return $this->CallAPI($verb, "$this->server_url/api/v2.0.0/$endpoint", $data, $return_json);
}
}
diff --git a/application/test/tests/api_v2/test_history.php b/application/test/tests/api_v2/test_history.php
index 3a168cafa..f09aab9bb 100644
--- a/application/test/tests/api_v2/test_history.php
+++ b/application/test/tests/api_v2/test_history.php
@@ -31,6 +31,16 @@ class test_history extends common {
$this->t->is($ret["data"]["total_size"], "0", "total_size = 0 since no uploads");
}
+ public function test_history_empty_json_structure()
+ {
+ $apikey = $this->createUserAndApikey();
+ $ret = $this->CallEndpoint("POST", "file/history", array(
+ "apikey" => $apikey,
+ ), true);
+
+ $this->t->is($ret, '{"status":"success","data":{"items":{},"multipaste_items":{},"total_size":"0"}}', "empty lists should be json objects, not arrays");
+ }
+
public function test_history_notEmptyAfterUploadSameMD5()
{
$apikey = $this->createUserAndApikey();