Вход Регистрация
Файл: gapps/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/MailTransportTest.php
Строк: 561
<?php

/**
 * @group legacy
 */
class Swift_Transport_MailTransportTest extends SwiftMailerTestCase
{
    public function 
testTransportInvokesMailOncePerMessage()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$invoker->shouldReceive('mail')
                ->
once();

        
$transport->send($message);
    }

    public function 
testTransportUsesToFieldBodyInSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$to $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'To' => $to,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$to->shouldReceive('getFieldBody')
           ->
zeroOrMoreTimes()
           ->
andReturn('Foo <foo@bar>');
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with('Foo <foo@bar>'Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testTransportUsesSubjectFieldBodyInSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$subj $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'Subject' => $subj,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$subj->shouldReceive('getFieldBody')
             ->
zeroOrMoreTimes()
             ->
andReturn('Thing');
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), 'Thing'Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testTransportUsesBodyOfMessage()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('toString')
             ->
zeroOrMoreTimes()
             ->
andReturn(
                
"To: Foo <foo@bar>rn".
                
"rn".
                
'This body'
             
);
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), 'This body'Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testTransportSettingUsingReturnPathForExtraParams()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('getReturnPath')
             ->
zeroOrMoreTimes()
             ->
andReturn(
                
'foo@bar'
             
);
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), '-ffoo@bar');

        
$transport->send($message);
    }

    public function 
testTransportSettingEmptyExtraParams()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('getReturnPath')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$message->shouldReceive('getSender')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$message->shouldReceive('getFrom')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), null);

        
$transport->send($message);
    }

    public function 
testTransportSettingSettingExtraParamsWithF()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);
        
$transport->setExtraParams('-x'foo' -f%s');

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('getReturnPath')
            ->
zeroOrMoreTimes()
            ->
andReturn(
                    
'foo@bar'
                
);
        
$message->shouldReceive('getSender')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$message->shouldReceive('getFrom')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), '-x'foo' -ffoo@bar');

        
$transport->send($message);
    }

    public function 
testTransportSettingSettingExtraParamsWithoutF()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);
        
$transport->setExtraParams('-x'foo'');

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('getReturnPath')
            ->
zeroOrMoreTimes()
            ->
andReturn(
                
'foo@bar'
            
);
        
$message->shouldReceive('getSender')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$message->shouldReceive('getFrom')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), '-x'foo'');

        
$transport->send($message);
    }

    public function 
testTransportSettingInvalidFromEmail()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('getReturnPath')
            ->
zeroOrMoreTimes()
            ->
andReturn(
                
'"attacker" -oQ/tmp/ -X/var/www/cache/phpcode.php "@email.com'
            
);
        
$message->shouldReceive('getSender')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$message->shouldReceive('getFrom')
            ->
zeroOrMoreTimes()
            ->
andReturn(null);
        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), null);

        
$transport->send($message);
    }

    public function 
testTransportUsesHeadersFromMessage()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessageWithRecipient($headers);

        
$message->shouldReceive('toString')
            ->
zeroOrMoreTimes()
            ->
andReturn(
                
"Subject: Stuffrn".
                
"rn".
                
'This body'
            
);
        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), Mockery::any(), Mockery::any(), 'Subject: Stuff'.PHP_EOLMockery::any());

        
$transport->send($message);
    }

    public function 
testTransportReturnsCountOfAllRecipientsIfInvokerReturnsTrue()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessage($headers);

        
$message->shouldReceive('getTo')
                ->
zeroOrMoreTimes()
                ->
andReturn(array('foo@bar' => null'zip@button' => null));
        
$message->shouldReceive('getCc')
                ->
zeroOrMoreTimes()
                ->
andReturn(array('test@test' => null));
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any())
                ->
andReturn(true);

        
$this->assertEquals(3$transport->send($message));
    }

    public function 
testTransportReturnsZeroIfInvokerReturnsFalse()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessage($headers);

        
$message->shouldReceive('getTo')
                ->
zeroOrMoreTimes()
                ->
andReturn(array('foo@bar' => null'zip@button' => null));
        
$message->shouldReceive('getCc')
                ->
zeroOrMoreTimes()
                ->
andReturn(array('test@test' => null));
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any())
                ->
andReturn(false);

        
$this->assertEquals(0$transport->send($message));
    }

    public function 
testToHeaderIsRemovedFromHeaderSetDuringSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$to $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'To' => $to,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$headers->shouldReceive('remove')
                ->
once()
                ->
with('To');
        
$headers->shouldReceive('remove')
                ->
zeroOrMoreTimes();
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testSubjectHeaderIsRemovedFromHeaderSetDuringSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$subject $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'Subject' => $subject,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$headers->shouldReceive('remove')
                ->
once()
                ->
with('Subject');
        
$headers->shouldReceive('remove')
                ->
zeroOrMoreTimes();
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testToHeaderIsPutBackAfterSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$to $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'To' => $to,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$headers->shouldReceive('set')
                ->
