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')); } }