diff --git a/app/controllers/mock.php b/app/controllers/mock.php index aad24bf9a..7e65e2d93 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -2,6 +2,7 @@ global $utopia, $request, $response; +use Appwrite\Database\Document; use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Validator\Numeric; @@ -11,13 +12,16 @@ use Utopia\Validator\Host; use Utopia\Storage\Validator\File; App::get('/v1/mock/tests/foo') - ->desc('Mock a get request for SDK tests') + ->desc('Get Foo') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'foo') ->label('sdk.method', 'get') - ->label('sdk.description', 'Mock a get request for SDK tests') + ->label('sdk.description', 'Mock a get request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -26,13 +30,16 @@ App::get('/v1/mock/tests/foo') }); App::post('/v1/mock/tests/foo') - ->desc('Mock a post request for SDK tests') + ->desc('Post Foo') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'foo') ->label('sdk.method', 'post') - ->label('sdk.description', 'Mock a post request for SDK tests') + ->label('sdk.description', 'Mock a post request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -41,13 +48,16 @@ App::post('/v1/mock/tests/foo') }); App::patch('/v1/mock/tests/foo') - ->desc('Mock a patch request for SDK tests') + ->desc('Patch Foo') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'foo') ->label('sdk.method', 'patch') - ->label('sdk.description', 'Mock a get request for SDK tests') + ->label('sdk.description', 'Mock a patch request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -56,13 +66,16 @@ App::patch('/v1/mock/tests/foo') }); App::put('/v1/mock/tests/foo') - ->desc('Mock a put request for SDK tests') + ->desc('Put Foo') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'foo') ->label('sdk.method', 'put') - ->label('sdk.description', 'Mock a put request for SDK tests') + ->label('sdk.description', 'Mock a put request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -71,13 +84,16 @@ App::put('/v1/mock/tests/foo') }); App::delete('/v1/mock/tests/foo') - ->desc('Mock a delete request for SDK tests') + ->desc('Delete Foo') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'foo') ->label('sdk.method', 'delete') - ->label('sdk.description', 'Mock a delete request for SDK tests') + ->label('sdk.description', 'Mock a delete request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -86,13 +102,16 @@ App::delete('/v1/mock/tests/foo') }); App::get('/v1/mock/tests/bar') - ->desc('Mock a get request for SDK tests') + ->desc('Get Bar') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'bar') ->label('sdk.method', 'get') - ->label('sdk.description', 'Mock a get request for SDK tests') + ->label('sdk.description', 'Mock a get request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -101,13 +120,16 @@ App::get('/v1/mock/tests/bar') }); App::post('/v1/mock/tests/bar') - ->desc('Mock a post request for SDK tests') + ->desc('Post Bar') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'bar') ->label('sdk.method', 'post') - ->label('sdk.description', 'Mock a post request for SDK tests') + ->label('sdk.description', 'Mock a post request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -116,13 +138,16 @@ App::post('/v1/mock/tests/bar') }); App::patch('/v1/mock/tests/bar') - ->desc('Mock a patch request for SDK tests') + ->desc('Patch Bar') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'bar') ->label('sdk.method', 'patch') - ->label('sdk.description', 'Mock a get request for SDK tests') + ->label('sdk.description', 'Mock a patch request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -131,13 +156,16 @@ App::patch('/v1/mock/tests/bar') }); App::put('/v1/mock/tests/bar') - ->desc('Mock a put request for SDK tests') + ->desc('Put Bar') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'bar') ->label('sdk.method', 'put') - ->label('sdk.description', 'Mock a put request for SDK tests') + ->label('sdk.description', 'Mock a put request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -146,13 +174,16 @@ App::put('/v1/mock/tests/bar') }); App::delete('/v1/mock/tests/bar') - ->desc('Mock a delete request for SDK tests') + ->desc('Delete Bar') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'bar') ->label('sdk.method', 'delete') - ->label('sdk.description', 'Mock a delete request for SDK tests') + ->label('sdk.description', 'Mock a delete request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -167,8 +198,11 @@ App::post('/v1/mock/tests/general/upload') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'general') ->label('sdk.method', 'upload') - ->label('sdk.description', 'Mock a delete request for SDK tests') + ->label('sdk.description', 'Mock a file upload request.') ->label('sdk.request.type', 'multipart/form-data') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->param('x', '', new Text(100), 'Sample string param') ->param('y', '', new Numeric(), 'Sample numeric param') @@ -209,7 +243,9 @@ App::get('/v1/mock/tests/general/redirect') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'general') ->label('sdk.method', 'redirect') - ->label('sdk.description', 'Mock a redirect request for SDK tests') + ->label('sdk.description', 'Mock a redirect request.') + ->label('sdk.response.code', Response::STATUS_CODE_MOVED_PERMANENTLY) + ->label('sdk.response.type', Response::CONTENT_TYPE_HTML) ->label('sdk.mock', true) ->inject('response') ->action(function ($response) { @@ -219,13 +255,16 @@ App::get('/v1/mock/tests/general/redirect') }); App::get('/v1/mock/tests/general/redirect/done') - ->desc('Redirect Target') + ->desc('Redirected') ->groups(['mock']) ->label('scope', 'public') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'general') ->label('sdk.method', 'redirected') - ->label('sdk.description', 'Mock a redirected request for SDK tests') + ->label('sdk.description', 'Mock a redirected request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->action(function () { }); @@ -238,6 +277,9 @@ App::get('/v1/mock/tests/general/set-cookie') ->label('sdk.namespace', 'general') ->label('sdk.method', 'setCookie') ->label('sdk.description', 'Mock a set cookie request.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->inject('response') ->action(function ($response) { @@ -254,6 +296,9 @@ App::get('/v1/mock/tests/general/get-cookie') ->label('sdk.namespace', 'general') ->label('sdk.method', 'getCookie') ->label('sdk.description', 'Mock a cookie response.') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_MOCK) ->label('sdk.mock', true) ->inject('request') ->action(function ($request) { @@ -271,7 +316,7 @@ App::get('/v1/mock/tests/general/empty') ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) ->label('sdk.namespace', 'general') ->label('sdk.method', 'empty') - ->label('sdk.description', 'Mock a an empty response body.') + ->label('sdk.description', 'Mock a an empty response.') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) ->label('sdk.response.model', Response::MODEL_NONE) ->label('sdk.mock', true) @@ -315,7 +360,7 @@ App::get('/v1/mock/tests/general/500-error') }); App::get('/v1/mock/tests/general/oauth2') - ->desc('Mock an OAuth2 login route') + ->desc('OAuth Login') ->groups(['mock']) ->label('scope', 'public') ->label('docs', false) @@ -332,7 +377,7 @@ App::get('/v1/mock/tests/general/oauth2') }); App::get('/v1/mock/tests/general/oauth2/token') - ->desc('Mock an OAuth2 login route') + ->desc('OAuth2 Token') ->groups(['mock']) ->label('scope', 'public') ->label('docs', false) @@ -361,7 +406,7 @@ App::get('/v1/mock/tests/general/oauth2/token') }); App::get('/v1/mock/tests/general/oauth2/user') - ->desc('Mock an OAuth2 user route') + ->desc('OAuth2 User') ->groups(['mock']) ->label('scope', 'public') ->label('docs', false) @@ -382,8 +427,9 @@ App::get('/v1/mock/tests/general/oauth2/user') }); App::get('/v1/mock/tests/general/oauth2/success') - ->label('scope', 'public') + ->desc('OAuth2 Success') ->groups(['mock']) + ->label('scope', 'public') ->label('docs', false) ->inject('response') ->action(function ($response) { @@ -395,6 +441,7 @@ App::get('/v1/mock/tests/general/oauth2/success') }); App::get('/v1/mock/tests/general/oauth2/failure') + ->desc('OAuth2 Failure') ->groups(['mock']) ->label('scope', 'public') ->label('docs', false) @@ -431,5 +478,5 @@ App::shutdown(function($utopia, $response, $request) { throw new Exception('Failed to save resutls', 500); } - $response->json(['result' => $route->getMethod() . ':' . $route->getURL() . ':passed']); + $response->dynamic(new Document(['result' => $route->getMethod() . ':' . $route->getURL() . ':passed']), Response::MODEL_MOCK); }, ['utopia', 'response', 'request'], 'mock'); \ No newline at end of file diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index b2203918d..e7f7e4e84 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -39,6 +39,7 @@ use Appwrite\Utopia\Response\Model\Tag; use Appwrite\Utopia\Response\Model\Task; use Appwrite\Utopia\Response\Model\Token; use Appwrite\Utopia\Response\Model\Webhook; +use Appwrite\Utopia\Response\Model\Mock; // Keep last use stdClass; /** @@ -115,6 +116,9 @@ class Response extends SwooleResponse const MODEL_PLATFORM_LIST = 'platformList'; const MODEL_DOMAIN = 'domain'; const MODEL_DOMAIN_LIST = 'domainList'; + + // Tests (keep last) + const MODEL_MOCK = 'mock'; /** * @var Filter @@ -191,6 +195,8 @@ class Response extends SwooleResponse ->setModel(new Phone()) // Verification // Recovery + // Tests (keep last) + ->setModel(new Mock()) ; parent::__construct($response); diff --git a/src/Appwrite/Utopia/Response/Model/Mock.php b/src/Appwrite/Utopia/Response/Model/Mock.php new file mode 100644 index 000000000..dade6e00d --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Mock.php @@ -0,0 +1,41 @@ +addRule('result', [ + 'type' => self::TYPE_STRING, + 'description' => 'Result message.', + 'default' => '', + 'example' => 'Success', + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName():string + { + return 'Mock'; + } + + /** + * Get Collection + * + * @return string + */ + public function getType():string + { + return Response::MODEL_MOCK; + } +} \ No newline at end of file