Added unit tests
This commit is contained in:
parent
66d0d56c5f
commit
a9877abdfa
|
@ -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])
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
65
tests/unit/Network/Validators/OriginTest.php
Normal file
65
tests/unit/Network/Validators/OriginTest.php
Normal 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');
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue