mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-04 21:24:04 +00:00
94 lines
2.4 KiB
PHP
94 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Stancl\Tenancy\Tests;
|
|
|
|
use Stancl\Tenancy\ServerManager;
|
|
|
|
class ServerManagerTest extends TestCase
|
|
{
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->serverManager = app(ServerManager::class);
|
|
}
|
|
|
|
/** @test */
|
|
public function getConfigFilePath_works_when_single_file_mode_is_used()
|
|
{
|
|
config([
|
|
'tenancy.server.file.single' => true,
|
|
'tenancy.server.file.path' => '/foo/bar',
|
|
]);
|
|
|
|
$this->assertSame('/foo/bar', $this->serverManager->getConfigFilePath());
|
|
}
|
|
|
|
/** @test */
|
|
public function getConfigFilePath_works_when_multiple_files_mode_is_used()
|
|
{
|
|
config([
|
|
'tenancy.server.file.single' => false,
|
|
'tenancy.server.file.path' => [
|
|
'prefix' => '/etc/foo',
|
|
'suffix' => 'bar'
|
|
],
|
|
]);
|
|
|
|
$uuid = tenant('uuid');
|
|
|
|
$this->assertSame("/etc/foo{$uuid}bar", $this->serverManager->getConfigFilePath());
|
|
}
|
|
|
|
/** @test */
|
|
public function vhost_is_written()
|
|
{
|
|
[$tmpfile, $path, $vhost] = $this->setupCreateVhost();
|
|
|
|
$this->serverManager->createVhost('localhost');
|
|
|
|
$vhost = str_replace('%host%', 'localhost', $vhost);
|
|
|
|
$this->assertContains($vhost, fread($tmpfile, filesize($path)));
|
|
}
|
|
|
|
/** @test */
|
|
public function cert_is_deployed()
|
|
{
|
|
[$tmpfile, $path, $vhost] = $this->setupCreateVhost();
|
|
|
|
$this->serverManager->createVhost('localhost');
|
|
|
|
dump(fread($tmpfile, filesize($path)));
|
|
// todo
|
|
// The following error was encountered:\n
|
|
// [Errno 13] Permission denied: '/var/log/letsencrypt/.certbot.lock'\n
|
|
// Either run as root, or set --config-dir, --work-dir, and --logs-dir to writeable paths.\n
|
|
}
|
|
|
|
public function setupCreateVhost()
|
|
{
|
|
$tmpfile = tmpfile();
|
|
$path = stream_get_meta_data($tmpfile)['uri'];
|
|
|
|
$vhost = "server {
|
|
include includes/tenancy;
|
|
server_name %host%;
|
|
}";
|
|
|
|
config([
|
|
'tenancy.server.nginx' => [
|
|
'vhost' => $vhost,
|
|
'extra_certbot_args' => [
|
|
'--staging'
|
|
],
|
|
],
|
|
'tenancy.server.file' => [
|
|
'single' => true,
|
|
'path' => $path,
|
|
],
|
|
]);
|
|
|
|
return [$tmpfile, $path, $vhost];
|
|
}
|
|
}
|