From 0ecdb1a710074ee16eced2ffa16188274dc0947c Mon Sep 17 00:00:00 2001 From: gui-don Date: Tue, 11 Oct 2016 19:27:23 +0200 Subject: [PATCH 1/3] Adds a method to check Transmission RPC availability --- lib/Transmission/Transmission.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/Transmission/Transmission.php b/lib/Transmission/Transmission.php index 94e2560..7be41fe 100644 --- a/lib/Transmission/Transmission.php +++ b/lib/Transmission/Transmission.php @@ -246,6 +246,22 @@ public function remove(Torrent $torrent, $localData = false) $this->getClient()->call('torrent-remove', $arguments); } + /** + * Checks whether or not Transmission is listening on configured port/host + * + * @return boolean + */ + public function isAvailable() + { + try { + $this->getClient()->call('', []); + + return true; + } catch (\RuntimeException $e) { + return false; + } + } + /** * Set the client used to connect to Transmission * From a344b9bc8dfd0f05921475cc6f943e2c085ad153 Mon Sep 17 00:00:00 2001 From: gui-don Date: Tue, 11 Oct 2016 19:43:37 +0200 Subject: [PATCH 2/3] Adds PHPUnit tests --- tests/Transmission/Tests/TransmissionTest.php | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/Transmission/Tests/TransmissionTest.php b/tests/Transmission/Tests/TransmissionTest.php index f66331c..53f6a43 100644 --- a/tests/Transmission/Tests/TransmissionTest.php +++ b/tests/Transmission/Tests/TransmissionTest.php @@ -414,6 +414,48 @@ public function shouldRemoveDownloadWithRemovingLocalData() $transmission->remove($torrent, true); } + /** + * @test + */ + public function shouldTellIfTransmissionRpcIsAvailable() + { + $client = $this->getMock('Transmission\Client'); + $client->expects($this->once()) + ->method('call') + ->with('', []) + ->will($this->returnCallback(function () { + return (object) array( + 'result' => 'success' + ); + })); + + $transmission = new Transmission(); + $transmission->setClient($client); + $availability = $transmission->isAvailable(); + + $this->assertTrue($availability); + } + + /** + * @test + */ + public function shouldTellIfTransmissionRpcIsUnavailable() + { + $client = $this->getMock('Transmission\Client'); + $client->expects($this->once()) + ->method('call') + ->with('', []) + ->will($this->returnCallback(function () { + throw new \RuntimeException(); + })); + + $transmission = new Transmission(); + $transmission->setClient($client); + $availability = $transmission->isAvailable(); + + $this->assertFalse($availability); + } + /** * @test */ From 2488f4cf7db0ce6c09fbe465bb14364a6f9b35bd Mon Sep 17 00:00:00 2001 From: gui-don Date: Tue, 11 Oct 2016 19:46:22 +0200 Subject: [PATCH 3/3] PHP 5.3 compatibility fix --- lib/Transmission/Transmission.php | 2 +- tests/Transmission/Tests/TransmissionTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Transmission/Transmission.php b/lib/Transmission/Transmission.php index 7be41fe..e6fc7fd 100644 --- a/lib/Transmission/Transmission.php +++ b/lib/Transmission/Transmission.php @@ -254,7 +254,7 @@ public function remove(Torrent $torrent, $localData = false) public function isAvailable() { try { - $this->getClient()->call('', []); + $this->getClient()->call('', array()); return true; } catch (\RuntimeException $e) { diff --git a/tests/Transmission/Tests/TransmissionTest.php b/tests/Transmission/Tests/TransmissionTest.php index 53f6a43..ea3a3fd 100644 --- a/tests/Transmission/Tests/TransmissionTest.php +++ b/tests/Transmission/Tests/TransmissionTest.php @@ -422,7 +422,7 @@ public function shouldTellIfTransmissionRpcIsAvailable() $client = $this->getMock('Transmission\Client'); $client->expects($this->once()) ->method('call') - ->with('', []) + ->with('', array()) ->will($this->returnCallback(function () { return (object) array( 'result' => 'success' @@ -444,7 +444,7 @@ public function shouldTellIfTransmissionRpcIsUnavailable() $client = $this->getMock('Transmission\Client'); $client->expects($this->once()) ->method('call') - ->with('', []) + ->with('', array()) ->will($this->returnCallback(function () { throw new \RuntimeException(); }));