Updated create routes to prevent slug clashes

Fixes #758
This commit is contained in:
Dan Brown
2018-03-25 11:34:42 +01:00
parent df1a3a0715
commit 1a9f676416
11 changed files with 51 additions and 55 deletions

View File

@ -139,7 +139,7 @@ class EntityTest extends BrowserKitTest
// Navigate to chapter create page
->visit($book->getUrl())
->click('New Chapter')
->seePageIs($book->getUrl() . '/chapter/create')
->seePageIs($book->getUrl() . '/create-chapter')
// Fill out form
->type($chapter->name, '#name')
->type($chapter->description, '#description')
@ -161,7 +161,7 @@ class EntityTest extends BrowserKitTest
->visit('/books')
// Choose to create a book
->click('Create New Book')
->seePageIs('/books/create')
->seePageIs('/create-book')
// Fill out form & save
->type($book->name, '#name')
->type($book->description, '#description')
@ -172,7 +172,7 @@ class EntityTest extends BrowserKitTest
// Ensure duplicate names are given different slugs
$this->asAdmin()
->visit('/books/create')
->visit('/create-book')
->type($book->name, '#name')
->type($book->description, '#description')
->press('Save Book');

View File

@ -70,7 +70,7 @@ class PageDraftTest extends BrowserKitTest
$book = \BookStack\Book::first();
$this->asAdmin()->visit('/')
->dontSeeInElement('#recent-drafts', 'New Page')
->visit($book->getUrl() . '/page/create')
->visit($book->getUrl() . '/create-page')
->visit('/')
->seeInElement('#recent-drafts', 'New Page');
}
@ -82,7 +82,7 @@ class PageDraftTest extends BrowserKitTest
$newUser = $this->getEditor();
$this->actingAs($newUser)->visit('/')
->visit($book->getUrl() . '/page/create')
->visit($book->getUrl() . '/create-page')
->visit($chapter->getUrl() . '/create-page')
->visit($book->getUrl())
->seeInElement('.page-list', 'New Page');

View File

@ -109,21 +109,21 @@ class RestrictionsTest extends BrowserKitTest
$this->setEntityRestrictions($book, ['view', 'delete', 'update']);
$this->forceVisit($bookUrl . '/chapter/create')
$this->forceVisit($bookUrl . '/create-chapter')
->see('You do not have permission')->seePageIs('/');
$this->forceVisit($bookUrl . '/page/create')
$this->forceVisit($bookUrl . '/create-page')
->see('You do not have permission')->seePageIs('/');
$this->visit($bookUrl)->dontSeeInElement('.action-buttons', 'New Page')
->dontSeeInElement('.action-buttons', 'New Chapter');
$this->setEntityRestrictions($book, ['view', 'create']);
$this->visit($bookUrl . '/chapter/create')
$this->visit($bookUrl . '/create-chapter')
->type('test chapter', 'name')
->type('test description for chapter', 'description')
->press('Save Chapter')
->seePageIs($bookUrl . '/chapter/test-chapter');
$this->visit($bookUrl . '/page/create')
$this->visit($bookUrl . '/create-page')
->type('test page', 'name')
->type('test content', 'html')
->press('Save Page')
@ -454,21 +454,21 @@ class RestrictionsTest extends BrowserKitTest
$this->setEntityRestrictions($book, ['view', 'delete', 'update']);
$this->forceVisit($bookUrl . '/chapter/create')
$this->forceVisit($bookUrl . '/create-chapter')
->see('You do not have permission')->seePageIs('/');
$this->forceVisit($bookUrl . '/page/create')
$this->forceVisit($bookUrl . '/create-page')
->see('You do not have permission')->seePageIs('/');
$this->visit($bookUrl)->dontSeeInElement('.action-buttons', 'New Page')
->dontSeeInElement('.action-buttons', 'New Chapter');
$this->setEntityRestrictions($book, ['view', 'create']);
$this->visit($bookUrl . '/chapter/create')
$this->visit($bookUrl . '/create-chapter')
->type('test chapter', 'name')
->type('test description for chapter', 'description')
->press('Save Chapter')
->seePageIs($bookUrl . '/chapter/test-chapter');
$this->visit($bookUrl . '/page/create')
$this->visit($bookUrl . '/create-page')
->type('test page', 'name')
->type('test content', 'html')
->press('Save Page')

View File

