Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
VicDeo committed Nov 14, 2014
1 parent e9df1cb commit a8ef207
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 27 deletions.
11 changes: 5 additions & 6 deletions tests/avir.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#!/bin/bash

content=$(tee)

if [ -z $1 ]; then
exit 56
if [[ $content =~ .*kitten ]]; then
echo "Oh my god! : Kitten FOUND"
exit 1
fi

if [[ $1 =~ .*kitten.inf$ ]]; then
echo "$1 : Kitten FOUND"
exit 1
fi
echo "$1 : OK"
32 changes: 17 additions & 15 deletions tests/scannertest.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,36 +27,33 @@ class Test_Files_Antivirus_Scanner extends \PHPUnit_Framework_TestCase {
private $config = array();

public function setUp() {
\OC_App::enable('files_antivirus');

\OC_User::clearBackends();
\OC_User::useBackend(new \OC_User_Dummy());
\OC\Files\Filesystem::clearMounts();

//login
\OC_User::createUser('test', 'test');
$this->user = \OC_User::getUser();
\OC_User::setUserId('test');

\OC\Files\Filesystem::clearMounts();

$textData = "sample file\n";
$this->storage = new \OC\Files\Storage\Temporary(array());
$this->storage->file_put_contents(self::TEST_CLEAN_FILENAME, $textData);
$this->storage->file_put_contents(self::TEST_INFECTED_FILENAME, $textData);

\OC\Files\Filesystem::init('test', '');
\OC\Files\Filesystem::clearMounts();
\OC\Files\Filesystem::mount($this->storage, array(), '/');

\OC\Files\Filesystem::file_put_contents(self::TEST_CLEAN_FILENAME, self::TEST_CLEAN_FILENAME);
\OC\Files\Filesystem::file_put_contents(self::TEST_INFECTED_FILENAME, self::TEST_INFECTED_FILENAME);

$this->config['av_mode'] = \OCP\Config::getAppValue('files_antivirus', 'av_mode', null);
$this->config['av_path'] = \OCP\Config::getAppValue('files_antivirus', 'av_path', null);


\OCP\Config::setAppValue('files_antivirus', 'av_mode', 'executable');
\OCP\Config::setAppValue('files_antivirus', 'av_path', __DIR__ . '/avir.sh');

$query = \OCP\DB::prepare('DELETE FROM `*PREFIX*files_antivirus_status`');
$query->execute(array());
\OCA\Files_Antivirus\Status::init();
}

public function tearDown() {
\OC_User::setUserId($this->user);

if (!is_null($this->config['av_mode'])){
\OCP\Config::setAppValue('files_antivirus', 'av_mode', $this->config['av_mode']);
}
Expand All @@ -67,13 +64,18 @@ public function tearDown() {

public function testScanFile(){
$fileView = new \OC\Files\View('');

$cleanStatus = \OCA\Files_Antivirus\Scanner::scanFile($fileView, self::TEST_CLEAN_FILENAME);
$this->assertInstanceOf('\OCA\Files_Antivirus\Status', $cleanStatus);
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_CLEAN, $cleanStatus->getNumericStatus());

$infectedStatus = \OCA\Files_Antivirus\Scanner::scanFile($fileView, 'non-existing.file');
$unknownStatus = \OCA\Files_Antivirus\Scanner::scanFile($fileView, 'non-existing.file');
$this->assertInstanceOf('\OCA\Files_Antivirus\Status', $unknownStatus);
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED, $unknownStatus->getNumericStatus());

$infectedStatus = \OCA\Files_Antivirus\Scanner::scanFile($fileView, self::TEST_INFECTED_FILENAME);
$this->assertInstanceOf('\OCA\Files_Antivirus\Status', $infectedStatus);
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED, $infectedStatus->getNumericStatus());
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_INFECTED, $infectedStatus->getNumericStatus());
}

}
19 changes: 13 additions & 6 deletions tests/statustest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,18 @@ class Test_Files_Antivirus_Status extends \PHPUnit_Framework_TestCase {
const TEST_INFECTED = 1;
const TEST_ERROR = 40;

public function setUp() {
\OC_App::enable('files_antivirus');
$query = \OCP\DB::prepare('DELETE FROM `*PREFIX*files_antivirus_status`');
$query->execute(array());
\OCA\Files_Antivirus\Status::init();
}

public function testParseResponse(){
// Testing status codes
$testStatus = new \OCA\Files_Antivirus\Status();

$testStatus->parseResponse('dummy', self::TEST_CLEAN);
$testStatus->parseResponse('dummy : OK', self::TEST_CLEAN);
$cleanScan = $testStatus->getNumericStatus();
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_CLEAN, $cleanScan);
$this->assertEquals("", $testStatus->getDetails());
Expand All @@ -39,22 +46,22 @@ public function testParseResponse(){
$testStatus->parseResponse('');
$failedScan2 = $testStatus->getNumericStatus();
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED, $failedScan2);
$this->assertEquals("unknown", $testStatus->getDetails());
$this->assertEquals('No matching rules. Please check antivirus rules.', $testStatus->getDetails());

// No rules matched result is unknown too
$testStatus->parseResponse('123dc');
$failedScan3 = $testStatus->getNumericStatus();
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED, $failedScan3);
$this->assertEquals('unknown', $testStatus->getDetails());
$this->assertEquals('No matching rules. Please check antivirus rules.', $testStatus->getDetails());

// File is clean
$testStatus->parseResponse('Thu Oct 28 13:02:19 2010 -> /tmp/kitten : OK');
$cleanScan2 = $testStatus->getNumericStatus();
//$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_CLEAN, $cleanScan2);
//$this->assertEquals('', $testStatus->getDetails());
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_CLEAN, $cleanScan2);
$this->assertEquals('', $testStatus->getDetails());

// File is infected
$testStatus->parseResponse('Thu Oct 28 13:02:19 2010 -> /tmp/kitten: Heuristics.Broken.Kitten FOUND');
$testStatus->parseResponse('Thu Oct 28 13:02:19 2010 -> /tmp/kitten: Heuristics.Broken.Kitten FOUND');
$infectedScan2 = $testStatus->getNumericStatus();
$this->assertEquals(\OCA\Files_Antivirus\Status::SCANRESULT_INFECTED, $infectedScan2);
$this->assertEquals('Heuristics.Broken.Kitten', $testStatus->getDetails());
Expand Down

0 comments on commit a8ef207

Please sign in to comment.