diff --git a/_build/test/Tests/Model/Rest/modRestServiceTest.php b/_build/test/Tests/Model/Rest/modRestServiceTest.php
new file mode 100644
index 00000000000..303917ee541
--- /dev/null
+++ b/_build/test/Tests/Model/Rest/modRestServiceTest.php
@@ -0,0 +1,95 @@
+modx);
+ $modRestService->prepare();
+
+ $this->assertInstanceOf(modRestServiceRequest::class, $modRestService->request);
+ }
+
+ public function testProcessWithUnfindableController()
+ {
+ $modRestService = new modRestService($this->modx, [
+ 'exitOnResponse' => false,
+ 'defaultAction' => 'unfindable',
+ ]);
+ $modRestService->prepare();
+
+ $this->expectOutputString('{"success":false,"message":"Method not allowed","object":[],"code":405}');
+ $modRestService->process();
+ }
+
+ public function testProcessWithUninstantiableController()
+ {
+ $modRestService = new modRestService($this->modx, [
+ 'exitOnResponse' => false,
+ 'defaultAction' => 'uninstantiable',
+ 'basePath' => MODX_BASE_PATH . '_build/test/data/rest/Controllers/',
+ 'controllerClassPrefix' => 'modRestServiceTest'
+ ]);
+ $modRestService->prepare();
+
+ $this->expectOutputString('{"success":false,"message":"Bad Request","object":[],"code":400}');
+ $modRestService->process();
+ }
+
+ public function testProcessWithUnsupportedHTTPMethod()
+ {
+ $modRestService = new modRestService($this->modx, [
+ 'exitOnResponse' => false,
+ 'basePath' => MODX_BASE_PATH . '_build/test/data/rest/Controllers/',
+ 'controllerClassPrefix' => 'modRestServiceTest'
+ ]);
+ $modRestService->prepare();
+ $modRestService->request->setMethod('FOO');
+
+ $this->expectOutputString('{"success":false,"message":"Unsupported HTTP method FOO","object":[],"code":405}');
+ $modRestService->process();
+ }
+
+ public function testProcess()
+ {
+ $modRestService = new modRestService($this->modx, [
+ 'exitOnResponse' => false,
+ 'basePath' => MODX_BASE_PATH . '_build/test/data/rest/Controllers/',
+ 'controllerClassPrefix' => 'modRestServiceTest'
+ ]);
+ $modRestService->prepare();
+ $modRestService->request->setMethod('GET');
+
+ $this->expectOutputRegex('/{"results":\[\],"total":[0-9]+}/');
+ $modRestService->process();
+ }
+}
diff --git a/_build/test/data/rest/Controllers/Index.php b/_build/test/data/rest/Controllers/Index.php
new file mode 100644
index 00000000000..0d1c9be378c
--- /dev/null
+++ b/_build/test/data/rest/Controllers/Index.php
@@ -0,0 +1,21 @@
+Tests/Model/Registry
Tests/Model/Request
Tests/Model/Resource
+ Tests/Model/Rest
Tests/Model/Security
Tests/Model/Sources
Tests/Model/Transport