Skip to content

Commit 3fd0538

Browse files
authored
CSHARP-4413: Equality operator of MongoClientSettings is bugged (#976)
1 parent 4deb57a commit 3fd0538

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

src/MongoDB.Driver/MongoClientSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ public override bool Equals(object obj)
10941094
_minConnectionPoolSize == rhs._minConnectionPoolSize &&
10951095
object.Equals(_readEncoding, rhs._readEncoding) &&
10961096
object.Equals(_readConcern, rhs._readConcern) &&
1097-
_readPreference == rhs._readPreference &&
1097+
object.Equals(_readPreference, rhs._readPreference) &&
10981098
_replicaSetName == rhs._replicaSetName &&
10991099
_retryReads == rhs._retryReads &&
11001100
_retryWrites == rhs._retryWrites &&
@@ -1109,7 +1109,7 @@ public override bool Equals(object obj)
11091109
_useTls == rhs._useTls &&
11101110
_waitQueueSize == rhs._waitQueueSize &&
11111111
_waitQueueTimeout == rhs._waitQueueTimeout &&
1112-
_writeConcern == rhs._writeConcern &&
1112+
object.Equals(_writeConcern, rhs._writeConcern) &&
11131113
object.Equals(_writeEncoding, rhs._writeEncoding);
11141114
}
11151115

tests/MongoDB.Driver.Tests/MongoClientSettingsTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,22 @@
1414
*/
1515

1616
using System;
17+
using System.Collections.Generic;
1718
using System.Linq;
1819
using System.Net.Sockets;
1920
using System.Security.Authentication;
21+
using System.Text;
2022
using System.Threading;
2123
using FluentAssertions;
2224
using Microsoft.Extensions.Logging;
2325
using MongoDB.Bson;
26+
using MongoDB.Bson.IO;
2427
using MongoDB.Bson.TestHelpers.XunitExtensions;
2528
using MongoDB.Driver.Core.Clusters;
2629
using MongoDB.Driver.Core.Compression;
2730
using MongoDB.Driver.Core.Configuration;
2831
using MongoDB.Driver.Core.TestHelpers.XunitExtensions;
32+
using MongoDB.Driver.Encryption;
2933
using Moq;
3034
using Xunit;
3135

@@ -550,6 +554,27 @@ public void TestEquals()
550554
clone.SdamLogFilename = "garbage";
551555
#pragma warning restore CS0618 // Type or member is obsolete
552556
Assert.False(clone.Equals(settings));
557+
558+
// set non default values
559+
settings.AutoEncryptionOptions = new AutoEncryptionOptions(CollectionNamespace.FromFullName("encryption.__keyVault"), new Dictionary<string, IReadOnlyDictionary<string, object>>());
560+
settings.LoggingSettings = new LoggingSettings(null, 123);
561+
settings.ReadConcern = ReadConcern.Majority;
562+
settings.ReadEncoding = new UTF8Encoding(false, false);
563+
settings.ServerApi = new ServerApi(ServerApiVersion.V1);
564+
settings.WriteConcern = WriteConcern.W2;
565+
settings.WriteEncoding = new UTF8Encoding(false, false);
566+
567+
clone = settings.Clone();
568+
clone.AutoEncryptionOptions = clone.AutoEncryptionOptions.With(bypassAutoEncryption: settings.AutoEncryptionOptions.BypassAutoEncryption);
569+
clone.LoggingSettings = new LoggingSettings(null, settings.LoggingSettings.MaxDocumentSize);
570+
clone.ReadConcern = ReadConcern.FromBsonDocument(settings.ReadConcern.ToBsonDocument());
571+
clone.ReadEncoding = new UTF8Encoding(false, false);
572+
clone.ReadPreference = clone.ReadPreference.With(settings.ReadPreference.ReadPreferenceMode);
573+
clone.ServerApi = new ServerApi(settings.ServerApi.Version);
574+
clone.WriteConcern = WriteConcern.FromBsonDocument(settings.WriteConcern.ToBsonDocument());
575+
clone.WriteEncoding = new UTF8Encoding(false, false);
576+
577+
Assert.True(clone.Equals(settings));
553578
}
554579

555580
[Fact]

0 commit comments

Comments
 (0)