Skip to content

Commit c0e4ab1

Browse files
Removed return type.
1 parent c0b7f6a commit c0e4ab1

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

src/MongoDB.Driver/Encryption/ClientEncryption.cs

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -86,25 +86,20 @@ public Task<BsonDocument> AddAlternateKeyNameAsync(Guid id, string alternateKeyN
8686
/// <param name="kmsProvider">The kms provider.</param>
8787
/// <param name="dataKeyOptions">The datakey options.</param>
8888
/// <param name="cancellationToken">The cancellation token.</param>
89-
public (IMongoCollection<TCollection> Collection, BsonDocument EncryptedFields) CreateEncryptedCollection<TCollection>(CollectionNamespace collectionNamespace, CreateCollectionOptions createCollectionOptions, string kmsProvider, DataKeyOptions dataKeyOptions, CancellationToken cancellationToken = default)
89+
/// <remarks>
90+
/// if EncryptionFields contains a keyId with a null value, a data key will be automatically generated and assigned to keyId value.
91+
/// </remarks>
92+
public void CreateEncryptedCollection<TCollection>(CollectionNamespace collectionNamespace, CreateCollectionOptions createCollectionOptions, string kmsProvider, DataKeyOptions dataKeyOptions, CancellationToken cancellationToken = default)
9093
{
91-
var effectiveEncryptedFields = createCollectionOptions?.EncryptedFields?.DeepClone()?.AsBsonDocument;
92-
93-
foreach (var fieldDocument in EncryptedCollectionHelper.IterateEmptyKeyIds(collectionNamespace, effectiveEncryptedFields))
94+
foreach (var fieldDocument in EncryptedCollectionHelper.IterateEmptyKeyIds(collectionNamespace, createCollectionOptions.EncryptedFields))
9495
{
9596
var dataKey = CreateDataKey(kmsProvider, dataKeyOptions, cancellationToken);
9697
EncryptedCollectionHelper.ModifyEncryptedFields(fieldDocument, dataKey);
9798
}
9899

99100
var database = _libMongoCryptController.KeyVaultClient.GetDatabase(collectionNamespace.DatabaseNamespace.DatabaseName);
100101

101-
createCollectionOptions.EncryptedFields = effectiveEncryptedFields;
102-
103102
database.CreateCollection(collectionNamespace.CollectionName, createCollectionOptions, cancellationToken);
104-
105-
var collection = database.GetCollection<TCollection>(collectionNamespace.CollectionName);
106-
107-
return (collection, effectiveEncryptedFields);
108103
}
109104

110105
/// <summary>
@@ -115,25 +110,20 @@ public Task<BsonDocument> AddAlternateKeyNameAsync(Guid id, string alternateKeyN
115110
/// <param name="kmsProvider">The kms provider.</param>
116111
/// <param name="dataKeyOptions">The datakey options.</param>
117112
/// <param name="cancellationToken">The cancellation token.</param>
118-
public async Task<(IMongoCollection<TCollection> Collection, BsonDocument EncryptedFields)> CreateEncryptedCollectionAsync<TCollection>(CollectionNamespace collectionNamespace, CreateCollectionOptions createCollectionOptions, string kmsProvider, DataKeyOptions dataKeyOptions, CancellationToken cancellationToken = default)
113+
/// <remarks>
114+
/// if EncryptionFields contains a keyId with a null value, a data key will be automatically generated and assigned to keyId value.
115+
/// </remarks>
116+
public async Task CreateEncryptedCollectionAsync<TCollection>(CollectionNamespace collectionNamespace, CreateCollectionOptions createCollectionOptions, string kmsProvider, DataKeyOptions dataKeyOptions, CancellationToken cancellationToken = default)
119117
{
120-
var effectiveEncryptedFields = createCollectionOptions?.EncryptedFields?.DeepClone()?.AsBsonDocument;
121-
122-
foreach (var fieldDocument in EncryptedCollectionHelper.IterateEmptyKeyIds(collectionNamespace, effectiveEncryptedFields))
118+
foreach (var fieldDocument in EncryptedCollectionHelper.IterateEmptyKeyIds(collectionNamespace, createCollectionOptions.EncryptedFields))
123119
{
124120
var dataKey = await CreateDataKeyAsync(kmsProvider, dataKeyOptions, cancellationToken).ConfigureAwait(false);
125121
EncryptedCollectionHelper.ModifyEncryptedFields(fieldDocument, dataKey);
126122
}
127123

128124
var database = _libMongoCryptController.KeyVaultClient.GetDatabase(collectionNamespace.DatabaseNamespace.DatabaseName);
129125

130-
createCollectionOptions.EncryptedFields = effectiveEncryptedFields;
131-
132126
await database.CreateCollectionAsync(collectionNamespace.CollectionName, createCollectionOptions, cancellationToken).ConfigureAwait(false);
133-
134-
var collection = database.GetCollection<TCollection>(collectionNamespace.CollectionName);
135-
136-
return (collection, effectiveEncryptedFields);
137127
}
138128

139129
/// <summary>

tests/MongoDB.Driver.Tests/Specifications/client-side-encryption/prose-tests/ClientEncryptionProseTests.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,15 @@ void RunTestCase(int testCase)
117117
{
118118
case 1: // Case 1: Simple Creation and Validation
119119
{
120-
var collection = CreateEncryptedCollection(client, clientEncryption, __collCollectionNamespace, encryptedFields, kmsProvider, async).Collection;
120+
var collection = CreateEncryptedCollection(client, clientEncryption, __collCollectionNamespace, encryptedFields, kmsProvider, async);
121121

122122
var exception = Record.Exception(() => Insert(collection, async, new BsonDocument("ssn", "123-45-6789")));
123123
exception.Should().BeOfType<MongoBulkWriteException<BsonDocument>>().Which.Message.Should().Contain("Document failed validation");
124124
}
125125
break;
126126
case 2: // Case 2: Missing ``encryptedFields``
127127
{
128-
var exception = Record.Exception(() => CreateEncryptedCollection(client, clientEncryption, __collCollectionNamespace, encryptedFields: null, kmsProvider, async).Collection);
128+
var exception = Record.Exception(() => CreateEncryptedCollection(client, clientEncryption, __collCollectionNamespace, encryptedFields: null, kmsProvider, async));
129129

130130
exception.Should().BeOfType<InvalidOperationException>().Which.Message.Should().Contain("There are no encrypted fields defined for the collection.") ;
131131
}
@@ -2264,14 +2264,21 @@ private void CreateCollection(IMongoClient client, CollectionNamespace collectio
22642264
});
22652265
}
22662266

2267-
private (IMongoCollection<BsonDocument> Collection, BsonDocument EncryptedFields) CreateEncryptedCollection(IMongoClient client, ClientEncryption clientEncryption, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, string kmsProvider, bool async)
2267+
private IMongoCollection<BsonDocument> CreateEncryptedCollection(IMongoClient client, ClientEncryption clientEncryption, CollectionNamespace collectionNamespace, BsonDocument encryptedFields, string kmsProvider, bool async)
22682268
{
22692269
var createCollectionOptions = new CreateCollectionOptions { EncryptedFields = encryptedFields };
22702270
var datakeyOptions = CreateDataKeyOptions(kmsProvider);
22712271

2272-
return async
2273-
? clientEncryption.CreateEncryptedCollectionAsync<BsonDocument>(collectionNamespace, createCollectionOptions, kmsProvider, datakeyOptions, cancellationToken: default).GetAwaiter().GetResult()
2274-
: clientEncryption.CreateEncryptedCollection<BsonDocument>(collectionNamespace, createCollectionOptions, kmsProvider, datakeyOptions, cancellationToken: default);
2272+
if (async)
2273+
{
2274+
clientEncryption.CreateEncryptedCollectionAsync<BsonDocument>(collectionNamespace, createCollectionOptions, kmsProvider, datakeyOptions, cancellationToken: default).GetAwaiter().GetResult();
2275+
}
2276+
else
2277+
{
2278+
clientEncryption.CreateEncryptedCollection<BsonDocument>(collectionNamespace, createCollectionOptions, kmsProvider, datakeyOptions, cancellationToken: default);
2279+
}
2280+
2281+
return client.GetDatabase(collectionNamespace.DatabaseNamespace.DatabaseName).GetCollection<BsonDocument>(collectionNamespace.CollectionName);
22752282
}
22762283

22772284
private Guid CreateDataKey(

0 commit comments

Comments
 (0)