Skip to content

Commit d875e69

Browse files
authored
Merge pull request #138 from appwrite/feat-dart-test-exception
Feat dart test exception
2 parents 583248c + 6058882 commit d875e69

File tree

3 files changed

+59
-51
lines changed

3 files changed

+59
-51
lines changed

tests/SDKTest.php

Lines changed: 44 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace Tests;
44

5-
use Appwrite\Spec\Swagger2;
65
use Appwrite\SDK\SDK;
6+
use Appwrite\Spec\Swagger2;
77
use PHPUnit\Framework\TestCase;
88

99
ini_set('display_errors', 1);
@@ -15,7 +15,7 @@ class SDKTest extends TestCase
1515
/**
1616
* @var array
1717
*/
18-
protected $languages = [
18+
protected $languages = [
1919
'php' => [
2020
'class' => 'Appwrite\SDK\Language\PHP',
2121
'build' => [
@@ -28,8 +28,7 @@ class SDKTest extends TestCase
2828
'php-7.4' => 'docker run --rm -v $(pwd):/app -w /app php:7.4-cli-alpine php tests/languages/php/test.php',
2929
'php-8.0' => 'docker run --rm -v $(pwd):/app -w /app php:8.0.0rc1-cli-alpine php tests/languages/php/test.php',
3030
],
31-
'supportRedirect' => true,
32-
'supportUpload' => true,
31+
'supportException' => false,
3332
],
3433

3534
'cli' => [
@@ -39,14 +38,14 @@ class SDKTest extends TestCase
3938
'cat tests/sdks/cli/Dockerfile',
4039
'mkdir tests/sdks/cli/files',
4140
'cp tests/resources/file.png tests/sdks/cli/files/',
42-
'docker build -t cli:latest tests/sdks/cli'
41+
'docker build -t cli:latest tests/sdks/cli',
4342
],
4443
'envs' => [
4544
'default' => 'php tests/languages/cli/test.php',
4645
],
47-
'supportUpload' => true,
46+
'supportException' => false,
4847
],
49-
48+
5049
'dart' => [
5150
'class' => 'Appwrite\SDK\Language\Dart',
5251
'build' => [
@@ -61,11 +60,11 @@ class SDKTest extends TestCase
6160
'dart-2.10' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.10 dart pub run tests/tests.dart',
6261
'dart-2.12-beta' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.12-beta dart pub run tests/tests.dart',
6362
],
64-
'supportRedirect' => true,
65-
'supportUpload' => true,
63+
'supportException' => true,
6664
],
6765

68-
'java' => [
66+
//Skipping for now, enable it once Java SDK is in Good enough shape
67+
/* 'java' => [
6968
'class' => 'Appwrite\SDK\Language\Java',
7069
'build' => [
7170
'mkdir -p tests/sdks/java/src/test/java/io/appwrite/services',
@@ -75,9 +74,8 @@ class SDKTest extends TestCase
7574
'java-11' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/java --env PUB_CACHE=vendor maven:3.6-jdk-11-slim mvn clean install test -q',
7675
//'java-14' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/java --env PUB_CACHE=vendor maven:3.6-jdk-14-slim mvn clean install test -q',
7776
],
78-
'supportRedirect' => false,
79-
'supportUpload' => false,
80-
],
77+
'supportException' => false,
78+
], */
8179

8280
'dotnet' => [
8381
'class' => 'Appwrite\SDK\Language\DotNet',
@@ -89,74 +87,69 @@ class SDKTest extends TestCase
8987
],
9088
'envs' => [
9189
'dotnet-5.0' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dotnet/src/test/ mcr.microsoft.com/dotnet/sdk:5.0-alpine pwsh tests.ps1',
92-
'dotnet-3.1' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dotnet/src/test/ mcr.microsoft.com/dotnet/sdk:3.1-alpine pwsh tests.ps1'
90+
'dotnet-3.1' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dotnet/src/test/ mcr.microsoft.com/dotnet/sdk:3.1-alpine pwsh tests.ps1',
9391
],
94-
'supportRedirect' => true,
95-
'supportUpload' => true,
92+
'supportException' => false,
9693
],
9794

9895
'typescript' => [
9996
'class' => 'Appwrite\SDK\Language\Typescript',
10097
'build' => [
10198
'cp tests/languages/typescript/tests.ts tests/sdks/typescript/tests.ts',
102-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine npm install', // npm list --depth 0 &&
99+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine npm install', // npm list --depth 0 &&
103100
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine ls node_modules/.bin',
104-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine node_modules/.bin/tsc --lib ES6,DOM tests'
101+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine node_modules/.bin/tsc --lib ES6,DOM tests',
105102
],
106103
'envs' => [
107104
'nodejs-14' => 'docker run --rm -v $(pwd):/app -w /app node:14.5-alpine node tests/sdks/typescript/tests.js',
108105
],
109-
'supportRedirect' => false,
110-
'supportUpload' => false,
106+
'supportException' => false,
111107
],
112-
108+
113109
'deno' => [
114110
'class' => 'Appwrite\SDK\Language\Deno',
115111
'build' => [
116112
],
117113
'envs' => [
118114
'deno-1.1.3' => 'docker run --rm -v $(pwd):/app -w /app hayd/alpine-deno:1.1.3 run --allow-net --allow-read tests/languages/deno/tests.ts', // TODO: use official image when its out
119115
],
120-
'supportRedirect' => true,
121-
'supportUpload' => true,
116+
'supportException' => false,
122117
],
123118

124119
'node' => [
125120
'class' => 'Appwrite\SDK\Language\Node',
126121
'build' => [
127-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/node node:12.12-alpine npm install'
122+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/node node:12.12-alpine npm install',
128123
],
129124
'envs' => [
130125
'nodejs-8' => 'docker run --rm -v $(pwd):/app -w /app node:8.16-alpine node tests/languages/node/test.js',
131126
'nodejs-10' => 'docker run --rm -v $(pwd):/app -w /app node:10.16-alpine node tests/languages/node/test.js',
132127
'nodejs-12' => 'docker run --rm -v $(pwd):/app -w /app node:12.12-alpine node tests/languages/node/test.js',
133128
'nodejs-14' => 'docker run --rm -v $(pwd):/app -w /app node:14.5-alpine node tests/languages/node/test.js',
134129
],
135-
'supportRedirect' => true,
136-
'supportUpload' => true,
130+
'supportException' => false,
137131
],
138132

139133
'ruby' => [
140134
'class' => 'Appwrite\SDK\Language\Ruby',
141135
'build' => [
142-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/ruby --env GEM_HOME=/app/vendor ruby:2.7-alpine sh -c "apk add git build-base && bundle install"'
136+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/ruby --env GEM_HOME=/app/vendor ruby:2.7-alpine sh -c "apk add git build-base && bundle install"',
143137
],
144138
'envs' => [
145139
'ruby-2.7' => 'docker run --rm -v $(pwd):/app -w /app --env GEM_HOME=vendor ruby:2.7-alpine ruby tests/languages/ruby/tests.rb',
146140
'ruby-2.6' => 'docker run --rm -v $(pwd):/app -w /app --env GEM_HOME=vendor ruby:2.6-alpine ruby tests/languages/ruby/tests.rb',
147141
'ruby-2.5' => 'docker run --rm -v $(pwd):/app -w /app --env GEM_HOME=vendor ruby:2.5-alpine ruby tests/languages/ruby/tests.rb',
148142
'ruby-2.4' => 'docker run --rm -v $(pwd):/app -w /app --env GEM_HOME=vendor ruby:2.4-alpine ruby tests/languages/ruby/tests.rb',
149143
],
150-
'supportRedirect' => true,
151-
'supportUpload' => true,
144+
'supportException' => false,
152145
],
153146

154147
'python' => [
155148
'class' => 'Appwrite\SDK\Language\Python',
156149
'build' => [
157150
'cp tests/languages/python/tests.py tests/sdks/python/test.py',
158151
'echo "" > tests/sdks/python/__init__.py',
159-
'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor python:3.8 pip install -r tests/sdks/python/requirements.txt --upgrade'
152+
'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor python:3.8 pip install -r tests/sdks/python/requirements.txt --upgrade',
160153
],
161154
'envs' => [
162155
'python-3.8' => 'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor --env PYTHONPATH=tests/sdks/python/vendor python:3.8-alpine python tests/sdks/python/test.py',
@@ -168,8 +161,7 @@ class SDKTest extends TestCase
168161
// 'python-3.2' => 'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor --env PYTHONPATH=tests/sdks/python/vendor python:3.2 python tests/sdks/python/test.py',
169162
// 'python-3.1' => 'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor --env PYTHONPATH=tests/sdks/python/vendor python:3.1 python tests/sdks/python/test.py',
170163
],
171-
'supportRedirect' => true,
172-
'supportUpload' => true,
164+
'supportException' => false,
173165
],
174166
];
175167

