PHPLIB-511: Handle autoEncryptionOpts in MongoDB\Client

parent b2cd2866
......@@ -99,6 +99,14 @@ class Client
throw InvalidArgumentException::invalidType('"typeMap" driver option', $driverOptions['typeMap'], 'array');
}
if (isset($driverOptions['autoEncryption']['keyVaultClient'])) {
if ($driverOptions['autoEncryption']['keyVaultClient'] instanceof self) {
$driverOptions['autoEncryption']['keyVaultClient'] = $driverOptions['autoEncryption']['keyVaultClient']->manager;
} elseif (! $driverOptions['autoEncryption']['keyVaultClient'] instanceof Manager) {
throw InvalidArgumentException::invalidType('"keyVaultClient" autoEncryption option', $driverOptions['autoEncryption']['keyVaultClient'], [self::class, Manager::class]);
}
}
$this->uri = (string) $uri;
$this->typeMap = isset($driverOptions['typeMap']) ? $driverOptions['typeMap'] : null;
......
......@@ -20,6 +20,20 @@ class ClientTest extends TestCase
$this->assertEquals('mongodb://127.0.0.1/', (string) $client);
}
/**
* @doesNotPerformAssertions
*/
public function testConstructorAutoEncryptionOpts()
{
$autoEncryptionOpts = [
'keyVaultClient' => new Client(static::getUri()),
'keyVaultNamespace' => 'default.keys',
'kmsProviders' => ['aws' => ['accessKeyId' => 'abc', 'secretAccessKey' => 'def']],
];
new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
}
/**
* @dataProvider provideInvalidConstructorDriverOptions
*/
......@@ -37,6 +51,8 @@ class ClientTest extends TestCase
$options[][] = ['typeMap' => $value];
}
$options[][] = ['autoEncryption' => ['keyVaultClient' => 'foo']];
return $options;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment