1
0
Fork 0
mirror of synced 2024-06-03 03:14:50 +12:00

Added unit tests

This commit is contained in:
Eldad Fux 2020-04-14 22:53:41 +03:00
parent 66d0d56c5f
commit a9877abdfa
3 changed files with 68 additions and 6 deletions

View file

@ -52,7 +52,7 @@ $clients = array_unique(array_merge($clientsConsole, array_map(function ($node)
return false;
}))));
$utopia->init(function () use ($utopia, $request, $response, &$user, $project, $roles, $webhook, $audit, $usage, $clients) {
$utopia->init(function () use ($utopia, $request, $response, &$user, $project, $console, $roles, $webhook, $audit, $usage, $clients) {
$route = $utopia->match($request);
@ -98,7 +98,7 @@ $utopia->init(function () use ($utopia, $request, $response, &$user, $project, $
* Skip this check for non-web platforms which are not requiredto send an origin header
*/
$origin = $request->getServer('HTTP_ORIGIN', $request->getServer('HTTP_REFERER', ''));
$originValidator = new Origin($project->getAttribute('platforms', []));
$originValidator = new Origin(array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', [])));
if(!$originValidator->isValid($origin)
&& in_array($request->getMethod(), [Request::METHOD_POST, Request::METHOD_PUT, Request::METHOD_PATCH, Request::METHOD_DELETE])

View file

@ -39,9 +39,6 @@ class Origin extends Validator
* @var array
*/
protected $clients = [
APP_DOMAIN,
'localhost',
'appwrite.test',
];
/**
@ -89,7 +86,7 @@ class Origin extends Validator
}
return 'Inavlid Origin. Register your new client ('.$this->host.') as a new '
.$this->platforms[$this->client].' platform on your '.APP_NAME.' console';
.$this->platforms[$this->client].' platform on your project console';
}
/**

View file

@ -0,0 +1,65 @@
<?php
namespace Appwrite\Tests;
use Appwrite\Network\Validators\Origin;
use PHPUnit\Framework\TestCase;
class OriginTest extends TestCase
{
public function testValues()
{
$validator = new Origin([
[
'$collection' => 'platforms',
'name' => 'Production',
'type' => 'web',
'hostname' => 'appwrite.io',
],
[
'$collection' => 'platforms',
'name' => 'Development',
'type' => 'web',
'hostname' => 'appwrite.test',
],
[
'$collection' => 'platforms',
'name' => 'Localhost',
'type' => 'web',
'hostname' => 'localhost',
],
]);
$this->assertEquals($validator->isValid('https://localhost'), true);
$this->assertEquals($validator->isValid('http://localhost'), true);
$this->assertEquals($validator->isValid('http://localhost:80'), true);
$this->assertEquals($validator->isValid('https://appwrite.io'), true);
$this->assertEquals($validator->isValid('http://appwrite.io'), true);
$this->assertEquals($validator->isValid('http://appwrite.io:80'), true);
$this->assertEquals($validator->isValid('https://appwrite.test'), true);
$this->assertEquals($validator->isValid('http://appwrite.test'), true);
$this->assertEquals($validator->isValid('http://appwrite.test:80'), true);
$this->assertEquals($validator->isValid('https://example.com'), false);
$this->assertEquals($validator->isValid('http://example.com'), false);
$this->assertEquals($validator->isValid('http://example.com:80'), false);
$this->assertEquals($validator->isValid('appwrite-ios://com.company.appname'), false);
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new iOS platform on your project console');
$this->assertEquals($validator->isValid('appwrite-android://com.company.appname'), false);
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Android platform on your project console');
$this->assertEquals($validator->isValid('appwrite-macos://com.company.appname'), false);
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new macOS platform on your project console');
$this->assertEquals($validator->isValid('appwrite-linux://com.company.appname'), false);
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Linux platform on your project console');
$this->assertEquals($validator->isValid('appwrite-windows://com.company.appname'), false);
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Windows platform on your project console');
}
}