<?php

/**
 * @author    Andreas Fischer <bantu@phpbb.com>
 * @copyright 2015-2026 Andreas Fischer
 * @license   http://www.opensource.org/licenses/mit-license.html  MIT License
 */

declare(strict_types=1);

namespace phpseclib4\Tests\Functional\Net;

use phpseclib4\Net\SFTP;
use phpseclib4\Tests\PhpseclibFunctionalTestCase;

/**
 * This class provides each test method with a new and empty $this->scratchDir.
 */
abstract class SFTPTestCase extends PhpseclibFunctionalTestCase
{
    /**
     * @var SFTP
     */
    protected $sftp;
    protected $scratchDir;

    public function setUp(): void
    {
        parent::setUp();
        $this->scratchDir = uniqid('phpseclib-sftp-scratch-');

        $this->sftp = new SFTP($this->getEnv('SSH_HOSTNAME'));
        $this->assertTrue($this->sftp->login(
            $this->getEnv('SSH_USERNAME'),
            $this->getEnv('SSH_PASSWORD')
        ));
        $this->sftp->mkdir($this->scratchDir);
        $this->sftp->chdir($this->scratchDir);
    }

    public function tearDown(): void
    {
        if ($this->sftp) {
            $this->sftp->chdir($this->getEnv('SSH_HOME'));
            $this->sftp->delete($this->scratchDir);
        }
        parent::tearDown();
    }
}
