[ FilesystemTenancyBootstrapper::class, ], 'tenancy.filesystem.suffix_base' => 'tenant-', 'tenancy.filesystem.root_override.public' => '%storage_path%/app/public/', 'tenancy.filesystem.url_override.public' => 'public-%tenant%' ]); /** @var Tenant $tenant */ $tenant = Tenant::create(); $tenantKey = $tenant->getTenantKey(); tenancy()->initialize($tenant); // The symlink doesn't exist expect(is_link($publicPath = public_path("public-$tenantKey")))->toBeFalse(); expect(file_exists($publicPath))->toBeFalse(); (new CreateStorageSymlinksAction)($tenant); // The symlink exists and is valid expect(is_link($publicPath = public_path("public-$tenantKey")))->toBeTrue(); expect(file_exists($publicPath))->toBeTrue(); $this->assertEquals(storage_path("app/public/"), readlink($publicPath)); }); test('remove storage symlinks action works', function() { config([ 'tenancy.bootstrappers' => [ FilesystemTenancyBootstrapper::class, ], 'tenancy.filesystem.suffix_base' => 'tenant-', 'tenancy.filesystem.root_override.public' => '%storage_path%/app/public/', 'tenancy.filesystem.url_override.public' => 'public-%tenant%' ]); /** @var Tenant $tenant */ $tenant = Tenant::create(); $tenantKey = $tenant->getTenantKey(); tenancy()->initialize($tenant); (new CreateStorageSymlinksAction)($tenant); // The symlink exists and is valid expect(is_link($publicPath = public_path("public-$tenantKey")))->toBeTrue(); expect(file_exists($publicPath))->toBeTrue(); (new RemoveStorageSymlinksAction)($tenant); // The symlink doesn't exist expect(is_link($publicPath))->toBeFalse(); expect(file_exists($publicPath))->toBeFalse(); }); test('removing tenant symlinks works even if the symlinks are invalid', function() { config([ 'tenancy.bootstrappers' => [ FilesystemTenancyBootstrapper::class, ], 'tenancy.filesystem.suffix_base' => 'tenant-', 'tenancy.filesystem.root_override.public' => '%storage_path%/app/public/', 'tenancy.filesystem.url_override.public' => 'public-%tenant%' ]); /** @var Tenant $tenant */ $tenant = Tenant::create(); $tenantKey = $tenant->getTenantKey(); tenancy()->initialize($tenant); (new CreateStorageSymlinksAction)($tenant); // The symlink exists and is valid expect(is_link($publicPath = public_path("public-$tenantKey")))->toBeTrue(); expect(file_exists($publicPath))->toBeTrue(); // Make the symlink invalid by deleting the tenant storage directory $storagePath = storage_path(); File::deleteDirectory($storagePath); // The symlink still exists, but isn't valid expect(is_link($publicPath))->toBeTrue(); expect(file_exists($publicPath))->toBeFalse(); (new RemoveStorageSymlinksAction)($tenant); expect(is_link($publicPath))->toBeFalse(); });