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