1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-05 16:40:05 +01:00
Files
laravel-valet/tests/CaddyTest.php
2016-09-24 10:35:22 -04:00

109 lines
3.6 KiB
PHP

<?php
use Valet\Site;
use Valet\Caddy;
use Valet\Filesystem;
use Valet\Configuration;
use Illuminate\Container\Container;
class CaddyTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
$_SERVER['SUDO_USER'] = user();
Container::setInstance(new Container);
}
public function tearDown()
{
Mockery::close();
}
public function test_install_caddy_file_places_stub_in_valet_home_directory()
{
$files = Mockery::mock(Filesystem::class.'[putAsUser]');
$files->shouldReceive('putAsUser')->andReturnUsing(function ($path, $contents) {
$this->assertSame(VALET_HOME_PATH.'/Caddyfile', $path);
$this->assertTrue(strpos($contents, 'import '.VALET_HOME_PATH.'/Caddy/*') !== false);
})->once();
swap(Filesystem::class, $files);
$caddy = resolve(Caddy::class);
$caddy->installCaddyFile();
}
public function test_install_caddy_directories_creates_location_for_site_specific_configuration()
{
$files = Mockery::mock(Filesystem::class);
$files->shouldReceive('isDir')->with(VALET_HOME_PATH.'/Caddy')->andReturn(false);
$files->shouldReceive('mkdirAsUser')->with(VALET_HOME_PATH.'/Caddy')->once();
$files->shouldReceive('putAsUser')->with(VALET_HOME_PATH.'/Caddy/.keep', "\n")->once();
swap(Filesystem::class, $files);
swap(Configuration::class, Mockery::spy(Configuration::class));
swap(Site::class, Mockery::spy(Site::class));
$caddy = resolve(Caddy::class);
$caddy->installCaddyDirectory();
}
public function test_caddy_directory_is_never_created_if_it_already_exists()
{
$files = Mockery::mock(Filesystem::class);
$files->shouldReceive('isDir')->with(VALET_HOME_PATH.'/Caddy')->andReturn(true);
$files->shouldReceive('mkdirAsUser')->never();
$files->shouldReceive('putAsUser')->with(VALET_HOME_PATH.'/Caddy/.keep', "\n")->once();
swap(Filesystem::class, $files);
swap(Configuration::class, Mockery::spy(Configuration::class));
swap(Site::class, Mockery::spy(Site::class));
$caddy = resolve(Caddy::class);
$caddy->installCaddyDirectory();
}
public function test_install_caddy_directories_rewrites_secure_caddy_files()
{
$files = Mockery::mock(Filesystem::class);
$files->shouldReceive('isDir')->with(VALET_HOME_PATH.'/Caddy')->andReturn(false);
$files->shouldReceive('mkdirAsUser')->with(VALET_HOME_PATH.'/Caddy')->once();
$files->shouldReceive('putAsUser')->with(VALET_HOME_PATH.'/Caddy/.keep', "\n")->once();
swap(Filesystem::class, $files);
swap(Configuration::class, $config = Mockery::spy(Configuration::class, ['read' => ['domain' => 'dev']]));
swap(Site::class, $site = Mockery::spy(Site::class));
$caddy = resolve(Caddy::class);
$caddy->installCaddyDirectory();
$site->shouldHaveReceived('resecureForNewDomain', ['dev', 'dev']);
}
public function test_caddy_daemon_is_placed_in_correct_location()
{
$files = Mockery::mock(Filesystem::class.'[put]');
swap(Filesystem::class, $files);
swap(Configuration::class, Mockery::spy(Configuration::class));
swap(Site::class, Mockery::spy(Site::class));
$caddy = resolve(Caddy::class);
$files->shouldReceive('put')->andReturnUsing(function ($path, $contents) use ($caddy) {
$this->assertSame($caddy->daemonPath, $path);
$this->assertTrue(strpos($contents, VALET_HOME_PATH) !== false);
})->once();
$caddy->installCaddyDaemon();
}
}