forked from BookStackApp/BookStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathErrorTest.php
More file actions
90 lines (71 loc) · 3.09 KB
/
ErrorTest.php
File metadata and controls
90 lines (71 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
namespace Tests;
use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
use Illuminate\Support\Facades\Log;
class ErrorTest extends TestCase
{
public function test_404_page_does_not_show_login()
{
// Due to middleware being handled differently this will not fail
// if our custom, middleware-loaded handler fails but this is here
// as a reminder and as a general check in the event of other issues.
$editor = $this->users->editor();
$editor->name = 'tester';
$editor->save();
$this->actingAs($editor);
$notFound = $this->get('/fgfdngldfnotfound');
$notFound->assertStatus(404);
$notFound->assertDontSeeText('Log in');
$notFound->assertSeeText('tester');
}
public function test_404_page_does_not_non_visible_content()
{
$editor = $this->users->editor();
$book = $this->entities->book();
$this->actingAs($editor)->get($book->getUrl())->assertOk();
$this->permissions->disableEntityInheritedPermissions($book);
$this->actingAs($editor)->get($book->getUrl())->assertNotFound();
}
public function test_404_page_shows_visible_content_within_non_visible_parent()
{
$editor = $this->users->editor();
$book = $this->entities->book();
$page = $book->pages()->first();
$this->actingAs($editor)->get($page->getUrl())->assertOk();
$this->permissions->disableEntityInheritedPermissions($book);
$this->permissions->addEntityPermission($page, ['view'], $editor->roles()->first());
$resp = $this->actingAs($editor)->get($book->getUrl());
$resp->assertNotFound();
$resp->assertSee($page->name);
$resp->assertDontSee($book->name);
}
public function test_item_not_found_does_not_get_logged_to_file()
{
$this->actingAs($this->users->viewer());
$handler = $this->withTestLogger();
$book = $this->entities->book();
// Ensure we're seeing errors
Log::error('cat');
$this->assertTrue($handler->hasErrorThatContains('cat'));
$this->get('/books/arandomnotfouindbook');
$this->get($book->getUrl('/chapter/arandomnotfouindchapter'));
$this->get($book->getUrl('/chapter/arandomnotfouindpages'));
$this->assertCount(1, $handler->getRecords());
}
public function test_access_to_non_existing_image_location_provides_404_response()
{
$resp = $this->actingAs($this->users->viewer())->get('/uploads/images/gallery/2021-05/anonexistingimage.png');
$resp->assertStatus(404);
$resp->assertSeeText('Image Not Found');
}
public function test_posts_above_php_limit_shows_friendly_error()
{
// Fake super large JSON request
$resp = $this->asEditor()->call('GET', '/books', [], [], [], [
'CONTENT_LENGTH' => '10000000000',
'HTTP_ACCEPT' => 'application/json',
]);
$resp->assertStatus(413);
$resp->assertJson(['error' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.']);
}
}