Skip to content

Commit 2e3cc8f

Browse files
committed
Merge branch 'master' into feat-dart-sdk-null-safety
2 parents 77601f1 + d875e69 commit 2e3cc8f

File tree

3 files changed

+58
-50
lines changed

3 files changed

+58
-50
lines changed

tests/SDKTest.php

Lines changed: 43 additions & 50 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' => [
@@ -58,11 +57,11 @@ class SDKTest extends TestCase
5857
'dart-2.12' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.12 dart pub run tests/tests.dart',
5958
'dart-2.13-dev' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.13-dev dart pub run tests/tests.dart',
6059
],
61-
'supportRedirect' => true,
62-
'supportUpload' => true,
60+
'supportException' => true,
6361
],
6462

65-
'java' => [
63+
//Skipping for now, enable it once Java SDK is in Good enough shape
64+
/* 'java' => [
6665
'class' => 'Appwrite\SDK\Language\Java',
6766
'build' => [
6867
'mkdir -p tests/sdks/java/src/test/java/io/appwrite/services',
@@ -72,9 +71,8 @@ class SDKTest extends TestCase
7271
'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',
7372
//'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',
7473
],
75-
'supportRedirect' => false,
76-
'supportUpload' => false,
77-
],
74+
'supportException' => false,
75+
], */
7876

7977
'dotnet' => [
8078
'class' => 'Appwrite\SDK\Language\DotNet',
@@ -86,74 +84,69 @@ class SDKTest extends TestCase
8684
],
8785
'envs' => [
8886
'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',
89-
'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'
87+
'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',
9088
],
91-
'supportRedirect' => true,
92-
'supportUpload' => true,
89+
'supportException' => false,
9390
],
9491

9592
'typescript' => [
9693
'class' => 'Appwrite\SDK\Language\Typescript',
9794
'build' => [
9895
'cp tests/languages/typescript/tests.ts tests/sdks/typescript/tests.ts',
99-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine npm install', // npm list --depth 0 &&
96+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine npm install', // npm list --depth 0 &&
10097
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine ls node_modules/.bin',
101-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine node_modules/.bin/tsc --lib ES6,DOM tests'
98+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/typescript node:14.5-alpine node_modules/.bin/tsc --lib ES6,DOM tests',
10299
],
103100
'envs' => [
104101
'nodejs-14' => 'docker run --rm -v $(pwd):/app -w /app node:14.5-alpine node tests/sdks/typescript/tests.js',
105102
],
106-
'supportRedirect' => false,
107-
'supportUpload' => false,
103+
'supportException' => false,
108104
],
109-
105+
110106
'deno' => [
111107
'class' => 'Appwrite\SDK\Language\Deno',
112108
'build' => [
113109
],
114110
'envs' => [
115111
'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
116112
],
117-
'supportRedirect' => true,
118-
'supportUpload' => true,
113+
'supportException' => false,
119114
],
120115

121116
'node' => [
122117
'class' => 'Appwrite\SDK\Language\Node',
123118
'build' => [
124-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/node node:12.12-alpine npm install'
119+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/node node:12.12-alpine npm install',
125120
],
126121
'envs' => [
127122
'nodejs-8' => 'docker run --rm -v $(pwd):/app -w /app node:8.16-alpine node tests/languages/node/test.js',
128123
'nodejs-10' => 'docker run --rm -v $(pwd):/app -w /app node:10.16-alpine node tests/languages/node/test.js',
129124
'nodejs-12' => 'docker run --rm -v $(pwd):/app -w /app node:12.12-alpine node tests/languages/node/test.js',
130125
'nodejs-14' => 'docker run --rm -v $(pwd):/app -w /app node:14.5-alpine node tests/languages/node/test.js',
131126
],
132-
'supportRedirect' => true,
133-
'supportUpload' => true,
127+
'supportException' => false,
134128
],
135129

136130
'ruby' => [
137131
'class' => 'Appwrite\SDK\Language\Ruby',
138132
'build' => [
139-
'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"'
133+
'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"',
140134
],
141135
'envs' => [
142136
'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',
143137
'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',
144138
'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',
145139
'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',
146140
],
147-
'supportRedirect' => true,
148-
'supportUpload' => true,
141+
'supportException' => false,
149142
],
150143

