CaiWuXiTong/tests/Unit/EcommerceFinance/UpstreamOdbcConnectionTest.php

45 lines
1.6 KiB
PHP

<?php
namespace Tests\Unit\EcommerceFinance;
use Modules\EcommerceFinance\Services\UpstreamOdbcConnection;
use ReflectionMethod;
use Tests\TestCase;
class UpstreamOdbcConnectionTest extends TestCase
{
public function test_operations_replica_dblib_dsn_uses_only_endpoint_and_database_metadata(): void
{
$method = new ReflectionMethod(UpstreamOdbcConnection::class, 'pdoDblibDsn');
$dsn = $method->invoke(null, '127.0.0.1', 15433, 'reporting', '7.4');
$this->assertSame(
'dblib:host=127.0.0.1:15433;dbname=reporting;version=7.4;charset=UTF-8',
$dsn,
);
$this->assertStringNotContainsString('PWD=', $dsn);
$this->assertStringNotContainsString('UID=', $dsn);
}
public function test_production_dblib_transport_is_only_opted_in_for_the_marked_source(): void
{
$method = new ReflectionMethod(UpstreamOdbcConnection::class, 'shouldUsePdoDblib');
config()->set('upstreams.sources.operations_replica.use_pdo_dblib', true);
config()->set('upstreams.sources.jiansun.use_pdo_dblib', false);
$operations = $method->invoke(null, 'operations_replica', 'FreeTDS', 'request');
$jiansun = $method->invoke(null, 'jiansun', 'FreeTDS', 'request');
if (PHP_OS_FAMILY !== 'Windows' && extension_loaded('pdo_dblib')) {
$this->assertTrue($operations);
} else {
$this->assertFalse($operations);
}
$this->assertFalse($jiansun);
$this->assertFalse($method->invoke(null, 'operations_replica', 'FreeTDS', 'strict'));
}
}