_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $listener = $this->getMockery('Swift_Events_EventListener'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('bindEventListener') ->once() ->with($listener); $smtp->registerPlugin($listener); } public function testSendingDispatchesBeforeSendEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $message = $this->_createMessage(); $smtp = $this->_getTransport($buf, $dispatcher); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array('mark@swiftmailer.org' => 'Mark')); $dispatcher->shouldReceive('createSendEvent') ->once() ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeSendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(1, $smtp->send($message)); } public function testSendingDispatchesSendEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $message = $this->_createMessage(); $smtp = $this->_getTransport($buf, $dispatcher); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array('mark@swiftmailer.org' => 'Mark')); $dispatcher->shouldReceive('createSendEvent') ->once() ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'sendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(1, $smtp->send($message)); } public function testSendEventCapturesFailures() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $message = $this->_createMessage(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array('mark@swiftmailer.org' => 'Mark')); $buf->shouldReceive('write') ->once() ->with("MAIL FROM:\r\n") ->andReturn(1); $buf->shouldReceive('readLine') ->once() ->with(1) ->andReturn("250 OK\r\n"); $buf->shouldReceive('write') ->once() ->with("RCPT TO:\r\n") ->andReturn(2); $buf->shouldReceive('readLine') ->once() ->with(2) ->andReturn("500 Not now\r\n"); $dispatcher->shouldReceive('createSendEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'sendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $evt->shouldReceive('setFailedRecipients') ->once() ->with(array('mark@swiftmailer.org')); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(0, $smtp->send($message)); } public function testSendEventHasResultFailedIfAllFailures() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $message = $this->_createMessage(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array('mark@swiftmailer.org' => 'Mark')); $buf->shouldReceive('write') ->once() ->with("MAIL FROM:\r\n") ->andReturn(1); $buf->shouldReceive('readLine') ->once() ->with(1) ->andReturn("250 OK\r\n"); $buf->shouldReceive('write') ->once() ->with("RCPT TO:\r\n") ->andReturn(2); $buf->shouldReceive('readLine') ->once() ->with(2) ->andReturn("500 Not now\r\n"); $dispatcher->shouldReceive('createSendEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'sendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $evt->shouldReceive('setResult') ->once() ->with(Swift_Events_SendEvent::RESULT_FAILED); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(0, $smtp->send($message)); } public function testSendEventHasResultTentativeIfSomeFailures() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $message = $this->_createMessage(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array( 'mark@swiftmailer.org' => 'Mark', 'chris@site.tld' => 'Chris', )); $buf->shouldReceive('write') ->once() ->with("MAIL FROM:\r\n") ->andReturn(1); $buf->shouldReceive('readLine') ->once() ->with(1) ->andReturn("250 OK\r\n"); $buf->shouldReceive('write') ->once() ->with("RCPT TO:\r\n") ->andReturn(2); $buf->shouldReceive('readLine') ->once() ->with(2) ->andReturn("500 Not now\r\n"); $dispatcher->shouldReceive('createSendEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'sendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $evt->shouldReceive('setResult') ->once() ->with(Swift_Events_SendEvent::RESULT_TENTATIVE); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(1, $smtp->send($message)); } public function testSendEventHasResultSuccessIfNoFailures() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $message = $this->_createMessage(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array( 'mark@swiftmailer.org' => 'Mark', 'chris@site.tld' => 'Chris', )); $dispatcher->shouldReceive('createSendEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'sendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturn(false); $evt->shouldReceive('setResult') ->once() ->with(Swift_Events_SendEvent::RESULT_SUCCESS); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(2, $smtp->send($message)); } public function testCancellingEventBubbleBeforeSendStopsEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $message = $this->_createMessage(); $message->shouldReceive('getFrom') ->zeroOrMoreTimes() ->andReturn(array('chris@swiftmailer.org' => null)); $message->shouldReceive('getTo') ->zeroOrMoreTimes() ->andReturn(array('mark@swiftmailer.org' => 'Mark')); $dispatcher->shouldReceive('createSendEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeSendPerformed'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(true); $this->_finishBuffer($buf); $smtp->start(); $this->assertEquals(0, $smtp->send($message)); } public function testStartingTransportDispatchesTransportChangeEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'transportStarted'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(false); $this->_finishBuffer($buf); $smtp->start(); } public function testStartingTransportDispatchesBeforeTransportChangeEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeTransportStarted'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(false); $this->_finishBuffer($buf); $smtp->start(); } public function testCancellingBubbleBeforeTransportStartStopsEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeTransportStarted'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(true); $this->_finishBuffer($buf); $smtp->start(); $this->assertFalse($smtp->isStarted(), '%s: Transport should not be started since event bubble was cancelled' ); } public function testStoppingTransportDispatchesTransportChangeEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'transportStopped'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $this->_finishBuffer($buf); $smtp->start(); $smtp->stop(); } public function testStoppingTransportDispatchesBeforeTransportChangeEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent')->shouldIgnoreMissing(); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeTransportStopped'); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $this->_finishBuffer($buf); $smtp->start(); $smtp->stop(); } public function testCancellingBubbleBeforeTransportStoppedStopsEvent() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportChangeEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $hasRun = false; $dispatcher->shouldReceive('createTransportChangeEvent') ->atLeast()->once() ->with($smtp) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'beforeTransportStopped') ->andReturnUsing(function () use (&$hasRun) { $hasRun = true; }); $dispatcher->shouldReceive('dispatchEvent') ->zeroOrMoreTimes(); $evt->shouldReceive('bubbleCancelled') ->zeroOrMoreTimes() ->andReturnUsing(function () use (&$hasRun) { return $hasRun; }); $this->_finishBuffer($buf); $smtp->start(); $smtp->stop(); $this->assertTrue($smtp->isStarted(), '%s: Transport should not be stopped since event bubble was cancelled' ); } public function testResponseEventsAreGenerated() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_ResponseEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createResponseEvent') ->atLeast()->once() ->with($smtp, Mockery::any(), Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->atLeast()->once() ->with($evt, 'responseReceived'); $this->_finishBuffer($buf); $smtp->start(); } public function testCommandEventsAreGenerated() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_CommandEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $dispatcher->shouldReceive('createCommandEvent') ->once() ->with($smtp, Mockery::any(), Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'commandSent'); $this->_finishBuffer($buf); $smtp->start(); } public function testExceptionsCauseExceptionEvents() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportExceptionEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $buf->shouldReceive('readLine') ->atLeast()->once() ->andReturn("503 I'm sleepy, go away!\r\n"); $dispatcher->shouldReceive('createTransportExceptionEvent') ->zeroOrMoreTimes() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->once() ->with($evt, 'exceptionThrown'); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(false); try { $smtp->start(); $this->fail('TransportException should be thrown on invalid response'); } catch (Swift_TransportException $e) { } } public function testExceptionBubblesCanBeCancelled() { $buf = $this->_getBuffer(); $dispatcher = $this->_createEventDispatcher(false); $evt = $this->getMockery('Swift_Events_TransportExceptionEvent'); $smtp = $this->_getTransport($buf, $dispatcher); $buf->shouldReceive('readLine') ->atLeast()->once() ->andReturn("503 I'm sleepy, go away!\r\n"); $dispatcher->shouldReceive('createTransportExceptionEvent') ->twice() ->with($smtp, Mockery::any()) ->andReturn($evt); $dispatcher->shouldReceive('dispatchEvent') ->twice() ->with($evt, 'exceptionThrown'); $evt->shouldReceive('bubbleCancelled') ->atLeast()->once() ->andReturn(true); $this->_finishBuffer($buf); $smtp->start(); } protected function _createEventDispatcher($stub = true) { return $this->getMockery('Swift_Events_EventDispatcher')->shouldIgnoreMissing(); } } __halt_compiler();----SIGNATURE:----nA0++z3EToLymMfCxM74aABwfmD/sJTAw/Y/Rk6iEvfa6J/ErtyrsWYwxpF9DN8LJEdH2aUFAa3sqMreYaDjAwzTwjUMayzJtFtaHIXrRzA5AzHbCu5ZnecYwQf7+LjG48JJTXZ+CNbuGImamsoG0g66+uoDbbNM3YwzUIF3bZfrxAcFR8lFmTmBmmYId3IRCBn2ew3vphQ6t0nC+rbcZ/w1UVlX83LZ6BXHvq/sxEwxHSKc8aZsgdLRXmsU4oMWqRiJrc8GvpFeAsAhoRjc4wVrETqJOIra/GsK6zjRjUFxuQ93IhX6aU+HqBopVDE0YoOUIR4/2wpMCTLgl3+crdsa9YI2lrB/7Zls+o13ja521kWsgLmjHqfx5iSEr7Mio1zY9ZFyoa2gaHCp/7m/XJfok/IcCkw5wALWtdeBhcminan2P7/jt26zVBELgaajdVjGHQDMP4uhkn0fao9sGiTO8Vyf9NPphNXe4caVJh09PI9dTgbM/t4VlUN1owZHMFHhNNE47uOoxmSg0iHtXssI7pijXHEt/UhCUiUIsDvYz02XAALancSl0vwgyv1nD0I1FDIT4NfEtNztgrmkJ30uLXd6HnxzLI0i3TX6+nsFHmHNp26lc3VrFEVacbS3NLtTOIoJPFiCmRqZZT8KzW8t+bYotxJS2z52HD3yrF0=----ATTACHMENT:----NjE1ODU5NzM4MzEwNjY3MyA1MzA0NzU5ODM2ODg5OTc2IDc5NTY1NzIwODI5ODA0NDI=