diff --git a/src/Guzzle/Plugin/Mock/MockPlugin.php b/src/Guzzle/Plugin/Mock/MockPlugin.php index ab7833ce..2440578c 100644 --- a/src/Guzzle/Plugin/Mock/MockPlugin.php +++ b/src/Guzzle/Plugin/Mock/MockPlugin.php @@ -226,17 +226,20 @@ class MockPlugin extends AbstractHasDispatcher implements EventSubscriberInterfa * Called when a request is about to be sent * * @param Event $event + * @throws \OutOfBoundsException When queue is empty */ public function onRequestBeforeSend(Event $event) { - if ($this->queue) { - $request = $event['request']; - $this->received[] = $request; - // Detach the filter from the client so it's a one-time use - if ($this->temporary && count($this->queue) == 1 && $request->getClient()) { - $request->getClient()->getEventDispatcher()->removeSubscriber($this); - } - $this->dequeue($request); + if (!$this->queue) { + throw new \OutOfBoundsException('Mock queue is empty'); } + + $request = $event['request']; + $this->received[] = $request; + // Detach the filter from the client so it's a one-time use + if ($this->temporary && count($this->queue) == 1 && $request->getClient()) { + $request->getClient()->getEventDispatcher()->removeSubscriber($this); + } + $this->dequeue($request); } } diff --git a/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php b/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php index d43e0899..f91bc84a 100644 --- a/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php +++ b/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php @@ -421,7 +421,10 @@ class HttpRequestFactoryTest extends \Guzzle\Tests\GuzzleTestCase public function testCanAddPlugins() { - $mock = new MockPlugin(array(new Response(200))); + $mock = new MockPlugin(array( + new Response(200), + new Response(200) + )); $client = new Client(); $client->addSubscriber($mock); $request = $client->get('/', array(), array( diff --git a/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php b/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php index 19bcecac..0699cb26 100644 --- a/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php +++ b/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php @@ -176,6 +176,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase 'Last-Modified' => $lm, 'Content-Length' => 2 ), 'hi'), + new CurlException('Bleh'), new CurlException('Bleh') )); $client->addSubscriber(new CachePlugin()); @@ -184,7 +185,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase $response = $client->get()->send(); $this->assertEquals(200, $response->getStatusCode()); $this->assertEquals('hi', $response->getBody(true)); - $this->assertEquals(2, count($mock->getReceivedRequests())); + $this->assertEquals(3, count($mock->getReceivedRequests())); $this->assertEquals(0, count($mock->getQueue())); } @@ -198,6 +199,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase 'Last-Modified' => $lm, 'Content-Length' => 2 ), 'hi'), + new CurlException('Oh no!'), new CurlException('Oh no!') )); $cache = new CachePlugin(); diff --git a/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php b/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php index 52be8060..3760abdb 100644 --- a/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php +++ b/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php @@ -119,8 +119,9 @@ class MockPluginTest extends \Guzzle\Tests\GuzzleTestCase /** * @depends testAddsResponseFilesToQueue + * @expectedException \OutOfBoundsException */ - public function testUpdateIgnoresWhenEmpty() + public function testUpdateThrowsExceptionWhenEmpty() { $p = new MockPlugin(); $p->onRequestBeforeSend(new Event());