Update tests for SetupController
This commit is contained in:
parent
163396c6d9
commit
55c2fb38ac
|
|
@ -37,7 +37,7 @@ class SetupController extends Controller
|
||||||
'site_name' => 'required'
|
'site_name' => 'required'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (isset($_POST['generate_random'])) {
|
if ($request->has('generate_random')) {
|
||||||
// generate new APP_KEY & SALT randomly
|
// generate new APP_KEY & SALT randomly
|
||||||
if (is_writable(app()->environmentFile())) {
|
if (is_writable(app()->environmentFile())) {
|
||||||
Artisan::call('key:random');
|
Artisan::call('key:random');
|
||||||
|
|
@ -48,7 +48,9 @@ class SetupController extends Controller
|
||||||
'salt' => config('secure.salt')
|
'salt' => config('secure.salt')
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
Log::warning("[SetupWizard] Failed to set application key. No write permission.");
|
Log::warning("[SetupWizard] Failed to set application key. No write permission.");
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,7 +63,7 @@ class SetupController extends Controller
|
||||||
$siteUrl = url('/');
|
$siteUrl = url('/');
|
||||||
|
|
||||||
if (ends_with($siteUrl, '/index.php')) {
|
if (ends_with($siteUrl, '/index.php')) {
|
||||||
$siteUrl = substr($siteUrl, 0, -10);
|
$siteUrl = substr($siteUrl, 0, -10); // @codeCoverageIgnore
|
||||||
}
|
}
|
||||||
|
|
||||||
Option::set('site_url', $siteUrl);
|
Option::set('site_url', $siteUrl);
|
||||||
|
|
@ -143,9 +145,14 @@ class SetupController extends Controller
|
||||||
try {
|
try {
|
||||||
Artisan::call('view:clear');
|
Artisan::call('view:clear');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error('Error occured when processing view:clear', $e);
|
Log::error('Error occured when processing view:clear', [$e]);
|
||||||
|
|
||||||
File::cleanDirectory(storage_path('framework/views'));
|
$files = collect(File::files(storage_path('framework/views')));
|
||||||
|
$files->reject(function ($path) {
|
||||||
|
return ends_with($path, '.gitignore');
|
||||||
|
})->each(function ($path) {
|
||||||
|
File::delete($path);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('setup.updates.success', ['tips' => $tips]);
|
return view('setup.updates.success', ['tips' => $tips]);
|
||||||
|
|
|
||||||
167
tests/SetupControllerTest.php
Normal file
167
tests/SetupControllerTest.php
Normal file
|
|
@ -0,0 +1,167 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Foundation\Testing\WithoutMiddleware;
|
||||||
|
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||||
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
|
||||||
|
class SetupControllerTest extends TestCase
|
||||||
|
{
|
||||||
|
use DatabaseTransactions;
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->dropAllTables();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function tearDown()
|
||||||
|
{
|
||||||
|
$this->dropAllTables();
|
||||||
|
Mockery::close();
|
||||||
|
parent::tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function dropAllTables()
|
||||||
|
{
|
||||||
|
$tables = [
|
||||||
|
'closets', 'migrations', 'options', 'players', 'textures', 'users'
|
||||||
|
];
|
||||||
|
array_walk($tables, function ($table) {
|
||||||
|
Schema::dropIfExists($table);
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testWelcome()
|
||||||
|
{
|
||||||
|
$this->visit('/setup')
|
||||||
|
->see(config('database.connections.mysql.username'))
|
||||||
|
->see(config('database.connections.mysql.host'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInfo()
|
||||||
|
{
|
||||||
|
$this->visit('/setup/info')
|
||||||
|
->seePageIs('/setup/info');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFinish()
|
||||||
|
{
|
||||||
|
// Without `email` field
|
||||||
|
$this->post('/setup/finish')
|
||||||
|
->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Not an valid email address
|
||||||
|
$this->post('/setup/finish', ['email' => 'not_an_email'])
|
||||||
|
->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Without `password` field
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c'
|
||||||
|
])->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Password is too short
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c',
|
||||||
|
'password' => '1'
|
||||||
|
])->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Password is too long
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c',
|
||||||
|
'password' => str_random(17)
|
||||||
|
])->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Confirmation is not OK
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c',
|
||||||
|
'password' => '12345678',
|
||||||
|
'password_confirmation' => '12345679'
|
||||||
|
])->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Without `site_name` field
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c',
|
||||||
|
'password' => '12345678',
|
||||||
|
'password_confirmation' => '12345678'
|
||||||
|
])->dontSee(trans('setup.wizard.finish.title'));
|
||||||
|
|
||||||
|
// Regenerate keys
|
||||||
|
Artisan::shouldReceive('call')
|
||||||
|
->with('key:random')
|
||||||
|
->once()
|
||||||
|
->andReturn(true);
|
||||||
|
Artisan::shouldReceive('call')
|
||||||
|
->with('salt:random')
|
||||||
|
->once()
|
||||||
|
->andReturn(true);
|
||||||
|
Artisan::shouldReceive('call')
|
||||||
|
->with('migrate', ['--force' => true])
|
||||||
|
->once()
|
||||||
|
->andReturnUsing(function () {
|
||||||
|
$migration = new CreateAllTables();
|
||||||
|
$migration->up();
|
||||||
|
});
|
||||||
|
$this->post('/setup/finish', [
|
||||||
|
'email' => 'a@b.c',
|
||||||
|
'password' => '12345678',
|
||||||
|
'password_confirmation' => '12345678',
|
||||||
|
'site_name' => 'bs',
|
||||||
|
'generate_random' => true
|
||||||
|
])->see(trans('setup.wizard.finish.title'))
|
||||||
|
->see('a@b.c')
|
||||||
|
->see('12345678');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdate()
|
||||||
|
{
|
||||||
|
$this->visit('/setup/update')
|
||||||
|
->see(trans('setup.locked.text'));
|
||||||
|
|
||||||
|
option(['version' => '0.1.0']);
|
||||||
|
$this->visit('/setup/update')
|
||||||
|
->see(trans('setup.updates.welcome.title'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDoUpdate()
|
||||||
|
{
|
||||||
|
$current_version = config('app.version');
|
||||||
|
config(['app.version' => '100.0.0']);
|
||||||
|
copy(
|
||||||
|
database_path('update_scripts/update-3.1-to-3.1.1.php'),
|
||||||
|
database_path("update_scripts/update-$current_version-to-100.0.0.php")
|
||||||
|
); // Just a fixture
|
||||||
|
|
||||||
|
Artisan::shouldReceive('call')
|
||||||
|
->with('view:clear')
|
||||||
|
->andThrow(new Exception());
|
||||||
|
config(['options.new_option' => 'value']);
|
||||||
|
$this->post('/setup/update')
|
||||||
|
->assertViewHas('tips');
|
||||||
|
$this->assertEquals('value', option('new_option'));
|
||||||
|
$this->assertEquals('3.1.1', option('version'));
|
||||||
|
unlink(database_path("update_scripts/update-$current_version-to-100.0.0.php"));
|
||||||
|
|
||||||
|
option(['version' => '3.0.0']); // Fake old version
|
||||||
|
$this->post('/setup/update');
|
||||||
|
$this->assertEquals('100.0.0', option('version'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCheckDirectories()
|
||||||
|
{
|
||||||
|
Storage::shouldReceive('disk')
|
||||||
|
->with('root')
|
||||||
|
->andReturnSelf();
|
||||||
|
Storage::shouldReceive('has')
|
||||||
|
->with('storage/textures')
|
||||||
|
->andReturn(false);
|
||||||
|
Storage::shouldReceive('makeDirectory')
|
||||||
|
->with('storage/textures')
|
||||||
|
->andThrow(new Exception());
|
||||||
|
|
||||||
|
$this->assertFalse(\App\Http\Controllers\SetupController::checkDirectories());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user