summaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/AppFramework/Http/RequestTest.php183
1 files changed, 183 insertions, 0 deletions
diff --git a/tests/lib/AppFramework/Http/RequestTest.php b/tests/lib/AppFramework/Http/RequestTest.php
index 78f4f80f8be..78e656f5fc3 100644
--- a/tests/lib/AppFramework/Http/RequestTest.php
+++ b/tests/lib/AppFramework/Http/RequestTest.php
@@ -2,6 +2,7 @@
/**
* @copyright 2013 Thomas Tanghus (thomas@tanghus.net)
* @copyright 2016 Lukas Reschke lukas@owncloud.com
+ * @copyright 2022 Stanimir Bozhilov (stanimir@audriga.com)
*
* This file is licensed under the Affero General Public License version 3 or
* later.
@@ -207,6 +208,54 @@ class RequestTest extends \Test\TestCase {
$this->assertSame('Joey', $request['nickname']);
}
+ public function testScimJsonPost() {
+ global $data;
+ $data = '{"userName":"testusername", "displayName":"Example User"}';
+ $vars = [
+ 'method' => 'POST',
+ 'server' => ['CONTENT_TYPE' => 'application/scim+json; utf-8']
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('POST', $request->method);
+ $result = $request->post;
+ $this->assertSame('testusername', $result['userName']);
+ $this->assertSame('Example User', $result['displayName']);
+ $this->assertSame('Example User', $request->params['displayName']);
+ $this->assertSame('Example User', $request['displayName']);
+ }
+
+ public function testCustomJsonPost() {
+ global $data;
+ $data = '{"propertyA":"sometestvalue", "propertyB":"someothertestvalue"}';
+
+ // Note: the content type used here is fictional and intended to check if the regex for JSON content types works fine
+ $vars = [
+ 'method' => 'POST',
+ 'server' => ['CONTENT_TYPE' => 'application/custom-type+json; utf-8']
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('POST', $request->method);
+ $result = $request->post;
+ $this->assertSame('sometestvalue', $result['propertyA']);
+ $this->assertSame('someothertestvalue', $result['propertyB']);
+ }
+
public function notJsonDataProvider() {
return [
['this is not valid json'],
@@ -239,6 +288,48 @@ class RequestTest extends \Test\TestCase {
// ensure there's no error attempting to decode the content
}
+ public function testNotScimJsonPost() {
+ global $data;
+ $data = 'this is not valid scim json';
+ $vars = [
+ 'method' => 'POST',
+ 'server' => ['CONTENT_TYPE' => 'application/scim+json; utf-8']
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertEquals('POST', $request->method);
+ $result = $request->post;
+ // ensure there's no error attempting to decode the content
+ }
+
+ public function testNotCustomJsonPost() {
+ global $data;
+ $data = 'this is not valid json';
+ $vars = [
+ 'method' => 'POST',
+ 'server' => ['CONTENT_TYPE' => 'application/custom-type+json; utf-8']
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertEquals('POST', $request->method);
+ $result = $request->post;
+ // ensure there's no error attempting to decode the content
+ }
+
public function testPatch() {
global $data;
$data = http_build_query(['name' => 'John Q. Public', 'nickname' => 'Joey'], '', '&');
@@ -309,6 +400,98 @@ class RequestTest extends \Test\TestCase {
$this->assertSame(null, $result['nickname']);
}
+ public function testScimJsonPatchAndPut() {
+ global $data;
+
+ // PUT content
+ $data = '{"userName": "sometestusername", "displayName": "Example User"}';
+ $vars = [
+ 'method' => 'PUT',
+ 'server' => ['CONTENT_TYPE' => 'application/scim+json; utf-8'],
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('PUT', $request->method);
+ $result = $request->put;
+
+ $this->assertSame('sometestusername', $result['userName']);
+ $this->assertSame('Example User', $result['displayName']);
+
+ // PATCH content
+ $data = '{"userName": "sometestusername", "displayName": null}';
+ $vars = [
+ 'method' => 'PATCH',
+ 'server' => ['CONTENT_TYPE' => 'application/scim+json; utf-8'],
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('PATCH', $request->method);
+ $result = $request->patch;
+
+ $this->assertSame('sometestusername', $result['userName']);
+ $this->assertSame(null, $result['displayName']);
+ }
+
+ public function testCustomJsonPatchAndPut() {
+ global $data;
+
+ // PUT content
+ $data = '{"propertyA": "sometestvalue", "propertyB": "someothertestvalue"}';
+ $vars = [
+ 'method' => 'PUT',
+ 'server' => ['CONTENT_TYPE' => 'application/custom-type+json; utf-8'],
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('PUT', $request->method);
+ $result = $request->put;
+
+ $this->assertSame('sometestvalue', $result['propertyA']);
+ $this->assertSame('someothertestvalue', $result['propertyB']);
+
+ // PATCH content
+ $data = '{"propertyA": "sometestvalue", "propertyB": null}';
+ $vars = [
+ 'method' => 'PATCH',
+ 'server' => ['CONTENT_TYPE' => 'application/custom-type+json; utf-8'],
+ ];
+
+ $request = new Request(
+ $vars,
+ $this->requestId,
+ $this->config,
+ $this->csrfTokenManager,
+ $this->stream
+ );
+
+ $this->assertSame('PATCH', $request->method);
+ $result = $request->patch;
+
+ $this->assertSame('sometestvalue', $result['propertyA']);
+ $this->assertSame(null, $result['propertyB']);
+ }
+
public function testPutStream() {
global $data;
$data = file_get_contents(__DIR__ . '/../../../data/testimage.png');