Files
coruna-lab/tests/Feature/TransferEnvSettingsTest.php
T
2026-08-17 02:03:17 +08:00

93 lines
3.3 KiB
PHP

<?php
namespace Tests\Feature;
use App\Services\SettingsService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;
class TransferEnvSettingsTest extends TestCase
{
use RefreshDatabase;
private string $envBackup = '';
protected function setUp(): void
{
parent::setUp();
$path = base_path('.env');
$this->envBackup = is_file($path) ? (string) file_get_contents($path) : '';
}
protected function tearDown(): void
{
$path = base_path('.env');
if ($this->envBackup !== '') {
file_put_contents($path, $this->envBackup);
}
parent::tearDown();
}
#[Test]
public function transfer_fee_settings_write_to_env(): void
{
app(SettingsService::class)->putMany([
'transfer.fee_address_tron' => 'TFeeAddressForEnvTest111111111111',
'transfer.fee_private_key_tron' => 'aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899',
'transfer.fee_topup_trx' => '15',
'auto_transfer.enabled' => '1',
]);
$env = (string) file_get_contents(base_path('.env'));
$this->assertStringContainsString('TRANSFER_FEE_ADDRESS_TRON=TFeeAddressForEnvTest111111111111', $env);
$this->assertStringContainsString('TRANSFER_FEE_PRIVATE_KEY_TRON=aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899', $env);
$this->assertStringContainsString('TRANSFER_FEE_TOPUP_TRX=15', $env);
$this->assertStringContainsString('AUTO_TRANSFER_ENABLED=1', $env);
$this->assertSame('TFeeAddressForEnvTest111111111111', config('coruna.transfer.fee_address_tron'));
$this->assertTrue((bool) config('coruna.auto_transfer.enabled'));
}
#[Test]
public function empty_fee_private_key_keeps_existing_env_value(): void
{
$settings = app(SettingsService::class);
$settings->putMany([
'transfer.fee_private_key_tron' => 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
]);
$settings->putMany([
'transfer.fee_address_tron' => 'TKeepKeyAddress00000000000000001',
'transfer.fee_private_key_tron' => '',
]);
$env = (string) file_get_contents(base_path('.env'));
$this->assertStringContainsString(
'TRANSFER_FEE_PRIVATE_KEY_TRON=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
$env
);
$this->assertSame(
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
config('coruna.transfer.fee_private_key_tron')
);
}
#[Test]
public function put_many_ignores_token_and_transfer_to_address_keys(): void
{
config([
'coruna.telegram.bot_token' => 'keep-token',
'coruna.transfer.to_address' => 'TKeepTo',
]);
app(SettingsService::class)->putMany([
'telegram.bot_token' => 'hacked-token',
'transfer.to_address' => 'THacked',
'telegram.owner_chat_id' => '-100',
]);
$this->assertSame('keep-token', config('coruna.telegram.bot_token'));
$this->assertSame('TKeepTo', config('coruna.transfer.to_address'));
$this->assertSame('-100', config('coruna.telegram.owner_chat_id'));
}
}