151144
'python' => [
152145
'class' => 'Appwrite\SDK\Language\Python',
153146
'build' => [
154147
'cp tests/languages/python/tests.py tests/sdks/python/test.py',
155148
'echo "" > tests/sdks/python/__init__.py',
156-
'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'
149+
'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',
157150
],
158151
'envs' => [
159152
'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',
@@ -165,8 +158,7 @@ class SDKTest extends TestCase
165158
// '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',
166159
// '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',
167160
],
168-
'supportRedirect' => true,
169-
'supportUpload' => true,
161+
'supportException' => false,
170162
],
171163
];
172164

@@ -192,18 +184,18 @@ public function testHTTPSuccess()
192184

193185
$spec = file_get_contents(realpath(__DIR__ . '/resources/spec.json'));
194186

195-
if(empty($spec)) {
187+
if (empty($spec)) {
196188
throw new \Exception('Failed to fetch spec from Appwrite server');
197189
}
198190

199-
$whitelist = ['php', 'cli', 'java', 'node', 'ruby', 'python', 'typescript', 'deno', 'dotnet', 'dart'];
191+
$whitelist = ['php', 'cli', 'node', 'ruby', 'python', 'typescript', 'deno', 'dotnet', 'dart'];
200192

201193
foreach ($this->languages as $language => $options) {
202-
if(!empty($whitelist) && !in_array($language, $whitelist)) {
194+
if (!empty($whitelist) && !in_array($language, $whitelist)) {
203195
continue;
204196
}
205197

206-
$sdk = new SDK(new $options['class'](), new Swagger2($spec));
198+
$sdk = new SDK(new $options['class'](), new Swagger2($spec));
207199

208200
$sdk
209201
->setDescription('Repo description goes here')
@@ -230,21 +222,21 @@ public function testHTTPSuccess()
230222
/**
231223
* Build SDK
232224
*/
233-
if(isset($options['build'])) {
234-
225+
if (isset($options['build'])) {
226+
235227
foreach ($options['build'] as $key => $command) {
236228
echo "Building phase #{$key} for {$language} package...\n";
237229
echo "Executing: {$command}\n";
238-
230+
239231
$output = [];
240232

241233
ob_end_clean();
242-
var_dump('Build Executing: '.$command);
234+
var_dump('Build Executing: ' . $command);
243235
ob_start();
244236

245237
exec($command, $output);
246238

247-
foreach($output as $i => $row) {
239+
foreach ($output as $i => $row) {
248240
echo "{$i}. {$row}\n";
249241
}
250242
}
@@ -257,14 +249,14 @@ public function testHTTPSuccess()
257249
echo "Running tests for the {$key} environment...\n";
258250

259251
$output = [];
260-
252+
261253
ob_end_clean();
262-
var_dump('Env Executing: '.$command);
254+
var_dump('Env Executing: ' . $command);
263255
ob_start();
264-
256+
265257
exec($command, $output);
266258

267-
foreach($output as $i => $row) {
259+
foreach ($output as $i => $row) {
268260
echo "{$row}\n";
269261
}
270262

@@ -281,14 +273,15 @@ public function testHTTPSuccess()
281273
$this->assertEquals('PUT:/v1/mock/tests/bar:passed', $output[7] ?? '');
282274
$this->assertEquals('PATCH:/v1/mock/tests/bar:passed', $output[8] ?? '');
283275
$this->assertEquals('DELETE:/v1/mock/tests/bar:passed', $output[9] ?? '');
284-
285276
$this->assertEquals('GET:/v1/mock/tests/general/redirect/done:passed', $output[10]);
286-
287-
if($options['supportUpload']) {
288-
$this->assertEquals($output[11], 'POST:/v1/mock/tests/general/upload:passed');
277+
$this->assertEquals($output[11], 'POST:/v1/mock/tests/general/upload:passed');
278+
279+
if ($options['supportException']) {
280+
$this->assertEquals($output[12], 'Mock 400 error');
281+
$this->assertEquals($output[13], 'Server Error');
289282
}
290283
}
291284
}
292-
285+
293286
}
294287
}

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)