Skip to content

Commit af387e2

Browse files
fixes?
1 parent 39b6e9b commit af387e2

File tree

5 files changed

+43
-20
lines changed

5 files changed

+43
-20
lines changed

src/client-side-encryption/auto_encrypter.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
MongoCryptContext,
23
type MongoCrypt,
34
type MongoCryptConstructor,
45
type MongoCryptOptions
@@ -9,7 +10,7 @@ import { deserialize, type Document, serialize } from '../bson';
910
import { type CommandOptions, type ProxyOptions } from '../cmap/connection';
1011
import { kDecorateResult } from '../constants';
1112
import { getMongoDBClientEncryption } from '../deps';
12-
import { MongoRuntimeError } from '../error';
13+
import { MongoError, MongoRuntimeError } from '../error';
1314
import { MongoClient, type MongoClientOptions } from '../mongo_client';
1415
import { type Abortable } from '../mongo_types';
1516
import { MongoDBCollectionNamespace } from '../utils';
@@ -403,11 +404,16 @@ export class AutoEncrypter {
403404
}
404405

405406
const commandBuffer = Buffer.isBuffer(cmd) ? cmd : serialize(cmd, options);
407+
let context: MongoCryptContext
408+
try {
409+
context = this._mongocrypt.makeEncryptionContext(
410+
MongoDBCollectionNamespace.fromString(ns).db,
411+
commandBuffer
412+
);
406413

407-
const context = this._mongocrypt.makeEncryptionContext(
408-
MongoDBCollectionNamespace.fromString(ns).db,
409-
commandBuffer
410-
);
414+
} catch (error) {
415+
throw new MongoError('something went wrong', { cause: error })
416+
}
411417

412418
context.id = this._contextCounter++;
413419
context.ns = ns;

test/integration/client-side-encryption/client_side_encryption.spec.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ describe('Client Side Encryption (Legacy)', function () {
6262
});
6363
});
6464

65-
describe('Client Side Encryption (Unified)', function () {
65+
describe.only('Client Side Encryption (Unified)', function () {
6666
runUnifiedSuite(
6767
loadSpecTests(path.join('client-side-encryption', 'tests', 'unified')),
6868
({ description }, configuration) => {

test/tools/unified-spec-runner/entities.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,16 @@ import {
4545
type TopologyOpeningEvent,
4646
WriteConcern
4747
} from '../../mongodb';
48-
import { getEnvironmentalOptions } from '../../tools/utils';
48+
import { getEncryptExtraOptions, getEnvironmentalOptions } from '../../tools/utils';
4949
import type { TestConfiguration } from '../runner/config';
5050
import { EntityEventRegistry } from './entity_event_registry';
5151
import { trace } from './runner';
5252
import type { ClientEntity, EntityDescription, ExpectedLogMessage } from './schema';
5353
import {
5454
createClientEncryption,
55+
getCSFLETestDataFromEnvironment,
5556
makeConnectionString,
57+
mergeKMSProviders,
5658
patchCollectionOptions,
5759
patchDbOptions
5860
} from './unified-utils';
@@ -237,7 +239,22 @@ export class UnifiedMongoClient extends MongoClient {
237239
}
238240

239241
if (description.autoEncryptOpts) {
240-
options.autoEncryption = description.autoEncryptOpts;
242+
const { kmsProviders: kmsProvidersFromEnvironment } = getCSFLETestDataFromEnvironment(
243+
process.env
244+
);
245+
246+
options.autoEncryption = {
247+
...description.autoEncryptOpts,
248+
kmsProviders: mergeKMSProviders(
249+
description.autoEncryptOpts.kmsProviders,
250+
kmsProvidersFromEnvironment
251+
),
252+
253+
extraOptions: {
254+
cryptSharedLibPath: getEncryptExtraOptions().cryptSharedLibPath,
255+
...description.autoEncryptOpts.extraOptions
256+
}
257+
};
241258
}
242259

243260
super(uri, options);

test/tools/unified-spec-runner/runner.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,10 +275,10 @@ async function runUnifiedTest(
275275
expect(testClient, `No client entity found with id ${clientId}`).to.exist;
276276
const filteredTestClientLogs = expectedLogsForClient.ignoreMessages
277277
? filterIgnoredMessages(
278-
expectedLogsForClient.ignoreMessages,
279-
testClient!.collectedLogs,
280-
entities
281-
)
278+
expectedLogsForClient.ignoreMessages,
279+
testClient!.collectedLogs,
280+
entities
281+
)
282282
: testClient!.collectedLogs;
283283
compareLogs(
284284
expectedLogsForClient.messages,

test/tools/unified-spec-runner/schema.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,15 @@ export interface ClientEntity {
155155
storeEventsAsEntities?: StoreEventsAsEntity[];
156156
autoEncryptOpts?: Pick<
157157
MongoClientOptions['autoEncryption'],
158-
| 'kmsProviders'
159158
| 'keyVaultNamespace'
160159
| 'bypassAutoEncryption'
161160
| 'schemaMap'
162161
| 'encryptedFieldsMap'
163162
| 'extraOptions'
164163
| 'bypassQueryAnalysis'
165164
| 'keyExpirationMS'
166-
>;
165+
> &
166+
Pick<ClientEncryptionEntity['clientEncryptionOpts'], 'kmsProviders'>;
167167
}
168168

169169
export interface DatabaseEntity {
@@ -227,12 +227,12 @@ export interface ClientEncryptionEntity {
227227
keyVaultNamespace: string;
228228
kmsProviders: UnnamedKMSProviders & {
229229
[key: string]:
230-
| UnnamedKMSProviders['aws']
231-
| UnnamedKMSProviders['gcp']
232-
| UnnamedKMSProviders['azure']
233-
| UnnamedKMSProviders['kmip']
234-
| UnnamedKMSProviders['local']
235-
| undefined;
230+
| UnnamedKMSProviders['aws']
231+
| UnnamedKMSProviders['gcp']
232+
| UnnamedKMSProviders['azure']
233+
| UnnamedKMSProviders['kmip']
234+
| UnnamedKMSProviders['local']
235+
| undefined;
236236
};
237237
keyExpirationMS?: number;
238238
};

0 commit comments

Comments
 (0)