diff --git a/src/Client.php b/src/Client.php index ba714a9..e49f0ce 100644 --- a/src/Client.php +++ b/src/Client.php @@ -4,6 +4,8 @@ namespace RouterOS; use DivineOmega\SSHConnection\SSHConnection; use RouterOS\Exceptions\ClientException; +use RouterOS\Exceptions\ConnectException; +use RouterOS\Exceptions\BadCredentialsException; use RouterOS\Exceptions\ConfigException; use RouterOS\Interfaces\ClientInterface; use RouterOS\Interfaces\QueryInterface; @@ -57,6 +59,7 @@ class Client implements Interfaces\ClientInterface * @param bool $autoConnect If false it will skip auto-connect stage if not need to instantiate connection * * @throws \RouterOS\Exceptions\ClientException + * @throws \RouterOS\Exceptions\ConnectException * @throws \RouterOS\Exceptions\ConfigException * @throws \RouterOS\Exceptions\QueryException */ @@ -82,7 +85,7 @@ class Client implements Interfaces\ClientInterface // Throw error if cannot to connect if (false === $this->connect()) { - throw new ClientException('Unable to connect to ' . $config->get('host') . ':' . $config->get('port')); + throw new ConnectException('Unable to connect to ' . $config->get('host') . ':' . $config->get('port')); } } @@ -445,6 +448,7 @@ class Client implements Interfaces\ClientInterface * * @return bool * @throws \RouterOS\Exceptions\ClientException + * @throws \RouterOS\Exceptions\BadCredentialsException * @throws \RouterOS\Exceptions\ConfigException * @throws \RouterOS\Exceptions\QueryException */ @@ -487,7 +491,7 @@ class Client implements Interfaces\ClientInterface // If RouterOS answered with invalid credentials then throw error if (!empty($response[0]) && '!trap' === $response[0]) { - throw new ClientException('Invalid user name or password'); + throw new BadCredentialsException('Invalid user name or password'); } // Return true if we have only one line from server and this line is !done diff --git a/src/Exceptions/BadCredentialsException.php b/src/Exceptions/BadCredentialsException.php new file mode 100644 index 0000000..e393ec4 --- /dev/null +++ b/src/Exceptions/BadCredentialsException.php @@ -0,0 +1,13 @@ +socket_err_str); + throw new ConnectException('Unable to establish socket session, ' . $this->socket_err_str); } //Timeout read diff --git a/tests/ClientTest.php b/tests/ClientTest.php index 77682c3..78dbb42 100644 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -10,6 +10,8 @@ use RouterOS\Exceptions\QueryException; use RouterOS\Query; use RouterOS\Config; use RouterOS\Exceptions\ClientException; +use RouterOS\Exceptions\ConnectException; +use RouterOS\Exceptions\BadCredentialsException; class ClientTest extends TestCase { @@ -109,7 +111,7 @@ class ClientTest extends TestCase public function testConstructExceptionBadHost(): void { - $this->expectException(ClientException::class); + $this->expectException(ConnectException::class); new Client([ 'host' => '127.0.0.1', @@ -159,7 +161,7 @@ class ClientTest extends TestCase public function testConstructWrongPass(): void { - $this->expectException(ClientException::class); + $this->expectException(BadCredentialsException::class); new Client([ 'user' => $this->config['user'], @@ -171,7 +173,7 @@ class ClientTest extends TestCase public function testConstructWrongNet(): void { - $this->expectException(ClientException::class); + $this->expectException(ConnectException::class); new Client([ 'user' => $this->config['user'],