Skip to content

Commit fd9e563

Browse files
CSHARP-4173: Update FLE 2 collection management. (#796)
CSHARP-4173: Update FLE 2 collection management.
1 parent 076d425 commit fd9e563

File tree

7 files changed

+1038
-406
lines changed

7 files changed

+1038
-406
lines changed

src/MongoDB.Driver.Core/Core/Operations/CreateCollectionOperation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ internal static IWriteOperation<BsonDocument> CreateEncryptedCreateCollectionOpe
6262
}
6363

6464
CreateCollectionOperation CreateInnerCollectionOperation(string collectionName)
65-
=> new CreateCollectionOperation(new CollectionNamespace(collectionNamespace.DatabaseNamespace.DatabaseName, collectionName), messageEncoderSettings);
65+
=> new CreateCollectionOperation(new CollectionNamespace(collectionNamespace.DatabaseNamespace.DatabaseName, collectionName), messageEncoderSettings) { ClusteredIndex = new BsonDocument { { "key", new BsonDocument("_id", 1) }, { "unique", true } } };
6666
}
6767
#endregion
6868

src/MongoDB.Driver.Core/Core/Operations/DropCollectionOperation.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ internal static IWriteOperation<BsonDocument> CreateEncryptedDropCollectionOpera
4848
if (encryptedFields != null)
4949
{
5050
return new CompositeWriteOperation<BsonDocument>(
51-
(mainOperation, IsMainOperation: true),
5251
(CreateInnerDropOperation(EncryptedCollectionHelper.GetAdditionalCollectionName(encryptedFields, collectionNamespace, HelperCollectionForEncryption.Esc)), IsMainOperation: false),
5352
(CreateInnerDropOperation(EncryptedCollectionHelper.GetAdditionalCollectionName(encryptedFields, collectionNamespace, HelperCollectionForEncryption.Ecc)), IsMainOperation: false),
54-
(CreateInnerDropOperation(EncryptedCollectionHelper.GetAdditionalCollectionName(encryptedFields, collectionNamespace, HelperCollectionForEncryption.Ecos)), IsMainOperation: false));
53+
(CreateInnerDropOperation(EncryptedCollectionHelper.GetAdditionalCollectionName(encryptedFields, collectionNamespace, HelperCollectionForEncryption.Ecos)), IsMainOperation: false),
54+
(mainOperation, IsMainOperation: true));
5555
}
5656
else
5757
{

tests/MongoDB.Driver.Core.Tests/Core/Operations/CreateCollectionOperationTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -510,16 +510,18 @@ public void CreateEncryptedCreateCollectionOperationIfConfigured_should_return_e
510510
operations[3],
511511
_collectionNamespace,
512512
encryptedFields,
513-
isMainOperation: true);
513+
isMainOperation: true,
514+
withClusteredIndex: false);
514515
// __safeContent__
515516
AssertIndex(operations[4], _collectionNamespace, index: new BsonDocument("__safeContent__", 1));
516517

517-
void AssertCreateCollectionCommand((IWriteOperation<BsonDocument> Operation, bool IsMainOperation) operationInfo, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, bool isMainOperation)
518+
void AssertCreateCollectionCommand((IWriteOperation<BsonDocument> Operation, bool IsMainOperation) operationInfo, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, bool isMainOperation, bool withClusteredIndex = true)
518519
{
519520
var expectedResult = new BsonDocument
520521
{
521522
{ "create", collectionNamespace.CollectionName },
522-
{ "encryptedFields", encryptedFields, encryptedFields != null }
523+
{ "encryptedFields", encryptedFields, encryptedFields != null },
524+
{ "clusteredIndex", new BsonDocument { { "key" , new BsonDocument("_id", 1 ) }, { "unique", true } }, withClusteredIndex }
523525
};
524526
AssertCommand(operationInfo, isMainOperation, expectedResult);
525527
}

tests/MongoDB.Driver.Core.Tests/Core/Operations/DropCollectionOperationTests.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,31 +141,32 @@ public void CreateEncryptedDropCollectionOperationIfConfigured_should_return_exp
141141

142142
var operations = ((CompositeWriteOperation<BsonDocument>)subject)._operations<BsonDocument>();
143143

144-
// main
145-
AssertDropCollectionCommand(
146-
operations[0],
147-
_collectionNamespace,
148-
encryptedFields,
149-
isMainOperation: true);
150144
// esc
151145
AssertDropCollectionCommand(
152-
operations[1],
146+
operations[0],
153147
new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(escCollectionStrElement)),
154148
encryptedFields: null,
155149
isMainOperation: false);
156150
// ecc
157151
AssertDropCollectionCommand(
158-
operations[2],
152+
operations[1],
159153
new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(eccCollectionStrElement)),
160154
encryptedFields: null,
161155
isMainOperation: false);
162156
// eco
163157
AssertDropCollectionCommand(
164-
operations[3],
158+
operations[2],
165159
new CollectionNamespace(_collectionNamespace.DatabaseNamespace.DatabaseName, GetExpectedCollectionName(ecocCollectionStrElement)),
166160
encryptedFields: null,
167161
isMainOperation: false);
168162

163+
// main
164+
AssertDropCollectionCommand(
165+
operations[3],
166+
_collectionNamespace,
167+
encryptedFields,
168+
isMainOperation: true);
169+
169170
void AssertDropCollectionCommand((IWriteOperation<BsonDocument> Operation, bool IsMainOperation) operationInfo, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, bool isMainOperation)
170171
{
171172
operationInfo.IsMainOperation.Should().Be(isMainOperation);

0 commit comments

Comments
 (0)