1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-28 17:02:04 +03:00

Added "update-url" command to find/replace url in the database

- Also aligned format of command descriptions.

Targeted most common columns.
Have not done revisions for the sake of keeping that
content true to how it was originally stored but could
cause unexpected behaviour.

For #1225
This commit is contained in:
Dan Brown
2020-04-09 16:58:40 +01:00
parent 1962c81742
commit e83d2eedbb
6 changed files with 128 additions and 8 deletions

View File

@ -5,6 +5,7 @@ use BookStack\Entities\Bookshelf;
use BookStack\Entities\Page;
use BookStack\Auth\User;
use BookStack\Entities\Repos\PageRepo;
use Symfony\Component\Console\Exception\RuntimeException;
class CommandsTest extends TestCase
{
@ -166,4 +167,31 @@ class CommandsTest extends TestCase
$this->assertDatabaseHas('entity_permissions', ['restrictable_id' => $child->id, 'action' => 'view', 'role_id' => $editorRole->id]);
$this->assertDatabaseHas('entity_permissions', ['restrictable_id' => $child->id, 'action' => 'update', 'role_id' => $editorRole->id]);
}
public function test_update_url_command_updates_page_content()
{
$page = Page::query()->first();
$page->html = '<a href="https://example.com/donkeys"></a>';
$page->save();
$this->artisan('bookstack:update-url https://example.com https://cats.example.com')
->expectsQuestion("This will search for \"https://example.com\" in your database and replace it with \"https://cats.example.com\".\nAre you sure you want to proceed?", 'y')
->expectsQuestion("This operation could cause issues if used incorrectly. Have you made a backup of your existing database?", 'y');
$this->assertDatabaseHas('pages', [
'id' => $page->id,
'html' => '<a href="https://cats.example.com/donkeys"></a>'
]);
}
public function test_update_url_command_requires_valid_url()
{
$badUrlMessage = "The given urls are expected to be full urls starting with http:// or https://";
$this->artisan('bookstack:update-url //example.com https://cats.example.com')->expectsOutput($badUrlMessage);
$this->artisan('bookstack:update-url https://example.com htts://cats.example.com')->expectsOutput($badUrlMessage);
$this->artisan('bookstack:update-url example.com https://cats.example.com')->expectsOutput($badUrlMessage);
$this->expectException(RuntimeException::class);
$this->artisan('bookstack:update-url https://cats.example.com');
}
}