1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 14:34:04 +00:00

Add more tests, fix bugs

This commit is contained in:
Samuel Štancl 2019-02-08 17:54:53 +01:00
parent d14aa0b642
commit 3f650d887d
4 changed files with 65 additions and 8 deletions

View file

@ -5,6 +5,7 @@ namespace Stancl\Tenancy;
use Illuminate\Support\Facades\Redis;
use Stancl\Tenancy\Interfaces\StorageDriver;
use Stancl\Tenancy\Traits\BootstrapsTenancy;
use Illuminate\Contracts\Foundation\Application;
class TenantManager
{
@ -13,7 +14,7 @@ class TenantManager
/**
* The application instance.
*
* @var \Illuminate\Contracts\Foundation\Application|\Illuminate\Foundation\Application
* @var Application
*/
private $app;
@ -38,7 +39,7 @@ class TenantManager
*/
public $tenant;
public function __construct($app, StorageDriver $storage, DatabaseManager $database)
public function __construct(Application $app, StorageDriver $storage, DatabaseManager $database)
{
$this->app = $app;
$this->storage = $storage;
@ -190,7 +191,7 @@ class TenantManager
public function actAsId(string $uuid): array
{
$this->setTenant($this->storage->getTenantById($uuid));
$this->bootstrap(); // todo this could break storage_path() for example?
$this->bootstrap();
return $this->tenant;
}

View file

@ -7,7 +7,7 @@ use Illuminate\Support\Facades\Redis;
trait BootstrapsTenancy
{
public $oldStoragePaths;
public $oldStoragePaths = [];
public function bootstrap()
{
@ -40,7 +40,7 @@ trait BootstrapsTenancy
public function suffixFilesystemRootPaths()
{
$old = [
$old = $this->oldStoragePaths ?: [
"storage_disks" => [],
"storage_path" => $this->app->storagePath(),
];
@ -59,7 +59,7 @@ trait BootstrapsTenancy
}
// storage_path()
$this->app->useStoragePath($this->app->storagePath() . "/{$suffix}");
$this->app->useStoragePath($old['storage_path'] . "/{$suffix}");
$this->oldStoragePaths = $old;
}

View file

@ -34,10 +34,21 @@ class BootstrapsTenancyTest extends TestCase
public function filesystem_is_suffixed()
{
$old_storage_path = storage_path();
$this->initTenancy();
$new_storage_path = storage_path();
$old_storage_facade_roots = [];
foreach (config('tenancy.filesystem.disks') as $disk) {
$old_storage_facade_roots[$disk] = config("filesystems.disks.{$disk}.root");
}
$this->initTenancy();
$new_storage_path = storage_path();
$this->assertEquals($old_storage_path . "/" . config('tenancy.filesystem.suffix_base') . tenant('uuid'), $new_storage_path);
foreach (config('tenancy.filesystem.disks') as $disk) {
$suffix = config('tenancy.filesystem.suffix_base') . tenant('uuid');
$current_path_prefix = \Storage::disk($disk)->getAdapter()->getPathPrefix();
$this->assertSame($old_storage_facade_roots[$disk] . "/$suffix/", $current_path_prefix);
}
}
/** @test */

View file

@ -0,0 +1,45 @@
<?php
namespace Stancl\Tenancy\Tests;
class ReidentificationTest extends TestCase
{
public $autoInitTenancy = false;
/**
* These tests are run when a tenant is identified after another tenant has already been identified.
*/
/** @test */
public function storage_facade_roots_are_correct()
{
$originals = [];
foreach (config('tenancy.filesystem.disks') as $disk) {
$originals[$disk] = config("filesystems.disks.{$disk}.root");
}
tenancy()->init('localhost');
tenant()->create('second.localhost');
tenancy()->init('second.localhost');
foreach (config('tenancy.filesystem.disks') as $disk) {
$suffix = config('tenancy.filesystem.suffix_base') . tenant('uuid');
$current_path_prefix = \Storage::disk($disk)->getAdapter()->getPathPrefix();
$this->assertSame($originals[$disk] . "/$suffix/", $current_path_prefix);
}
}
/** @test */
public function storage_path_is_correct()
{
$original = storage_path();
tenancy()->init('localhost');
tenant()->create('second.localhost');
tenancy()->init('second.localhost');
$suffix = config('tenancy.filesystem.suffix_base') . tenant('uuid');
$this->assertSame($original . "/$suffix", storage_path());
}
}