anonaddy/tests/Feature/SendFromEmailTest.php
2020-01-29 13:43:55 +00:00

123 lines
3.8 KiB
PHP

<?php
namespace Tests\Feature;
use App\Alias;
use App\Mail\SendFromEmail;
use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
class SendFromEmailTest extends TestCase
{
use RefreshDatabase;
protected $user;
protected function setUp(): void
{
parent::setUp();
$this->user = factory(User::class)->create(['username' => 'johndoe']);
$this->user->recipients()->save($this->user->defaultRecipient);
}
/** @test */
public function it_can_send_email_from_alias_from_file()
{
Mail::fake();
Mail::assertNothingSent();
$alias = factory(Alias::class)->create([
'user_id' => $this->user->id,
'email' => 'ebay@johndoe.'.config('anonaddy.domain'),
'local_part' => 'ebay',
'domain' => 'johndoe.'.config('anonaddy.domain'),
]);
$extension = 'contact=ebay.com';
$this->artisan(
'anonaddy:receive-email',
[
'file' => base_path('tests/emails/email_send_from_alias.eml'),
'--sender' => $this->user->defaultRecipient->email,
'--recipient' => ['ebay+'.$extension.'@johndoe.anonaddy.com'],
'--local_part' => ['ebay'],
'--extension' => [$extension],
'--domain' => ['johndoe.anonaddy.com'],
'--size' => '1000'
]
)->assertExitCode(0);
$this->assertDatabaseHas('aliases', [
'email' => $alias->email,
'local_part' => $alias->local_part,
'domain' => $alias->domain,
'emails_forwarded' => 0,
'emails_blocked' => 0,
'emails_replied' => 0,
'emails_sent' => 1
]);
$this->assertEquals(1, $this->user->aliases()->count());
Mail::assertQueued(SendFromEmail::class, function ($mail) {
return $mail->hasTo('contact@ebay.com');
});
}
/** @test */
public function it_can_send_from_alias_to_multiple_emails_from_file()
{
Mail::fake();
Mail::assertNothingSent();
$alias = factory(Alias::class)->create([
'user_id' => $this->user->id,
'email' => 'ebay@johndoe.'.config('anonaddy.domain'),
'local_part' => 'ebay',
'domain' => 'johndoe.'.config('anonaddy.domain'),
]);
$extension1 = 'contact=ebay.com';
$extension2 = 'support=ebay.com';
$this->artisan(
'anonaddy:receive-email',
[
'file' => base_path('tests/emails/email_multiple_send_from.eml'),
'--sender' => $this->user->defaultRecipient->email,
'--recipient' => [
'ebay+'.$extension1.'@johndoe.anonaddy.com',
'ebay+'.$extension2.'@johndoe.anonaddy.com'
],
'--local_part' => ['ebay', 'ebay'],
'--extension' => [$extension1, $extension2],
'--domain' => ['johndoe.anonaddy.com', 'johndoe.anonaddy.com'],
'--size' => '1000'
]
)->assertExitCode(0);
$this->assertDatabaseHas('aliases', [
'email' => $alias->email,
'local_part' => $alias->local_part,
'domain' => $alias->domain,
'emails_forwarded' => 0,
'emails_blocked' => 0,
'emails_replied' => 0,
'emails_sent' => 2
]);
$this->assertEquals(1, $this->user->aliases()->count());
Mail::assertQueued(SendFromEmail::class, function ($mail) {
return $mail->hasTo('contact@ebay.com');
});
Mail::assertQueued(SendFromEmail::class, function ($mail) {
return $mail->hasTo('support@ebay.com');
});
}
}