Files
ops-Logchecker/tests/LogcheckerTest.php
2020-04-29 13:04:11 +01:00

87 lines
3.2 KiB
PHP

<?php
namespace OrpheusNET\Logchecker;
use FilesystemIterator;
use OrpheusNET\Logchecker\Check\Checksum;
use OrpheusNET\Logchecker\Check\Ripper;
use PHPUnit\Framework\TestCase;
class LogcheckerTest extends TestCase
{
public function logDataProvider(): array
{
$return = [];
foreach ([Ripper::EAC, Ripper::XLD, Ripper::WHIPPER] as $ripper) {
$basePath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', strtolower($ripper)]);
foreach (new FilesystemIterator($basePath . DIRECTORY_SEPARATOR . 'originals') as $entry) {
$return[] = [$ripper, $entry->getPathname(), $entry->getFilename()];
}
}
return $return;
}
/**
* @dataProvider logDataProvider
*/
public function testLogchecker(string $ripper, string $filePath, string $fileName): void
{
$basePath = implode(DIRECTORY_SEPARATOR, [__DIR__, 'logs', strtolower($ripper)]);
if (!Checksum::logcheckerExists($ripper)) {
$this->markTestSkipped("Need to install {$ripper} logchecker");
}
$detailsFile = implode(DIRECTORY_SEPARATOR, [$basePath, 'details', str_replace('.log', '.json', $fileName)]);
if (!file_exists($detailsFile)) {
$this->markTestIncomplete("Missing details file:\n- " . $detailsFile . "\n- " . $filePath);
}
$htmlFile = implode(DIRECTORY_SEPARATOR, [$basePath, 'html', $fileName]);
if (!file_exists($htmlFile)) {
$this->markTestIncomplete("Missing html file:\n- " . $htmlFile . "\n- " . $filePath);
}
$logchecker = new Logchecker();
$logchecker->newFile($filePath);
$logchecker->parse();
$actual = [
'ripper' => $logchecker->getRipper(),
'version' => $logchecker->getRipperVersion(),
'language' => $logchecker->getLanguage(),
'combined' => $logchecker->isCombinedLog(),
'score' => $logchecker->getScore(),
'checksum' => $logchecker->getChecksumState(),
'details' => $logchecker->getDetails()
];
$this->assertEquals(json_decode(file_get_contents($detailsFile), true), $actual);
$this->assertStringEqualsFile($htmlFile, $logchecker->getLog());
}
public function testGetAcceptValues(): void
{
$this->assertSame(".txt,.TXT,.log,.LOG", Logchecker::getAcceptValues());
}
public function testGetLogcheckerVersion(): void
{
$composer = json_decode(
file_get_contents(implode(DIRECTORY_SEPARATOR, [__DIR__, '..', 'composer.json'])),
true
);
$this->assertSame($composer['version'], Logchecker::getLogcheckerVersion());
}
public function testCheckUnknownLog(): void
{
$logchecker = new Logchecker();
$logchecker->newFile(implode(DIRECTORY_SEPARATOR, [__DIR__, 'LogcheckerTest.php']));
$logchecker->parse();
$this->assertSame(Ripper::UNKNOWN, $logchecker->getRipper());
$this->assertNull($logchecker->getRipperVersion());
$this->assertSame(0, $logchecker->getScore());
$this->assertSame('en', $logchecker->getLanguage());
$this->assertSame(['Unknown log file, could not determine ripper.'], $logchecker->getDetails());
}
}