129 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace Tests\Feature\Mailgateway;
 | 
						|
 | 
						|
use App\Mailgateway\Types\LocalType;
 | 
						|
use App\Mailgateway\Types\MailmanType;
 | 
						|
use Illuminate\Foundation\Testing\DatabaseTransactions;
 | 
						|
use Livewire\Livewire;
 | 
						|
use Modules\Mailgateway\Components\Form;
 | 
						|
use Tests\RequestFactories\MailmanTypeRequest;
 | 
						|
use Tests\TestCase;
 | 
						|
 | 
						|
uses(DatabaseTransactions::class);
 | 
						|
uses(TestCase::class);
 | 
						|
 | 
						|
it('test it saves a mail gateway', function () {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->set('name', 'lala')
 | 
						|
        ->set('domain', 'example.com')
 | 
						|
        ->set('cls', LocalType::class)
 | 
						|
        ->call('onSave')
 | 
						|
        ->assertDispatched('closeModal')
 | 
						|
        ->assertDispatched('refresh-page')
 | 
						|
        ->assertDispatched('success');
 | 
						|
 | 
						|
    $this->assertDatabaseHas('mailgateways', [
 | 
						|
        'domain' => 'example.com',
 | 
						|
        'name' => 'lala',
 | 
						|
        'type' => json_encode([
 | 
						|
            'cls' => LocalType::class,
 | 
						|
            'params' => [],
 | 
						|
        ]),
 | 
						|
    ]);
 | 
						|
});
 | 
						|
 | 
						|
it('validates type', function () {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->set('cls', '')
 | 
						|
        ->assertHasErrors(['cls' => 'required']);
 | 
						|
});
 | 
						|
 | 
						|
it('test it validates mail gateway', function (array $attributes, array $errors) {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->set('name', 'lala')
 | 
						|
        ->set('domain', 'example.com')
 | 
						|
        ->set('cls', LocalType::class)
 | 
						|
        ->setArray($attributes)
 | 
						|
        ->call('onSave')
 | 
						|
        ->assertHasErrors($errors)
 | 
						|
        ->assertNotDispatched('closeModal')
 | 
						|
        ->assertNotDispatched('refresh-page')
 | 
						|
        ->assertNotDispatched('success');
 | 
						|
})->with([
 | 
						|
    [['name' => ''], ['name' => 'required']],
 | 
						|
    [['domain' => ''], ['domain' => 'required']],
 | 
						|
]);
 | 
						|
 | 
						|
it('test it validates mailman type', function (array $attributes, array $errors) {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->set('name', 'lala')
 | 
						|
        ->set('domain', 'example.com')
 | 
						|
        ->set('cls', MailmanType::class)
 | 
						|
        ->set('params.url', 'exampl.com')
 | 
						|
        ->set('params.user', '::user::')
 | 
						|
        ->set('params.password', 'password')
 | 
						|
        ->setArray($attributes)
 | 
						|
        ->call('onSave')
 | 
						|
        ->assertHasErrors($errors)
 | 
						|
        ->assertNotDispatched('closeModal');
 | 
						|
})->with([
 | 
						|
    [['params.url' => ''], ['params.url' => 'required']],
 | 
						|
    [['params.user' => ''], ['params.user' => 'required']],
 | 
						|
    [['params.password' => ''], ['params.password' => 'required']],
 | 
						|
    [['params.owner' => ''], ['params.owner' => 'required']],
 | 
						|
    [['params.owner' => 'aaa'], ['params.owner' => 'email']],
 | 
						|
]);
 | 
						|
 | 
						|
it('test it stores mailman gateway', function () {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    $typeParams = MailmanTypeRequest::new()->succeeds()->create(['url' => 'https://example.com', 'user' => 'user', 'password' => 'secret', 'owner' => 'owner@example.com']);
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->setArray([
 | 
						|
            'name' => 'lala',
 | 
						|
            'domain' => 'https://example.com',
 | 
						|
            'cls' => MailmanType::class,
 | 
						|
            'params' => $typeParams
 | 
						|
        ])
 | 
						|
        ->call('onSave')
 | 
						|
        ->assertDispatched('closeModal');
 | 
						|
 | 
						|
    $this->assertDatabaseHas('mailgateways', [
 | 
						|
        'type' => json_encode([
 | 
						|
            'cls' => MailmanType::class,
 | 
						|
            'params' => $typeParams,
 | 
						|
        ]),
 | 
						|
        'name' => 'lala',
 | 
						|
        'domain' => 'https://example.com',
 | 
						|
    ]);
 | 
						|
});
 | 
						|
 | 
						|
it('test it checks mailman connection', function () {
 | 
						|
    test()->withoutExceptionHandling()->login()->loginNami();
 | 
						|
 | 
						|
    $typeParams = MailmanTypeRequest::new()->fails()->create(['url' => 'https://example.com', 'user' => 'user', 'password' => 'secret', 'owner' => 'owner@example.com']);
 | 
						|
 | 
						|
    Livewire::test(Form::class)
 | 
						|
        ->setArray([
 | 
						|
            'name' => 'lala',
 | 
						|
            'domain' => 'https://example.com',
 | 
						|
            'cls' => MailmanType::class,
 | 
						|
            'params' => $typeParams
 | 
						|
        ])
 | 
						|
        ->call('onSave')
 | 
						|
        ->assertHasErrors('connection')
 | 
						|
        ->assertNotDispatched('closeModal');
 | 
						|
 | 
						|
    $this->assertDatabaseCount('mailgateways', 0);
 | 
						|
});
 |