setLocale('zh_CN');
$manager = app(PluginManager::class);
$markdown = $manager->readDocs('larablog/paid-content');
$html = $manager->readDocsHtml('larablog/paid-content');
$this->assertNotNull($markdown);
$this->assertNotNull($html);
$this->assertStringContainsString('付费内容', $markdown);
$this->assertStringContainsString('
assertStringContainsString('付费内容', $html);
$this->assertStringContainsString('', $html);
$this->assertStringNotContainsString('# Paid Content', (string) $markdown);
$this->assertStringNotContainsString('# 付费内容', $html);
}
public function test_docs_prefer_locale_file_then_fallback_to_readme(): void
{
$root = storage_path('framework/testing/plugins-'.uniqid());
$pluginDir = $root.'/acme/docsdemo';
mkdir($pluginDir, 0777, true);
file_put_contents($pluginDir.'/plugin.json', json_encode([
'name' => 'acme/docsdemo',
'title' => 'Docs demo',
'version' => '1.0.0',
'docs' => 'README.md',
]));
file_put_contents($pluginDir.'/README.md', "# English\n\nHello **world**.");
file_put_contents($pluginDir.'/README.zh_CN.md', "# 中文说明\n\n这是**加粗**。\n");
config(['larablog.plugin_path' => $root]);
$manager = app(PluginManager::class);
try {
$zh = (string) $manager->readDocs('acme/docsdemo', 'zh_CN');
$this->assertStringContainsString('中文说明', $zh);
$html = (string) $manager->readDocsHtml('acme/docsdemo', 'zh_CN');
$this->assertStringContainsString('assertStringContainsString('中文说明', $html);
$this->assertStringContainsString('', $html);
$this->assertStringNotContainsString('# 中文说明', $html);
$en = (string) $manager->readDocs('acme/docsdemo', 'en');
$this->assertStringContainsString('English', $en);
$this->assertStringNotContainsString('中文说明', $en);
} finally {
unlink($pluginDir.'/README.zh_CN.md');
unlink($pluginDir.'/README.md');
unlink($pluginDir.'/plugin.json');
rmdir($pluginDir);
rmdir($root.'/acme');
rmdir($root);
}
}
public function test_unsafe_locale_does_not_escape_plugin_directory(): void
{
$root = storage_path('framework/testing/plugins-'.uniqid());
$pluginDir = $root.'/acme/safe';
mkdir($pluginDir, 0777, true);
file_put_contents($pluginDir.'/plugin.json', json_encode([
'name' => 'acme/safe',
'title' => 'Safe',
'version' => '1.0.0',
'docs' => 'README.md',
]));
file_put_contents($pluginDir.'/README.md', "# Safe\n");
config(['larablog.plugin_path' => $root]);
$manager = app(PluginManager::class);
try {
$path = $manager->docsPath('acme/safe', '../..');
$this->assertNotNull($path);
$this->assertSame(realpath($pluginDir.'/README.md'), $path);
$this->assertStringContainsString('Safe', (string) $manager->readDocs('acme/safe', '../..'));
} finally {
unlink($pluginDir.'/README.md');
unlink($pluginDir.'/plugin.json');
rmdir($pluginDir);
rmdir($root.'/acme');
rmdir($root);
}
}
}