Browse Source

Fix #3454 - when transport is set using ::configTransport, make sure same instance is used for sending

Joerg Henning 12 years ago
parent
commit
2f00a45edc
2 changed files with 21 additions and 0 deletions
  1. 5 0
      src/Network/Email/Email.php
  2. 16 0
      tests/TestCase/Network/Email/EmailTest.php

+ 5 - 0
src/Network/Email/Email.php

@@ -947,6 +947,11 @@ class Email {
 		}
 
 		$config = static::$_transportConfig[$name];
+
+		if (is_object($config['className'])) {
+			return $config['className'];
+		};
+
 		$className = App::className($config['className'], 'Network/Email', 'Transport');
 		if (!$className) {
 			throw new Exception(sprintf('Transport class "%s" not found.', $name));

+ 16 - 0
tests/TestCase/Network/Email/EmailTest.php

@@ -2364,6 +2364,22 @@ HTML;
 		$this->assertEquals($expected, $result['message']);
 	}
 
+
+/**
+ * CakeEmailTest::testMockTransport()
+ */
+	public function testMockTransport() {
+		$mock = $this->getMock('\Cake\Network\Email\AbstractTransport');
+		$config = array('from' => 'tester@example.org', 'transport' => 'default');
+
+		Email::config('default', $config);
+		Email::configTransport('default', $mock);
+
+		$em = new Email('default');
+
+		$this->assertSame($mock, $em->transport());
+	}
+
 /**
  * CakeEmailTest::assertLineLengths()
  *