...

Text file src/go.mongodb.org/mongo-driver/testdata/client-side-encryption/legacy/fle2v2-CreateCollection.yml

Documentation: go.mongodb.org/mongo-driver/testdata/client-side-encryption/legacy

     1# Requires libmongocrypt 1.8.0.
     2runOn:
     3  - minServerVersion: "7.0.0"
     4    # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
     5    # FLE 2 Encrypted collections are not supported on standalone.
     6    topology: [ "replicaset", "sharded", "load-balanced" ]
     7    
     8database_name: &database_name "default"
     9collection_name: &collection_name "default"
    10
    11tests:
    12  - description: "state collections and index are created"
    13    clientOptions:
    14      autoEncryptOpts:
    15        kmsProviders:
    16          aws: {} # Credentials filled in from environment.
    17        encryptedFieldsMap:
    18          default.encryptedCollection: &encrypted_fields {
    19                "fields": [
    20                    {
    21                        "path": "firstName",
    22                        "bsonType": "string",
    23                        "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
    24                    }
    25                ]
    26            }
    27
    28    operations:
    29      # Do an initial drop to remove collections that may exist from previous test runs.
    30      - name: dropCollection
    31        object: database
    32        arguments:
    33          collection: &encrypted_collection_name "encryptedCollection"
    34      - name: createCollection
    35        object: database
    36        arguments:
    37          collection: *encrypted_collection_name
    38      - name: assertCollectionExists
    39        object: testRunner
    40        arguments:
    41          database: *database_name
    42          collection: &esc_collection_name "enxcol_.encryptedCollection.esc"
    43      # ecc collection is no longer created for QEv2
    44      - name: assertCollectionNotExists
    45        object: testRunner
    46        arguments:
    47          database: *database_name
    48          collection: &ecc_collection_name "enxcol_.encryptedCollection.ecc"
    49      - name: assertCollectionExists
    50        object: testRunner
    51        arguments:
    52          database: *database_name
    53          collection: &ecoc_collection_name "enxcol_.encryptedCollection.ecoc"
    54      - name: assertCollectionExists
    55        object: testRunner
    56        arguments:
    57          database: *database_name
    58          collection: *encrypted_collection_name
    59      - name: assertIndexExists
    60        object: testRunner
    61        arguments:
    62          database: *database_name
    63          collection: *encrypted_collection_name
    64          index: __safeContent___1
    65
    66    expectations:
    67        # events from dropCollection ... begin
    68        - command_started_event:
    69            command:
    70              drop: *esc_collection_name
    71            command_name: drop
    72            database_name: *database_name
    73        - command_started_event:
    74            command:
    75              drop: *ecoc_collection_name
    76            command_name: drop
    77            database_name: *database_name
    78        - command_started_event:
    79            command:
    80              drop: *encrypted_collection_name
    81            command_name: drop
    82            database_name: *database_name
    83        # events from dropCollection ... end
    84        # events from createCollection ... begin
    85        # State collections are created first.
    86        - command_started_event:
    87            command:
    88              create: *esc_collection_name
    89              clusteredIndex: {key: {_id: 1}, unique: true}
    90            command_name: create
    91            database_name: *database_name
    92        - command_started_event:
    93            command:
    94              create: *ecoc_collection_name
    95              clusteredIndex: {key: {_id: 1}, unique: true}
    96            command_name: create
    97            database_name: *database_name
    98        # Data collection is created after.
    99        - command_started_event:
   100            command:
   101              create: *encrypted_collection_name
   102              encryptedFields: &encrypted_fields_expectation {
   103                # Expect state collections are not included in the encryptedFields sent to the server.
   104                "escCollection": null,
   105                "ecocCollection": null,
   106                "eccCollection": null,
   107                "fields": [
   108                    {
   109                        "path": "firstName",
   110                        "bsonType": "string",
   111                        "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
   112                    }
   113                ]
   114            }
   115            command_name: create
   116            database_name: *database_name
   117        # Index on __safeContents__ is then created.
   118        - command_started_event:
   119            command:
   120              createIndexes: *encrypted_collection_name
   121              indexes:
   122                - name: __safeContent___1
   123                  key: { __safeContent__: 1 }
   124            command_name: createIndexes
   125            database_name: *database_name
   126        # events from createCollection ... end
   127  - description: "default state collection names are applied"
   128    clientOptions:
   129      autoEncryptOpts:
   130        kmsProviders:
   131          aws: {} # Credentials filled in from environment.
   132        encryptedFieldsMap:
   133          default.encryptedCollection: *encrypted_fields
   134
   135    operations:
   136      # Do an initial drop to remove collections that may exist from previous test runs.
   137      - name: dropCollection
   138        object: database
   139        arguments:
   140          collection: *encrypted_collection_name
   141      - name: createCollection
   142        object: database
   143        arguments:
   144          collection: *encrypted_collection_name
   145      - name: assertCollectionExists
   146        object: testRunner
   147        arguments:
   148          database: *database_name
   149          collection: *esc_collection_name
   150      # ecc collection is no longer created for QEv2
   151      - name: assertCollectionNotExists
   152        object: testRunner
   153        arguments:
   154          database: *database_name
   155          collection: *ecc_collection_name
   156      - name: assertCollectionExists
   157        object: testRunner
   158        arguments:
   159          database: *database_name
   160          collection: *ecoc_collection_name
   161      - name: assertCollectionExists
   162        object: testRunner
   163        arguments:
   164          database: *database_name
   165          collection: *encrypted_collection_name
   166      - name: assertIndexExists
   167        object: testRunner
   168        arguments:
   169          database: *database_name
   170          collection: *encrypted_collection_name
   171          index: __safeContent___1
   172      
   173    expectations:
   174        # events from dropCollection ... begin
   175        - command_started_event:
   176            command:
   177              drop: *esc_collection_name
   178            command_name: drop
   179            database_name: *database_name
   180        - command_started_event:
   181            command:
   182              drop: *ecoc_collection_name
   183            command_name: drop
   184            database_name: *database_name
   185        - command_started_event:
   186            command:
   187              drop: *encrypted_collection_name
   188            command_name: drop
   189            database_name: *database_name
   190        # events from dropCollection ... end
   191        # events from createCollection ... begin
   192        # State collections are created first.
   193        - command_started_event:
   194            command:
   195              create: *esc_collection_name
   196              clusteredIndex: {key: {_id: 1}, unique: true}
   197            command_name: create
   198            database_name: *database_name
   199        - command_started_event:
   200            command:
   201              create: *ecoc_collection_name
   202              clusteredIndex: {key: {_id: 1}, unique: true}
   203            command_name: create
   204            database_name: *database_name
   205        # Data collection is created after.
   206        - command_started_event:
   207            command:
   208              create: *encrypted_collection_name
   209              encryptedFields: *encrypted_fields_expectation
   210            command_name: create
   211            database_name: *database_name
   212        # Index on __safeContents__ is then created.
   213        - command_started_event:
   214            command:
   215              createIndexes: *encrypted_collection_name
   216              indexes:
   217                - name: __safeContent___1
   218                  key: { __safeContent__: 1 }
   219            command_name: createIndexes
   220            database_name: *database_name
   221        # events from createCollection ... end
   222  - description: "drop removes all state collections"
   223    clientOptions:
   224      autoEncryptOpts:
   225        kmsProviders:
   226          aws: {} # Credentials filled in from environment.
   227        encryptedFieldsMap:
   228          default.encryptedCollection: *encrypted_fields
   229
   230    operations:
   231      # Do an initial drop to remove collections that may exist from previous test runs.
   232      - name: dropCollection
   233        object: database
   234        arguments:
   235          collection: *encrypted_collection_name
   236      - name: createCollection
   237        object: database
   238        arguments:
   239          collection: *encrypted_collection_name
   240      - name: assertCollectionExists
   241        object: testRunner
   242        arguments:
   243          database: *database_name
   244          collection: *esc_collection_name
   245      # ecc collection is no longer created for QEv2
   246      - name: assertCollectionNotExists
   247        object: testRunner
   248        arguments:
   249          database: *database_name
   250          collection: *ecc_collection_name
   251      - name: assertCollectionExists
   252        object: testRunner
   253        arguments:
   254          database: *database_name
   255          collection: *ecoc_collection_name
   256      - name: assertCollectionExists
   257        object: testRunner
   258        arguments:
   259          database: *database_name
   260          collection: *encrypted_collection_name
   261      - name: assertIndexExists
   262        object: testRunner
   263        arguments:
   264          database: *database_name
   265          collection: *encrypted_collection_name
   266          index: __safeContent___1
   267      - name: dropCollection
   268        object: database
   269        arguments:
   270          collection: *encrypted_collection_name
   271      # ecc collection is no longer created for QEv2
   272      - name: assertCollectionNotExists
   273        object: testRunner
   274        arguments:
   275          database: *database_name
   276          collection: *ecoc_collection_name
   277      # ecc collection is no longer created for QEv2
   278      - name: assertCollectionNotExists
   279        object: testRunner
   280        arguments:
   281          database: *database_name
   282          collection: *encrypted_collection_name
   283      - name: assertIndexNotExists
   284        object: testRunner
   285        arguments:
   286          database: *database_name
   287          collection: *encrypted_collection_name
   288          index: __safeContent___1
   289      
   290    expectations:
   291        # events from dropCollection ... begin
   292        - command_started_event:
   293            command:
   294              drop: *esc_collection_name
   295            command_name: drop
   296            database_name: *database_name
   297        - command_started_event:
   298            command:
   299              drop: *ecoc_collection_name
   300            command_name: drop
   301            database_name: *database_name
   302        - command_started_event:
   303            command:
   304              drop: *encrypted_collection_name
   305            command_name: drop
   306            database_name: *database_name
   307        # events from dropCollection ... end
   308        # events from createCollection ... begin
   309        # State collections are created first.
   310        - command_started_event:
   311            command:
   312              create: *esc_collection_name
   313              clusteredIndex: {key: {_id: 1}, unique: true}
   314            command_name: create
   315            database_name: *database_name
   316        - command_started_event:
   317            command:
   318              create: *ecoc_collection_name
   319              clusteredIndex: {key: {_id: 1}, unique: true}
   320            command_name: create
   321            database_name: *database_name
   322        # Data collection is created after.
   323        - command_started_event:
   324            command:
   325              create: *encrypted_collection_name
   326              encryptedFields: *encrypted_fields
   327            command_name: create
   328            database_name: *database_name
   329        # Index on __safeContents__ is then created.
   330        - command_started_event:
   331            command:
   332              createIndexes: *encrypted_collection_name
   333              indexes:
   334                - name: __safeContent___1
   335                  key: { __safeContent__: 1 }
   336            command_name: createIndexes
   337            database_name: *database_name
   338        # events from createCollection ... end
   339        # events from dropCollection ... begin
   340        - command_started_event:
   341            command:
   342              drop: *esc_collection_name
   343            command_name: drop
   344            database_name: *database_name
   345        - command_started_event:
   346            command:
   347              drop: *ecoc_collection_name
   348            command_name: drop
   349            database_name: *database_name
   350        - command_started_event:
   351            command:
   352              drop: *encrypted_collection_name
   353            command_name: drop
   354            database_name: *database_name
   355        # events from dropCollection ... end
   356  - description: "CreateCollection without encryptedFields."
   357    clientOptions:
   358      autoEncryptOpts:
   359        kmsProviders:
   360          aws: {} # Credentials filled in from environment.
   361        encryptedFieldsMap:
   362          default.encryptedCollection: *encrypted_fields
   363    operations:
   364      # Do an initial drop to remove collections that may exist from previous test runs.
   365      - name: dropCollection
   366        object: database
   367        arguments:
   368          collection: "plaintextCollection"
   369      - name: createCollection
   370        object: database
   371        arguments:
   372          collection: "plaintextCollection"
   373      - name: assertCollectionExists
   374        object: testRunner
   375        arguments:
   376          database: *database_name
   377          collection: "plaintextCollection"
   378
   379    expectations:
   380        # events from dropCollection ... begin
   381        # expect listCollections to be sent on drop to check for remote encryptedFields.
   382        - command_started_event:
   383            command:
   384              listCollections: 1
   385              filter: { name: "plaintextCollection" }
   386            command_name: listCollections
   387            database_name: *database_name
   388        - command_started_event:
   389            command:
   390              drop: "plaintextCollection"
   391            command_name: drop
   392            database_name: *database_name
   393        # events from dropCollection ... end
   394        - command_started_event:
   395            command:
   396              create: "plaintextCollection"
   397            command_name: create
   398            database_name: *database_name
   399  - description: "CreateCollection from encryptedFieldsMap."
   400    clientOptions:
   401      autoEncryptOpts:
   402        kmsProviders:
   403          aws: {} # Credentials filled in from environment.
   404        encryptedFieldsMap:
   405          default.encryptedCollection: *encrypted_fields
   406    operations:
   407      # Do an initial drop to remove collections that may exist from previous test runs.
   408      - name: dropCollection
   409        object: database
   410        arguments:
   411          collection: *encrypted_collection_name
   412      - name: createCollection
   413        object: database
   414        arguments:
   415          collection: *encrypted_collection_name
   416      - name: assertCollectionExists
   417        object: testRunner
   418        arguments:
   419          database: *database_name
   420          collection: *esc_collection_name
   421      # ecc collection is no longer created for QEv2
   422      - name: assertCollectionNotExists
   423        object: testRunner
   424        arguments:
   425          database: *database_name
   426          collection: *ecc_collection_name
   427      - name: assertCollectionExists
   428        object: testRunner
   429        arguments:
   430          database: *database_name
   431          collection: *ecoc_collection_name
   432      - name: assertCollectionExists
   433        object: testRunner
   434        arguments:
   435          database: *database_name
   436          collection: *encrypted_collection_name
   437      - name: assertIndexExists
   438        object: testRunner
   439        arguments:
   440          database: *database_name
   441          collection: *encrypted_collection_name
   442          index: __safeContent___1
   443
   444    expectations:
   445        # events from dropCollection ... begin
   446        - command_started_event:
   447            command:
   448              drop: *esc_collection_name
   449            command_name: drop
   450            database_name: *database_name
   451        - command_started_event:
   452            command:
   453              drop: *ecoc_collection_name
   454            command_name: drop
   455            database_name: *database_name
   456        - command_started_event:
   457            command:
   458              drop: *encrypted_collection_name
   459            command_name: drop
   460            database_name: *database_name
   461        # events from dropCollection ... end
   462        # events from createCollection ... begin
   463        # State collections are created first.
   464        - command_started_event:
   465            command:
   466              create: *esc_collection_name
   467              clusteredIndex: {key: {_id: 1}, unique: true}
   468            command_name: create
   469            database_name: *database_name
   470        - command_started_event:
   471            command:
   472              create: *ecoc_collection_name
   473              clusteredIndex: {key: {_id: 1}, unique: true}
   474            command_name: create
   475            database_name: *database_name
   476        # Data collection is created after.
   477        - command_started_event:
   478            command:
   479              create: *encrypted_collection_name
   480              encryptedFields: *encrypted_fields_expectation
   481            command_name: create
   482            database_name: *database_name
   483        # Index on __safeContents__ is then created.
   484        - command_started_event:
   485            command:
   486              createIndexes: *encrypted_collection_name
   487              indexes:
   488                - name: __safeContent___1
   489                  key: { __safeContent__: 1 }
   490            command_name: createIndexes
   491            database_name: *database_name
   492        # events from createCollection ... end
   493  - description: "CreateCollection from encryptedFields."
   494    clientOptions:
   495      autoEncryptOpts:
   496        kmsProviders:
   497          aws: {} # Credentials filled in from environment.
   498    operations:
   499      # Do initial drops to remove collections that may exist from previous test runs.
   500      - name: dropCollection
   501        object: database
   502        arguments:
   503          collection: *encrypted_collection_name
   504          encryptedFields: *encrypted_fields
   505      - name: createCollection
   506        object: database
   507        arguments:
   508          collection: *encrypted_collection_name
   509          encryptedFields: *encrypted_fields
   510      - name: assertCollectionExists
   511        object: testRunner
   512        arguments:
   513          database: *database_name
   514          collection: *esc_collection_name
   515      # ecc collection is no longer created for QEv2
   516      - name: assertCollectionNotExists
   517        object: testRunner
   518        arguments:
   519          database: *database_name
   520          collection: *ecc_collection_name
   521      - name: assertCollectionExists
   522        object: testRunner
   523        arguments:
   524          database: *database_name
   525          collection: *ecoc_collection_name
   526      - name: assertCollectionExists
   527        object: testRunner
   528        arguments:
   529          database: *database_name
   530          collection: *encrypted_collection_name
   531      - name: assertIndexExists
   532        object: testRunner
   533        arguments:
   534          database: *database_name
   535          collection: *encrypted_collection_name
   536          index: __safeContent___1
   537
   538    expectations:
   539        # events from dropCollection ... begin
   540        - command_started_event:
   541            command:
   542              drop: *esc_collection_name
   543            command_name: drop
   544            database_name: *database_name
   545        - command_started_event:
   546            command:
   547              drop: *ecoc_collection_name
   548            command_name: drop
   549            database_name: *database_name
   550        - command_started_event:
   551            command:
   552              drop: *encrypted_collection_name
   553            command_name: drop
   554            database_name: *database_name
   555        # events from dropCollection ... end
   556        # events from createCollection ... begin
   557        # State collections are created first.
   558        - command_started_event:
   559            command:
   560              create: *esc_collection_name
   561              clusteredIndex: {key: {_id: 1}, unique: true}
   562            command_name: create
   563            database_name: *database_name
   564        - command_started_event:
   565            command:
   566              create: *ecoc_collection_name
   567              clusteredIndex: {key: {_id: 1}, unique: true}
   568            command_name: create
   569            database_name: *database_name
   570        # Data collection is created after.
   571        - command_started_event:
   572            command:
   573              create: *encrypted_collection_name
   574              encryptedFields: *encrypted_fields_expectation
   575            command_name: create
   576            database_name: *database_name
   577        # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
   578        - command_started_event:
   579            command:
   580              listCollections: 1
   581              filter: { name: *encrypted_collection_name }
   582            command_name: listCollections
   583            database_name: *database_name
   584        # Index on __safeContents__ is then created.
   585        - command_started_event:
   586            command:
   587              createIndexes: *encrypted_collection_name
   588              indexes:
   589                - name: __safeContent___1
   590                  key: { __safeContent__: 1 }
   591            command_name: createIndexes
   592            database_name: *database_name
   593        # events from createCollection ... end
   594
   595  - description: "DropCollection from encryptedFieldsMap"
   596    clientOptions:
   597      autoEncryptOpts:
   598        kmsProviders:
   599          aws: {} # Credentials filled in from environment.
   600        encryptedFieldsMap:
   601          default.encryptedCollection: *encrypted_fields
   602    operations:
   603      - name: dropCollection
   604        object: database
   605        arguments:
   606          collection: *encrypted_collection_name
   607    expectations:
   608        # events from dropCollection ... begin
   609        - command_started_event:
   610            command:
   611              drop: *esc_collection_name
   612            command_name: drop
   613            database_name: *database_name
   614        - command_started_event:
   615            command:
   616              drop: *ecoc_collection_name
   617            command_name: drop
   618            database_name: *database_name
   619        - command_started_event:
   620            command:
   621              drop: *encrypted_collection_name
   622            command_name: drop
   623            database_name: *database_name
   624        # events from dropCollection ... end
   625  - description: "DropCollection from encryptedFields"
   626    clientOptions:
   627      autoEncryptOpts:
   628        kmsProviders:
   629          aws: {} # Credentials filled in from environment.
   630        encryptedFieldsMap: {}
   631    operations:
   632      # Do initial drops to remove collections that may exist from previous test runs.
   633      - name: dropCollection
   634        object: database
   635        arguments:
   636          collection: *encrypted_collection_name
   637          encryptedFields: *encrypted_fields
   638      - name: createCollection
   639        object: database
   640        arguments:
   641          collection: *encrypted_collection_name
   642          encryptedFields: *encrypted_fields
   643      - name: assertCollectionExists
   644        object: testRunner
   645        arguments:
   646          database: *database_name
   647          collection: *esc_collection_name
   648      # ecc collection is no longer created for QEv2
   649      - name: assertCollectionNotExists
   650        object: testRunner
   651        arguments:
   652          database: *database_name
   653          collection: *ecc_collection_name
   654      - name: assertCollectionExists
   655        object: testRunner
   656        arguments:
   657          database: *database_name
   658          collection: *ecoc_collection_name
   659      - name: assertCollectionExists
   660        object: testRunner
   661        arguments:
   662          database: *database_name
   663          collection: *encrypted_collection_name
   664      - name: assertIndexExists
   665        object: testRunner
   666        arguments:
   667          database: *database_name
   668          collection: *encrypted_collection_name
   669          index: __safeContent___1
   670      - name: dropCollection
   671        object: database
   672        arguments:
   673          collection: *encrypted_collection_name
   674          encryptedFields: *encrypted_fields
   675      # ecc collection is no longer created for QEv2
   676      - name: assertCollectionNotExists
   677        object: testRunner
   678        arguments:
   679          database: *database_name
   680          collection: *esc_collection_name
   681      # ecc collection is no longer created for QEv2
   682      - name: assertCollectionNotExists
   683        object: testRunner
   684        arguments:
   685          database: *database_name
   686          collection: *ecoc_collection_name
   687      # ecc collection is no longer created for QEv2
   688      - name: assertCollectionNotExists
   689        object: testRunner
   690        arguments:
   691          database: *database_name
   692          collection: *encrypted_collection_name
   693    expectations:
   694        # events from dropCollection ... begin
   695        - command_started_event:
   696            command:
   697              drop: *esc_collection_name
   698            command_name: drop
   699            database_name: *database_name
   700        - command_started_event:
   701            command:
   702              drop: *ecoc_collection_name
   703            command_name: drop
   704            database_name: *database_name
   705        - command_started_event:
   706            command:
   707              drop: *encrypted_collection_name
   708            command_name: drop
   709            database_name: *database_name
   710        # events from dropCollection ... end
   711        # events from createCollection ... begin
   712        - command_started_event:
   713            command:
   714              create: *esc_collection_name
   715              clusteredIndex: {key: {_id: 1}, unique: true}
   716            command_name: create
   717            database_name: *database_name
   718        - command_started_event:
   719            command:
   720              create: *ecoc_collection_name
   721              clusteredIndex: {key: {_id: 1}, unique: true}
   722            command_name: create
   723            database_name: *database_name
   724        - command_started_event:
   725            command:
   726              create: *encrypted_collection_name
   727              encryptedFields: *encrypted_fields_expectation
   728            command_name: create
   729            database_name: *database_name
   730        # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
   731        - command_started_event:
   732            command:
   733              listCollections: 1
   734              filter: { name: *encrypted_collection_name }
   735            command_name: listCollections
   736            database_name: *database_name
   737        # Index on __safeContents__ is then created.
   738        - command_started_event:
   739            command:
   740              createIndexes: *encrypted_collection_name
   741              indexes:
   742                - name: __safeContent___1
   743                  key: { __safeContent__: 1 }
   744            command_name: createIndexes
   745            database_name: *database_name
   746        # events from createCollection ... end
   747        # events from dropCollection ... begin
   748        - command_started_event:
   749            command:
   750              drop: *esc_collection_name
   751            command_name: drop
   752            database_name: *database_name
   753        - command_started_event:
   754            command:
   755              drop: *ecoc_collection_name
   756            command_name: drop
   757            database_name: *database_name
   758        - command_started_event:
   759            command:
   760              drop: *encrypted_collection_name
   761            command_name: drop
   762            database_name: *database_name
   763        # events from dropCollection ... end
   764
   765  - description: "DropCollection from remote encryptedFields"
   766    clientOptions:
   767      autoEncryptOpts:
   768        kmsProviders:
   769          aws: {} # Credentials filled in from environment.
   770        encryptedFieldsMap: {}
   771
   772    operations:
   773      # Do initial drops to remove collections that may exist from previous test runs.
   774      - name: dropCollection
   775        object: database
   776        arguments:
   777          collection: *encrypted_collection_name
   778          encryptedFields: *encrypted_fields
   779      - name: createCollection
   780        object: database
   781        arguments:
   782          collection: *encrypted_collection_name
   783          encryptedFields: *encrypted_fields
   784      - name: assertCollectionExists
   785        object: testRunner
   786        arguments:
   787          database: *database_name
   788          collection: *esc_collection_name
   789      # ecc collection is no longer created for QEv2
   790      - name: assertCollectionNotExists
   791        object: testRunner
   792        arguments:
   793          database: *database_name
   794          collection: *ecc_collection_name
   795      - name: assertCollectionExists
   796        object: testRunner
   797        arguments:
   798          database: *database_name
   799          collection: *ecoc_collection_name
   800      - name: assertCollectionExists
   801        object: testRunner
   802        arguments:
   803          database: *database_name
   804          collection: *encrypted_collection_name
   805      - name: assertIndexExists
   806        object: testRunner
   807        arguments:
   808          database: *database_name
   809          collection: *encrypted_collection_name
   810          index: __safeContent___1
   811      - name: dropCollection
   812        object: database
   813        arguments:
   814          collection: *encrypted_collection_name
   815      # ecc collection is no longer created for QEv2
   816      - name: assertCollectionNotExists
   817        object: testRunner
   818        arguments:
   819          database: *database_name
   820          collection: *esc_collection_name
   821      # ecc collection is no longer created for QEv2
   822      - name: assertCollectionNotExists
   823        object: testRunner
   824        arguments:
   825          database: *database_name
   826          collection: *ecoc_collection_name
   827      # ecc collection is no longer created for QEv2
   828      - name: assertCollectionNotExists
   829        object: testRunner
   830        arguments:
   831          database: *database_name
   832          collection: *encrypted_collection_name
   833
   834    expectations:
   835        # events from dropCollection ... begin
   836        - command_started_event:
   837            command:
   838              drop: *esc_collection_name
   839            command_name: drop
   840            database_name: *database_name
   841        - command_started_event:
   842            command:
   843              drop: *ecoc_collection_name
   844            command_name: drop
   845            database_name: *database_name
   846        - command_started_event:
   847            command:
   848              drop: *encrypted_collection_name
   849            command_name: drop
   850            database_name: *database_name
   851        # events from dropCollection ... end
   852        # events from createCollection ... begin
   853        - command_started_event:
   854            command:
   855              create: *esc_collection_name
   856              clusteredIndex: {key: {_id: 1}, unique: true}
   857            command_name: create
   858            database_name: *database_name
   859        - command_started_event:
   860            command:
   861              create: *ecoc_collection_name
   862              clusteredIndex: {key: {_id: 1}, unique: true}
   863            command_name: create
   864            database_name: *database_name
   865        - command_started_event:
   866            command:
   867              create: *encrypted_collection_name
   868              encryptedFields: *encrypted_fields_expectation
   869            command_name: create
   870            database_name: *database_name
   871        # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
   872        - command_started_event:
   873            command:
   874              listCollections: 1
   875              filter: { name: *encrypted_collection_name }
   876            command_name: listCollections
   877            database_name: *database_name
   878        # Index on __safeContents__ is then created.
   879        - command_started_event:
   880            command:
   881              createIndexes: *encrypted_collection_name
   882              indexes:
   883                - name: __safeContent___1
   884                  key: { __safeContent__: 1 }
   885            command_name: createIndexes
   886            database_name: *database_name
   887        # events from createCollection ... end
   888        # events from dropCollection ... begin
   889        - command_started_event:
   890            command:
   891              listCollections: 1
   892              filter: { name: *encrypted_collection_name }
   893            command_name: listCollections
   894            database_name: *database_name
   895        - command_started_event:
   896            command:
   897              drop: *esc_collection_name
   898            command_name: drop
   899            database_name: *database_name
   900        - command_started_event:
   901            command:
   902              drop: *ecoc_collection_name
   903            command_name: drop
   904            database_name: *database_name
   905        - command_started_event:
   906            command:
   907              drop: *encrypted_collection_name
   908            command_name: drop
   909            database_name: *database_name
   910        # events from dropCollection ... end
   911  - description: "encryptedFields are consulted for metadata collection names"
   912    clientOptions:
   913      autoEncryptOpts:
   914        kmsProviders:
   915          aws: {} # Credentials filled in from environment.
   916        encryptedFieldsMap:
   917          default.encryptedCollection: {
   918                "escCollection": "invalid_esc_name",
   919                "ecocCollection": "invalid_ecoc_name",
   920                "fields": [
   921                    {
   922                        "path": "firstName",
   923                        "bsonType": "string",
   924                        "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
   925                    }
   926                ]
   927            }
   928
   929    operations:
   930      # Do an initial drop to remove collections that may exist from previous test runs.
   931      - name: dropCollection
   932        object: database
   933        arguments:
   934          collection: *encrypted_collection_name
   935      - name: createCollection
   936        object: database
   937        arguments:
   938          collection: *encrypted_collection_name
   939        result:
   940          # Expect error due to server constraints added in SERVER-74069
   941          errorContains: "Encrypted State Collection name should follow"

View as plain text