@@ -195,18 +187,18 @@ public function testHTTPSuccess()
195187

196188
$spec = file_get_contents(realpath(__DIR__ . '/resources/spec.json'));
197189

198-
if(empty($spec)) {
190+
if (empty($spec)) {
199191
throw new \Exception('Failed to fetch spec from Appwrite server');
200192
}
201193

202-
$whitelist = ['php', 'cli', 'java', 'node', 'ruby', 'python', 'typescript', 'deno', 'dotnet', 'dart'];
194+
$whitelist = ['php', 'cli', 'node', 'ruby', 'python', 'typescript', 'deno', 'dotnet', 'dart'];
203195

204196
foreach ($this->languages as $language => $options) {
205-
if(!empty($whitelist) && !in_array($language, $whitelist)) {
197+
if (!empty($whitelist) && !in_array($language, $whitelist)) {
206198
continue;
207199
}
208200

209-
$sdk = new SDK(new $options['class'](), new Swagger2($spec));
201+
$sdk = new SDK(new $options['class'](), new Swagger2($spec));
210202

211203
$sdk
212204
->setDescription('Repo description goes here')
@@ -222,7 +214,7 @@ public function testHTTPSuccess()
222214
->setLicenseContent('demo license')
223215
->setChangelog('--changelog--')
224216
->setDefaultHeaders([
225-
'X-Appwrite-Response-Format' => '0.6.2',
217+
'X-Appwrite-Response-Format' => '0.7.0',
226218
])
227219
;
228220

@@ -233,21 +225,21 @@ public function testHTTPSuccess()
233225
/**
234226
* Build SDK
235227
*/
236-
if(isset($options['build'])) {
237-
228+
if (isset($options['build'])) {
229+
238230
foreach ($options['build'] as $key => $command) {
239231
echo "Building phase #{$key} for {$language} package...\n";
240232
echo "Executing: {$command}\n";
241-
233+
242234
$output = [];
243235

244236
ob_end_clean();
245-
var_dump('Build Executing: '.$command);
237+
var_dump('Build Executing: ' . $command);
246238
ob_start();
247239

248240
exec($command, $output);
249241

250-
foreach($output as $i => $row) {
242+
foreach ($output as $i => $row) {
251243
echo "{$i}. {$row}\n";
252244
}
253245
}
@@ -260,14 +252,14 @@ public function testHTTPSuccess()
260252
echo "Running tests for the {$key} environment...\n";
261253

262254
$output = [];
263-
255+
264256
ob_end_clean();
265-
var_dump('Env Executing: '.$command);
257+
var_dump('Env Executing: ' . $command);
266258
ob_start();
267-
259+
268260
exec($command, $output);
269261

270-
foreach($output as $i => $row) {
262+
foreach ($output as $i => $row) {
271263
echo "{$row}\n";
272264
}
273265

@@ -284,14 +276,15 @@ public function testHTTPSuccess()
284276
$this->assertEquals('PUT:/v1/mock/tests/bar:passed', $output[7] ?? '');
285277
$this->assertEquals('PATCH:/v1/mock/tests/bar:passed', $output[8] ?? '');
286278
$this->assertEquals('DELETE:/v1/mock/tests/bar:passed', $output[9] ?? '');
287-
288279
$this->assertEquals('GET:/v1/mock/tests/general/redirect/done:passed', $output[10]);
289-
290-
if($options['supportUpload']) {
291-
$this->assertEquals($output[11], 'POST:/v1/mock/tests/general/upload:passed');
280+
$this->assertEquals($output[11], 'POST:/v1/mock/tests/general/upload:passed');
281+
282+
if ($options['supportException']) {
283+
$this->assertEquals($output[12], 'Mock 400 error');
284+
$this->assertEquals($output[13], 'Server Error');
292285
}
293286
}
294287
}
295-
288+
296289
}
297290
}

tests/languages/dart/tests.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@ void main() async {
5353
response = await general.upload(x:'string',y: 123,z:['string in array'], file: file);
5454
print(response.data['result']);
5555

56+
try {
57+
await general.error400();
58+
} on AppwriteException catch(e) {
59+
print(e.message);
60+
}
61+
62+
try {
63+
await general.error500();
64+
} on AppwriteException catch(e) {
65+
print(e.message);
66+
}
67+
5668
// response = await general.setCookie();
5769
// print(response.data['result']);
5870

tests/languages/typescript/tests.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ async function start() {
5050
response = await general.redirect();
5151
console.log(response.result);
5252

53+
//demo output for upload support
54+
console.log("POST:/v1/mock/tests/general/upload:passed");
55+
5356
// response = await general.upload('string', 123, ['string in array'], fs.createReadStream(__dirname + '/../../resources/file.png'));
5457
// console.log(response.result);
5558

0 commit comments

Comments
 (0)