@ -214,12 +214,12 @@ class RolesTest extends BrowserKitTest
public function test_books_create_all_permissions()
{
$this->checkAccessPermission('book-create-all', [
'/books/create'
'/create-book'
], [
'/books' => 'Create New Book'
]);
$this->visit('/books/create')
$this->visit('/create-book')
->type('test book', 'name')
->type('book desc', 'description')
->press('Save Book')
@ -293,40 +293,38 @@ class RolesTest extends BrowserKitTest
{
$book = \BookStack\Book::take(1)->get()->first();
$ownBook = $this->createEntityChainBelongingToUser($this->user)['book'];
$baseUrl = $ownBook->getUrl() . '/chapter';
$this->checkAccessPermission('chapter-create-own', [
$baseUrl . '/create'
$ownBook->getUrl('/create-chapter')
], [
$ownBook->getUrl() => 'New Chapter'
]);
$this->visit($baseUrl . '/create')
$this->visit($ownBook->getUrl('/create-chapter'))
->type('test chapter', 'name')
->type('chapter desc', 'description')
->press('Save Chapter')
->seePageIs($baseUrl . '/test-chapter');
->seePageIs($ownBook->getUrl('/chapter/test-chapter'));
$this->visit($book->getUrl())
->dontSeeInElement('.action-buttons', 'New Chapter')
->visit($book->getUrl() . '/chapter/create')
->visit($book->getUrl('/create-chapter'))
->seePageIs('/');
}
public function test_chapter_create_all_permissions()
{
$book = \BookStack\Book::take(1)->get()->first();
$baseUrl = $book->getUrl() . '/chapter';
$this->checkAccessPermission('chapter-create-all', [
$baseUrl . '/create'
$book->getUrl('/create-chapter')
], [
$book->getUrl() => 'New Chapter'
]);
$this->visit($baseUrl . '/create')
$this->visit($book->getUrl('/create-chapter'))
->type('test chapter', 'name')
->type('chapter desc', 'description')
->press('Save Chapter')
->seePageIs($baseUrl . '/test-chapter');
->seePageIs($book->getUrl('/chapter/test-chapter'));
}
public function test_chapter_edit_own_permission()
@ -403,10 +401,8 @@ class RolesTest extends BrowserKitTest
$ownBook = $entities['book'];
$ownChapter = $entities['chapter'];
$baseUrl = $ownBook->getUrl() . '/page';
$createUrl = $baseUrl . '/create';
$createUrlChapter = $ownChapter->getUrl() . '/create-page';
$createUrl = $ownBook->getUrl('/create-page');
$createUrlChapter = $ownChapter->getUrl('/create-page');
$accessUrls = [$createUrl, $createUrlChapter];
foreach ($accessUrls as $url) {
@ -427,15 +423,15 @@ class RolesTest extends BrowserKitTest
$this->seePageIs($expectedUrl);
}
$this->visit($baseUrl . '/create')
$this->visit($createUrl)
->type('test page', 'name')
->type('page desc', 'html')
->press('Save Page')
->seePageIs($baseUrl . '/test-page');
->seePageIs($ownBook->getUrl('/page/test-page'));
$this->visit($book->getUrl())
->dontSeeInElement('.action-buttons', 'New Page')
->visit($book->getUrl() . '/page/create')
->visit($book->getUrl() . '/create-page')
->seePageIs('/');
$this->visit($chapter->getUrl())
->dontSeeInElement('.action-buttons', 'New Page')
@ -448,9 +444,9 @@ class RolesTest extends BrowserKitTest
$book = \BookStack\Book::take(1)->get()->first();
$chapter = \BookStack\Chapter::take(1)->get()->first();
$baseUrl = $book->getUrl() . '/page';
$createUrl = $baseUrl . '/create';
$createUrl = $book->getUrl('/create-page');
$createUrlChapter = $chapter->getUrl() . '/create-page';
$createUrlChapter = $chapter->getUrl('/create-page');
$accessUrls = [$createUrl, $createUrlChapter];
foreach ($accessUrls as $url) {
@ -471,17 +467,17 @@ class RolesTest extends BrowserKitTest
$this->seePageIs($expectedUrl);
}
$this->visit($baseUrl . '/create')
$this->visit($createUrl)
->type('test page', 'name')
->type('page desc', 'html')
->press('Save Page')
->seePageIs($baseUrl . '/test-page');
->seePageIs($book->getUrl('/page/test-page'));
$this->visit($chapter->getUrl() . '/create-page')
$this->visit($chapter->getUrl('/create-page'))
->type('new test page', 'name')
->type('page desc', 'html')
->press('Save Page')
->seePageIs($baseUrl . '/new-test-page');
->seePageIs($book->getUrl('/page/new-test-page'));
}
public function test_page_edit_own_permission()