diff --git a/src/PhpseclibV3/SftpConnectionProvider.php b/src/PhpseclibV3/SftpConnectionProvider.php index b65d3179b..899f4e9f1 100644 --- a/src/PhpseclibV3/SftpConnectionProvider.php +++ b/src/PhpseclibV3/SftpConnectionProvider.php @@ -91,6 +91,13 @@ public function disconnect(): void } } + public function resetConnection(): SFTP + { + $this->disconnect(); + + return $this->connection = $this->setupConnection(); + } + private function setupConnection(): SFTP { $connection = new SFTP($this->host, $this->port, $this->timeout); diff --git a/src/PhpseclibV3/SftpConnectionProviderTest.php b/src/PhpseclibV3/SftpConnectionProviderTest.php index 6bcb82391..13b8a0f2f 100644 --- a/src/PhpseclibV3/SftpConnectionProviderTest.php +++ b/src/PhpseclibV3/SftpConnectionProviderTest.php @@ -75,6 +75,26 @@ public function trying_until_5_tries(): void $this->assertSame($connection, $sameConnection); } + /** + * @test + */ + public function reset_connection(): void + { + $provider = SftpConnectionProvider::fromArray( + [ + 'host' => 'localhost', + 'username' => 'foo', + 'password' => 'pass', + 'port' => 2222, + ] + ); + $connection = $provider->provideConnection(); + $resetConnection = $provider->resetConnection(); + + $this->assertNotSame($connection, $resetConnection); + $this->assertSame($resetConnection, $provider->provideConnection()); + } + /** * @test */