From a491348d442ab8e6cd2fa403d4365cdad78e52ce Mon Sep 17 00:00:00 2001
From: Frédéric Guillot <fred@kanboard.net>
Date: Thu, 21 Jun 2018 14:13:41 -0700
Subject: Vendoring deprecated composer libs

---
 libs/jsonrpc/tests/Response/HeaderMockTest.php     |  25 ++++
 .../jsonrpc/tests/Response/ResponseBuilderTest.php | 151 +++++++++++++++++++++
 libs/jsonrpc/tests/Response/ResponseParserTest.php | 100 ++++++++++++++
 3 files changed, 276 insertions(+)
 create mode 100644 libs/jsonrpc/tests/Response/HeaderMockTest.php
 create mode 100644 libs/jsonrpc/tests/Response/ResponseBuilderTest.php
 create mode 100644 libs/jsonrpc/tests/Response/ResponseParserTest.php

(limited to 'libs/jsonrpc/tests/Response')

diff --git a/libs/jsonrpc/tests/Response/HeaderMockTest.php b/libs/jsonrpc/tests/Response/HeaderMockTest.php
new file mode 100644
index 00000000..cbeb7388
--- /dev/null
+++ b/libs/jsonrpc/tests/Response/HeaderMockTest.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace JsonRPC\Response;
+
+use PHPUnit_Framework_TestCase;
+
+require_once __DIR__.'/../../../../vendor/autoload.php';
+
+function header($value)
+{
+    HeaderMockTest::$functions->header($value);
+}
+
+abstract class HeaderMockTest extends PHPUnit_Framework_TestCase
+{
+    public static $functions;
+
+    public function setUp()
+    {
+        self::$functions = $this
+            ->getMockBuilder('stdClass')
+            ->setMethods(array('header'))
+            ->getMock();
+    }
+}
diff --git a/libs/jsonrpc/tests/Response/ResponseBuilderTest.php b/libs/jsonrpc/tests/Response/ResponseBuilderTest.php
new file mode 100644
index 00000000..e2dcb2a0
--- /dev/null
+++ b/libs/jsonrpc/tests/Response/ResponseBuilderTest.php
@@ -0,0 +1,151 @@
+<?php
+
+use JsonRPC\Exception\AccessDeniedException;
+use JsonRPC\Exception\AuthenticationFailureException;
+use JsonRPC\Exception\InvalidJsonFormatException;
+use JsonRPC\Exception\InvalidJsonRpcFormatException;
+use JsonRPC\Exception\ResponseEncodingFailureException;
+use JsonRPC\Exception\ResponseException;
+use JsonRPC\Response\ResponseBuilder;
+
+require_once __DIR__.'/../../../../vendor/autoload.php';
+
+class ResponseBuilderTest extends PHPUnit_Framework_TestCase
+{
+    public function testBuildResponse()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","result":"test","id":123}', $response);
+    }
+
+    public function testBuildResponseWithError()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withError(42, 'Test', 'More info')
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":42,"message":"Test","data":"More info"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new Exception('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":0,"message":"Test"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithResponseException()
+    {
+        $exception = new ResponseException('Error', 42);
+        $exception->setData('Data');
+
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException($exception)
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":42,"message":"Error","data":"Data"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithAccessDeniedException()
+    {
+        $responseBuilder = ResponseBuilder::create();
+        $response = $responseBuilder
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new AccessDeniedException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":403,"message":"Forbidden"},"id":123}', $response);
+        $this->assertEquals('HTTP/1.0 403 Forbidden', $responseBuilder->getStatus());
+
+        $this->assertEquals(
+            array('Content-Type' => 'application/json'),
+            $responseBuilder->getHeaders()
+        );
+    }
+
+    public function testBuildResponseWithAuthenticationFailureException()
+    {
+        $responseBuilder = ResponseBuilder::create();
+        $response = $responseBuilder
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new AuthenticationFailureException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":401,"message":"Unauthorized"},"id":123}', $response);
+        $this->assertEquals('HTTP/1.0 401 Unauthorized', $responseBuilder->getStatus());
+
+        $this->assertEquals(
+            array('Content-Type' => 'application/json', 'WWW-Authenticate' => 'Basic realm="JsonRPC"'),
+            $responseBuilder->getHeaders()
+        );
+    }
+
+    public function testBuildResponseWithResponseEncodingFailureException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new ResponseEncodingFailureException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32603,"message":"Internal error","data":"Test"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithInvalidArgumentException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new InvalidArgumentException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params","data":"Test"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithBadFunctionCallException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new BadFunctionCallException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found"},"id":123}', $response);
+    }
+
+    public function testBuildResponseWithInvalidJsonRpcFormatException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new InvalidJsonRpcFormatException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid Request"},"id":null}', $response);
+    }
+
+    public function testBuildResponseWithInvalidJsonFormatException()
+    {
+        $response = ResponseBuilder::create()
+            ->withId(123)
+            ->withResult('test')
+            ->withException(new InvalidJsonFormatException('Test'))
+            ->build();
+
+        $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error"},"id":null}', $response);
+    }
+}
diff --git a/libs/jsonrpc/tests/Response/ResponseParserTest.php b/libs/jsonrpc/tests/Response/ResponseParserTest.php
new file mode 100644
index 00000000..f195014f
--- /dev/null
+++ b/libs/jsonrpc/tests/Response/ResponseParserTest.php
@@ -0,0 +1,100 @@
+<?php
+
+use JsonRPC\Response\ResponseParser;
+
+require_once __DIR__.'/../../../../vendor/autoload.php';
+
+class ResponseParserTest extends PHPUnit_Framework_TestCase
+{
+    public function testSingleRequest()
+    {
+        $result = ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "result": "foobar", "id": "1"}', true))
+            ->parse();
+
+        $this->assertEquals('foobar', $result);
+    }
+
+    public function testWithBadJsonFormat()
+    {
+        $this->setExpectedException('\JsonRPC\Exception\InvalidJsonFormatException');
+
+        ResponseParser::create()
+            ->withPayload('foobar')
+            ->parse();
+    }
+
+    public function testWithBadProcedure()
+    {
+        $this->setExpectedException('BadFunctionCallException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "1"}', true))
+            ->parse();
+    }
+
+    public function testWithInvalidArgs()
+    {
+        $this->setExpectedException('InvalidArgumentException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32602, "message": "Invalid params"}, "id": "1"}', true))
+            ->parse();
+    }
+
+    public function testWithInvalidRequest()
+    {
+        $this->setExpectedException('\JsonRPC\Exception\InvalidJsonRpcFormatException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": null}', true))
+            ->parse();
+    }
+
+    public function testWithParseError()
+    {
+        $this->setExpectedException('\JsonRPC\Exception\InvalidJsonFormatException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32700, "message": "Parse error"}, "id": null}', true))
+            ->parse();
+    }
+
+    public function testWithOtherError()
+    {
+        $this->setExpectedException('\JsonRPC\Exception\ResponseException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": 42, "message": "Something", "data": "foobar"}, "id": null}', true))
+            ->parse();
+    }
+
+    public function testBatch()
+    {
+        $payload = '[
+            {"jsonrpc": "2.0", "result": 7, "id": "1"},
+            {"jsonrpc": "2.0", "result": 19, "id": "2"}
+        ]';
+
+        $result = ResponseParser::create()
+            ->withPayload(json_decode($payload, true))
+            ->parse();
+
+        $this->assertEquals(array(7, 19), $result);
+    }
+
+    public function testBatchWithError()
+    {
+        $payload = '[
+            {"jsonrpc": "2.0", "result": 7, "id": "1"},
+            {"jsonrpc": "2.0", "result": 19, "id": "2"},
+            {"jsonrpc": "2.0", "error": {"code": -32602, "message": "Invalid params"}, "id": "1"}
+        ]';
+
+        $this->setExpectedException('InvalidArgumentException');
+
+        ResponseParser::create()
+            ->withPayload(json_decode($payload, true))
+            ->parse();
+    }
+}
-- 
cgit v1.2.3