Rework TIC processing and added test cases
This commit is contained in:
137
tests/Feature/TicProcessingTest.php
Normal file
137
tests/Feature/TicProcessingTest.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Tests\TestCase;
|
||||
|
||||
use App\Classes\FTN\Tic;
|
||||
use App\Models\{Address,Filearea};
|
||||
use App\Exceptions\{InvalidCRCException,
|
||||
InvalidPasswordException,
|
||||
NodeNotSubscribedException,
|
||||
NoWriteSecurityException};
|
||||
use App\Exceptions\TIC\{NoFileAreaException,NotToMeException,SizeMismatchException};
|
||||
|
||||
/**
|
||||
* Test TIC processing
|
||||
*
|
||||
* + TIC file with no file
|
||||
* + TIC file with file wrong size
|
||||
* + TIC file with file wrong CRC
|
||||
* + TIC file from host with no write
|
||||
* + TIC file not to me
|
||||
* + TIC file no filearea here
|
||||
* + TIC file from host no area
|
||||
* + TIC file from host no exports
|
||||
* + TIC file invalid password
|
||||
* + TIC export
|
||||
*
|
||||
*/
|
||||
|
||||
class TicProcessingTest extends TestCase
|
||||
{
|
||||
use DatabaseTransactions;
|
||||
|
||||
public function test_tic_nofile(): void
|
||||
{
|
||||
$this->expectException(FileNotFoundException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-no_file.tic');
|
||||
}
|
||||
|
||||
public function test_tic_invalidcrc(): void
|
||||
{
|
||||
$this->expectException(InvalidCRCException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-invalid_crc.tic');
|
||||
}
|
||||
|
||||
public function test_tic_nofilearea(): void
|
||||
{
|
||||
$this->expectException(NoFileAreaException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-no_area.tic');
|
||||
}
|
||||
|
||||
public function test_tic_bad_size(): void
|
||||
{
|
||||
$this->expectException(SizeMismatchException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-bad_size.tic');
|
||||
}
|
||||
|
||||
public function test_tic_not_to_me(): void
|
||||
{
|
||||
$this->expectException(NotToMeException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-not_to_me.tic');
|
||||
}
|
||||
|
||||
public function test_tic_wrong_password(): void
|
||||
{
|
||||
// Configure a node address
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$ao->system->sessions()->attach($ao->zone_id,['ticpass'=>'PASSWORD']);
|
||||
|
||||
$this->expectException(InvalidPasswordException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-wrong_password.tic');
|
||||
}
|
||||
|
||||
public function test_tic_node_not_subscribed(): void
|
||||
{
|
||||
// Configure a node address
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$ao->system->sessions()->attach($ao->zone_id,['ticpass'=>'PASSWORD']);
|
||||
|
||||
$this->expectException(NodeNotSubscribedException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-file.tic');
|
||||
}
|
||||
|
||||
public function test_tic_node_no_write(): void
|
||||
{
|
||||
// Configure a node address
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$ao->system->sessions()->attach($ao->zone_id,['ticpass'=>'PASSWORD']);
|
||||
$ao->fileareas()->syncWithPivotValues(Filearea::where('name','FILE_AREA')->single()->id,['subscribed'=>Carbon::now()]);
|
||||
|
||||
$this->expectException(NoWriteSecurityException::class);
|
||||
|
||||
$tic = new Tic;
|
||||
$tic->load('000E-1700545740-file.tic');
|
||||
}
|
||||
|
||||
public function test_tic_good(): void
|
||||
{
|
||||
// Configure a node address
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$ao->system->sessions()->attach($ao->zone_id,['ticpass'=>'PASSWORD']);
|
||||
$ao->fileareas()->syncWithPivotValues(Filearea::where('name','FILE_AREA')->single()->id,['subscribed'=>Carbon::now()]);
|
||||
$ao->unguard();
|
||||
$ao->update(['security'=>1]);
|
||||
|
||||
$tic = new Tic;
|
||||
$file = $tic->load('000E-1700545740-file.tic');
|
||||
|
||||
$tic->save();
|
||||
|
||||
$this->assertModelExists($file);
|
||||
|
||||
$file->refresh();
|
||||
$this->assertEquals('100:1/0',$file->fftn->ftn3d);
|
||||
$this->assertEquals('100:10/11',$file->origin->ftn3d);
|
||||
$this->assertCount(12,$file->seenby);
|
||||
$this->assertCount(4,$file->path);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user