@@ -11,7 +11,6 @@ import { signatures, toShellResult } from './decorators';
11
11
import { ALL_PLATFORMS , ALL_SERVER_VERSIONS , ALL_TOPOLOGIES , ALL_API_VERSIONS } from './enums' ;
12
12
import { ClientEncryption , ClientSideFieldLevelEncryptionOptions , ClientSideFieldLevelEncryptionKmsProvider as KMSProvider , KeyVault } from './field-level-encryption' ;
13
13
import Mongo from './mongo' ;
14
- import { DeleteResult } from './result' ;
15
14
import ShellInstanceState from './shell-instance-state' ;
16
15
import { CliServiceProvider } from '../../service-provider-server' ;
17
16
import { startTestServer } from '../../../testing/integration-testing-hooks' ;
@@ -340,6 +339,18 @@ describe('Field Level Encryption', () => {
340
339
}
341
340
expect . fail ( 'Expected error' ) ;
342
341
} ) ;
342
+ it ( 'reads keyAltNames and keyMaterial from DataKeyEncryptionKeyOptions' , async ( ) => {
343
+ const rawResult = { result : 1 } ;
344
+ const keyVault = await mongo . getKeyVault ( ) ;
345
+ const options = {
346
+ keyAltNames : [ 'b' ] ,
347
+ keyMaterial : new bson . Binary ( Buffer . from ( '12345678123498761234123456789012' , 'hex' ) , 4 )
348
+ } ;
349
+
350
+ libmongoc . createDataKey . resolves ( rawResult ) ;
351
+ await keyVault . createKey ( 'local' , options ) ;
352
+ expect ( libmongoc . createDataKey ) . calledOnceWithExactly ( 'local' , options ) ;
353
+ } ) ;
343
354
} ) ;
344
355
describe ( 'getKey' , ( ) => {
345
356
it ( 'calls find on key coll' , async ( ) => {
@@ -401,87 +412,45 @@ describe('Field Level Encryption', () => {
401
412
} ) ;
402
413
} ) ;
403
414
describe ( 'getKeys' , ( ) => {
404
- it ( 'calls find on key coll ' , async ( ) => {
405
- const c = { cursor : 1 } as any ;
406
- sp . find . returns ( c ) ;
415
+ it ( 'calls getKeys on libmongocrypt ' , async ( ) => {
416
+ const c = { count : 1 } as any ;
417
+ libmongoc . getKeys . returns ( c ) ;
407
418
const result = await keyVault . getKeys ( ) ;
408
- expect ( sp . find ) . to . have . been . calledOnceWithExactly ( DB , COLL , { } , { } ) ;
419
+ expect ( libmongoc . getKeys ) . to . have . been . called ;
409
420
expect ( result . _cursor ) . to . deep . equal ( c ) ;
410
421
} ) ;
411
422
} ) ;
412
423
describe ( 'deleteKey' , ( ) => {
413
- it ( 'calls deleteOne on key coll ' , async ( ) => {
414
- const r = { acknowledged : 1 , deletedCount : 1 } as any ;
415
- sp . deleteOne . resolves ( r ) ;
424
+ it ( 'calls deleteKey on libmongocrypt ' , async ( ) => {
425
+ const r = { acknowledged : true , deletedCount : 1 } as any ;
426
+ libmongoc . deleteKey . resolves ( r ) ;
416
427
const result = await keyVault . deleteKey ( KEY_ID ) ;
417
- expect ( sp . deleteOne ) . to . have . been . calledOnceWithExactly ( DB , COLL , { _id : KEY_ID } , { } ) ;
418
- expect ( result ) . to . deep . equal ( new DeleteResult ( true , 1 ) ) ;
428
+ expect ( libmongoc . deleteKey ) . to . have . been . calledOnceWithExactly ( KEY_ID ) ;
429
+ expect ( result ) . to . deep . eq ( r ) ;
419
430
} ) ;
420
431
} ) ;
421
432
describe ( 'addKeyAlternateName' , ( ) => {
422
- it ( 'calls findOneAndUpdate on key coll ' , async ( ) => {
433
+ it ( 'calls addKeyAltName on libmongocrypt ' , async ( ) => {
423
434
const r = { value : { ok : 1 } } as any ;
424
- sp . findOneAndUpdate . resolves ( r ) ;
435
+ libmongoc . addKeyAltName . resolves ( r . value ) ;
425
436
const result = await keyVault . addKeyAlternateName ( KEY_ID , 'altname' ) ;
426
- expect ( sp . findOneAndUpdate ) . to . have . been . calledOnceWithExactly (
427
- DB ,
428
- COLL ,
429
- { _id : KEY_ID } ,
430
- { $addToSet : { 'keyAltNames' : 'altname' } , $currentDate : { 'updateDate' : true } } ,
431
- { returnDocument : 'before' }
437
+ expect ( libmongoc . addKeyAltName ) . to . have . been . calledOnceWithExactly (
438
+ KEY_ID ,
439
+ 'altname'
432
440
) ;
433
- expect ( result ) . to . deep . equal ( { ok : 1 } ) ;
441
+ expect ( result ) . to . deep . equal ( r . value ) ;
434
442
} ) ;
435
443
} ) ;
436
444
describe ( 'removeKeyAlternateName' , ( ) => {
437
- it ( 'calls findOneAndUpdate on key coll without empty result ' , async ( ) => {
438
- const r = { value : { ok : 1 , keyAltNames : [ 'other' ] } } as any ;
439
- sp . findOneAndUpdate . resolves ( r ) ;
445
+ it ( 'calls removeKeyAltName on libmongocrypt ' , async ( ) => {
446
+ const r = { value : { ok : 1 } } as any ;
447
+ libmongoc . removeKeyAltName . resolves ( r . value ) ;
440
448
const result = await keyVault . removeKeyAlternateName ( KEY_ID , 'altname' ) ;
441
- expect ( sp . findOneAndUpdate ) . to . have . been . calledOnceWithExactly (
442
- DB ,
443
- COLL ,
444
- { _id : KEY_ID } ,
445
- { $pull : { 'keyAltNames' : 'altname' } , $currentDate : { 'updateDate' : true } } ,
446
- { returnDocument : 'before' }
449
+ expect ( libmongoc . removeKeyAltName ) . to . have . been . calledOnceWithExactly (
450
+ KEY_ID ,
451
+ 'altname'
447
452
) ;
448
- expect ( result ) . to . deep . equal ( { ok : 1 , keyAltNames : [ 'other' ] } ) ;
449
- } ) ;
450
- it ( 'calls findOneAndUpdate on key coll with empty result' , async ( ) => {
451
- const r = { value : { ok : 1 , keyAltNames : [ 'altname' ] } } as any ;
452
- const r2 = { value : { ok : 2 } } as any ;
453
- sp . findOneAndUpdate . onFirstCall ( ) . resolves ( r ) ;
454
- sp . findOneAndUpdate . onSecondCall ( ) . resolves ( r2 ) ;
455
- const result = await keyVault . removeKeyAlternateName ( KEY_ID , 'altname' ) ;
456
- const calls = sp . findOneAndUpdate . getCalls ( ) ;
457
- expect ( calls . length ) . to . equal ( 2 ) ;
458
- expect ( calls [ 0 ] . args ) . to . deep . equal ( [
459
- DB ,
460
- COLL ,
461
- { _id : KEY_ID } ,
462
- { $pull : { 'keyAltNames' : 'altname' } , $currentDate : { 'updateDate' : true } } ,
463
- { returnDocument : 'before' }
464
- ] ) ;
465
- expect ( calls [ 1 ] . args ) . to . deep . equal ( [
466
- DB ,
467
- COLL ,
468
- { _id : KEY_ID , keyAltNames : { $size : 0 } } ,
469
- { $unset : { 'keyAltNames' : '' } , $currentDate : { 'updateDate' : true } } ,
470
- { returnDocument : 'before' }
471
- ] ) ;
472
- expect ( result ) . to . deep . equal ( r2 . value ) ;
473
- } ) ;
474
- it ( 'reads keyAltNames and keyMaterial from DataKeyEncryptionKeyOptions' , async ( ) => {
475
- const rawResult = { result : 1 } ;
476
- const keyVault = await mongo . getKeyVault ( ) ;
477
- const options = {
478
- keyAltNames : [ 'b' ] ,
479
- keyMaterial : new bson . Binary ( Buffer . from ( '12345678123498761234123456789012' , 'hex' ) , 4 )
480
- } ;
481
-
482
- libmongoc . createDataKey . resolves ( rawResult ) ;
483
- await keyVault . createKey ( 'local' , options ) ;
484
- expect ( libmongoc . createDataKey ) . calledOnceWithExactly ( 'local' , options ) ;
453
+ expect ( result ) . to . deep . equal ( r . value ) ;
485
454
} ) ;
486
455
} ) ;
487
456
describe ( 'rewrapManyDataKey' , ( ) => {
0 commit comments