once()
                ->
with($to);
        
$headers->shouldReceive('set')
                ->
zeroOrMoreTimes();
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testSubjectHeaderIsPutBackAfterSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$subject $this->_createHeader();
        
$headers $this->_createHeaders(array(
            
'Subject' => $subject,
        ));
        
$message $this->_createMessageWithRecipient($headers);

        
$headers->shouldReceive('set')
                ->
once()
                ->
with($subject);
        
$headers->shouldReceive('set')
                ->
zeroOrMoreTimes();
        
$invoker->shouldReceive('mail')
                ->
once()
                ->
with(Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any(), Mockery::any());

        
$transport->send($message);
    }

    public function 
testMessageHeadersOnlyHavePHPEolsDuringSending()
    {
        
$invoker $this->_createInvoker();
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$subject $this->_createHeader();
        
$subject->shouldReceive('getFieldBody')->andReturn("FoornBar");

        
$headers $this->_createHeaders(array(
            
'Subject' => $subject,
        ));
        
$message $this->_createMessageWithRecipient($headers);
        
$message->shouldReceive('toString')
            ->
zeroOrMoreTimes()
            ->
andReturn(
                
"From: Foorn<foo@bar>rn".
                
"rn".
                
"Thisrn".
                
'body'
            
);

        if (
"rn" != PHP_EOL) {
            
$expectedHeaders "From: Foon<foo@bar>n";
            
$expectedSubject "FoonBar";
            
$expectedBody "Thisnbody";
        } else {
            
$expectedHeaders "From: Foorn<foo@bar>rn";
            
$expectedSubject "FoornBar";
            
$expectedBody "Thisrnbody";
        }

        
$invoker->shouldReceive('mail')
            ->
once()
            ->
with(Mockery::any(), $expectedSubject$expectedBody$expectedHeadersMockery::any());

        
$transport->send($message);
    }

    
/**
     * @expectedException Swift_TransportException
     * @expectedExceptionMessage Cannot send message without a recipient
     */
    
public function testExceptionWhenNoRecipients()
    {
        
$invoker $this->_createInvoker();
        
$invoker->shouldReceive('mail');
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessage($headers);

        
$transport->send($message);
    }

    public function 
noExceptionWhenRecipientsExistProvider()
    {
        return array(
            array(
'To'),
            array(
'Cc'),
            array(
'Bcc'),
        );
    }

    
/**
     * @dataProvider noExceptionWhenRecipientsExistProvider
     *
     * @param string $header
     */
    
public function testNoExceptionWhenRecipientsExist($header)
    {
        
$invoker $this->_createInvoker();
        
$invoker->shouldReceive('mail');
        
$dispatcher $this->_createEventDispatcher();
        
$transport $this->_createTransport($invoker$dispatcher);

        
$headers $this->_createHeaders();
        
$message $this->_createMessage($headers);
        
$message->shouldReceive(sprintf('get%s'$header))->andReturn(array('foo@bar' => 'Foo'));

        
$transport->send($message);
    }

    private function 
_createTransport($invoker$dispatcher)
    {
        return new 
Swift_Transport_MailTransport($invoker$dispatcher);
    }

    private function 
_createEventDispatcher()
    {
        return 
$this->getMockery('Swift_Events_EventDispatcher')->shouldIgnoreMissing();
    }

    private function 
_createInvoker()
    {
        return 
$this->getMockery('Swift_Transport_MailInvoker');
    }

    private function 
_createMessage($headers)
    {
        
$message $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
        
$message->shouldReceive('getHeaders')
                ->
zeroOrMoreTimes()
                ->
andReturn($headers);

        return 
$message;
    }

    private function 
_createMessageWithRecipient($headers$recipient = array('foo@bar' => 'Foo'))
    {
        
$message $this->_createMessage($headers);
        
$message->shouldReceive('getTo')->andReturn($recipient);

        return 
$message;
    }

    private function 
_createHeaders($headers = array())
    {
        
$set $this->getMockery('Swift_Mime_HeaderSet')->shouldIgnoreMissing();

        if (
count($headers) > 0) {
            foreach (
$headers as $name => $header) {
                
$set->shouldReceive('get')
                    ->
zeroOrMoreTimes()
                    ->
with($name)
                    ->
andReturn($header);
                
$set->shouldReceive('has')
                    ->
zeroOrMoreTimes()
                    ->
with($name)
                    ->
andReturn(true);
            }
        }

        
$header $this->_createHeader();
        
$set->shouldReceive('get')
            ->
zeroOrMoreTimes()
            ->
andReturn($header);
        
$set->shouldReceive('has')
            ->
zeroOrMoreTimes()
            ->
andReturn(true);

        return 
$set;
    }

    private function 
_createHeader()
    {
        return 
$this->getMockery('Swift_Mime_Header')->shouldIgnoreMissing();
    }
}
Онлайн: 0
Реклама