45 lines
1.6 KiB
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'));
|
|
}
|
|
}
|