mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
PDF: Added tests for pdf command, fixed old tests for changes
This commit is contained in:
parent
1c7128c2cb
commit
f0dd33c1b4
@ -76,7 +76,7 @@ class PdfGenerator
|
|||||||
|
|
||||||
$replacementsByPlaceholder = [
|
$replacementsByPlaceholder = [
|
||||||
'{input_html_path}' => $inputHtml,
|
'{input_html_path}' => $inputHtml,
|
||||||
'{output_html_path}' => $outputPdf,
|
'{output_pdf_path}' => $outputPdf,
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($replacementsByPlaceholder as $placeholder => $replacement) {
|
foreach ($replacementsByPlaceholder as $placeholder => $replacement) {
|
||||||
|
@ -6,8 +6,8 @@ use BookStack\Entities\Models\Book;
|
|||||||
use BookStack\Entities\Models\Chapter;
|
use BookStack\Entities\Models\Chapter;
|
||||||
use BookStack\Entities\Models\Page;
|
use BookStack\Entities\Models\Page;
|
||||||
use BookStack\Entities\Tools\PdfGenerator;
|
use BookStack\Entities\Tools\PdfGenerator;
|
||||||
|
use BookStack\Exceptions\PdfExportException;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Illuminate\Support\Str;
|
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
class ExportTest extends TestCase
|
class ExportTest extends TestCase
|
||||||
@ -483,7 +483,7 @@ class ExportTest extends TestCase
|
|||||||
{
|
{
|
||||||
$page = $this->entities->page();
|
$page = $this->entities->page();
|
||||||
|
|
||||||
config()->set('snappy.pdf.binary', '/abc123');
|
config()->set('exports.snappy.pdf_binary', '/abc123');
|
||||||
config()->set('app.allow_untrusted_server_fetching', false);
|
config()->set('app.allow_untrusted_server_fetching', false);
|
||||||
|
|
||||||
$resp = $this->asEditor()->get($page->getUrl('/export/pdf'));
|
$resp = $this->asEditor()->get($page->getUrl('/export/pdf'));
|
||||||
@ -494,6 +494,41 @@ class ExportTest extends TestCase
|
|||||||
$resp->assertStatus(500); // Bad response indicates wkhtml usage
|
$resp->assertStatus(500); // Bad response indicates wkhtml usage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_pdf_command_option_used_if_set()
|
||||||
|
{
|
||||||
|
$page = $this->entities->page();
|
||||||
|
$command = 'cp {input_html_path} {output_pdf_path}';
|
||||||
|
config()->set('exports.pdf_command', $command);
|
||||||
|
|
||||||
|
$resp = $this->asEditor()->get($page->getUrl('/export/pdf'));
|
||||||
|
$download = $resp->getContent();
|
||||||
|
|
||||||
|
$this->assertStringContainsString(e($page->name), $download);
|
||||||
|
$this->assertStringContainsString('<html lang=', $download);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_pdf_command_option_errors_if_output_path_not_written_to()
|
||||||
|
{
|
||||||
|
$page = $this->entities->page();
|
||||||
|
$command = 'echo "hi"';
|
||||||
|
config()->set('exports.pdf_command', $command);
|
||||||
|
|
||||||
|
$this->assertThrows(function () use ($page) {
|
||||||
|
$this->withoutExceptionHandling()->asEditor()->get($page->getUrl('/export/pdf'));
|
||||||
|
}, PdfExportException::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_pdf_command_option_errors_if_command_returns_error_status()
|
||||||
|
{
|
||||||
|
$page = $this->entities->page();
|
||||||
|
$command = 'exit 1';
|
||||||
|
config()->set('exports.pdf_command', $command);
|
||||||
|
|
||||||
|
$this->assertThrows(function () use ($page) {
|
||||||
|
$this->withoutExceptionHandling()->asEditor()->get($page->getUrl('/export/pdf'));
|
||||||
|
}, PdfExportException::class);
|
||||||
|
}
|
||||||
|
|
||||||
public function test_html_exports_contain_csp_meta_tag()
|
public function test_html_exports_contain_csp_meta_tag()
|
||||||
{
|
{
|
||||||
$entities = [
|
$entities = [
|
||||||
|
@ -80,22 +80,22 @@ class ConfigTest extends TestCase
|
|||||||
|
|
||||||
public function test_dompdf_remote_fetching_controlled_by_allow_untrusted_server_fetching_false()
|
public function test_dompdf_remote_fetching_controlled_by_allow_untrusted_server_fetching_false()
|
||||||
{
|
{
|
||||||
$this->checkEnvConfigResult('ALLOW_UNTRUSTED_SERVER_FETCHING', 'false', 'dompdf.options.enable_remote', false);
|
$this->checkEnvConfigResult('ALLOW_UNTRUSTED_SERVER_FETCHING', 'false', 'exports.dompdf.enable_remote', false);
|
||||||
$this->checkEnvConfigResult('ALLOW_UNTRUSTED_SERVER_FETCHING', 'true', 'dompdf.options.enable_remote', true);
|
$this->checkEnvConfigResult('ALLOW_UNTRUSTED_SERVER_FETCHING', 'true', 'exports.dompdf.enable_remote', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_dompdf_paper_size_options_are_limited()
|
public function test_dompdf_paper_size_options_are_limited()
|
||||||
{
|
{
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'cat', 'dompdf.options.default_paper_size', 'a4');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'cat', 'exports.dompdf.default_paper_size', 'a4');
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'letter', 'dompdf.options.default_paper_size', 'letter');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'letter', 'exports.dompdf.default_paper_size', 'letter');
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'a4', 'dompdf.options.default_paper_size', 'a4');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'a4', 'exports.dompdf.default_paper_size', 'a4');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_snappy_paper_size_options_are_limited()
|
public function test_snappy_paper_size_options_are_limited()
|
||||||
{
|
{
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'cat', 'snappy.pdf.options.page-size', 'A4');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'cat', 'exports.snappy.options.page-size', 'A4');
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'letter', 'snappy.pdf.options.page-size', 'Letter');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'letter', 'exports.snappy.options.page-size', 'Letter');
|
||||||
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'a4', 'snappy.pdf.options.page-size', 'A4');
|
$this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'a4', 'exports.snappy.options.page-size', 'A4');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_sendmail_command_is_configurable()
|
public function test_sendmail_command_is_configurable()
|
||||||
|
Loading…
Reference in New Issue
Block a user