From a0b07edc823fc6db00ea7615f6c34eb19ce7e18a Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Wed, 9 Aug 2023 15:17:50 +0100 Subject: [PATCH] fix: replace Moq with a library that DOESN'T steal your pii Moq has recently introduced a payload named SponsorLink which takes PII (your email address) to send to a third party server for remote verification. This kind of suspicious data harvesting is simply unacceptable, and the developers have now destroyed all credibility and trust with their user base. This change replaces Moq with NSubstitute. For further information, see: https://github.com/moq/moq/issues/1372 --- X10D.Tests/X10D.Tests.csproj | 2 +- .../CollectionTests.ClearAndDisposeAll.cs | 21 ++++++++++--------- ...CollectionTests.ClearAndDisposeAllAsync.cs | 21 ++++++++++--------- .../Collections/EnumerableTests.DisposeAll.cs | 16 +++++++------- .../EnumerableTests.DisposeAllAsync.cs | 16 +++++++------- 5 files changed, 39 insertions(+), 37 deletions(-) diff --git a/X10D.Tests/X10D.Tests.csproj b/X10D.Tests/X10D.Tests.csproj index 00ea605..aa5bbd2 100644 --- a/X10D.Tests/X10D.Tests.csproj +++ b/X10D.Tests/X10D.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAll.cs b/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAll.cs index ebce1e4..3330de8 100644 --- a/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAll.cs +++ b/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAll.cs @@ -1,5 +1,5 @@ using System.Collections.ObjectModel; -using Moq; +using NSubstitute; using NUnit.Framework; using X10D.Collections; @@ -13,16 +13,17 @@ public partial class CollectionTests [Test] public void ClearAndDisposeAll_ShouldClearAndDisposeAllItems_WhenCalledWithValidList() { - var mock1 = new Mock(); - var mock2 = new Mock(); - var mock3 = new Mock(); - var list = new List {mock1.Object, mock2.Object, mock3.Object}; + var substitute1 = Substitute.For(); + var substitute2 = Substitute.For(); + var substitute3 = Substitute.For(); + var list = new List {substitute1, substitute2, substitute3}; list.ClearAndDisposeAll(); - mock1.Verify(i => i.Dispose(), Times.Once); - mock2.Verify(i => i.Dispose(), Times.Once); - mock3.Verify(i => i.Dispose(), Times.Once); + substitute1.Received(1).Dispose(); + substitute2.Received(1).Dispose(); + substitute3.Received(1).Dispose(); + Assert.That(list, Is.Empty); } @@ -36,8 +37,8 @@ public partial class CollectionTests [Test] public void ClearAndDisposeAll_ShouldThrowInvalidOperationException_WhenCalledWithReadOnlyList() { - var mock = new Mock(); - var list = new ReadOnlyCollection(new List {mock.Object}); + var substitute = Substitute.For(); + var list = new ReadOnlyCollection(new List {substitute}); Assert.Throws(() => list.ClearAndDisposeAll()); } diff --git a/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAllAsync.cs b/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAllAsync.cs index 560eac7..c8b3c6a 100644 --- a/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAllAsync.cs +++ b/X10D.Tests/src/Collections/CollectionTests.ClearAndDisposeAllAsync.cs @@ -1,5 +1,5 @@ using System.Collections.ObjectModel; -using Moq; +using NSubstitute; using NUnit.Framework; using X10D.Collections; @@ -13,16 +13,17 @@ public partial class CollectionTests [Test] public async Task ClearAndDisposeAllAsync_ShouldClearAndDisposeAllItems_WhenCalledWithValidList() { - var mock1 = new Mock(); - var mock2 = new Mock(); - var mock3 = new Mock(); - var list = new List {mock1.Object, mock2.Object, mock3.Object}; + var substitute1 = Substitute.For(); + var substitute2 = Substitute.For(); + var substitute3 = Substitute.For(); + var list = new List {substitute1, substitute2, substitute3}; await list.ClearAndDisposeAllAsync().ConfigureAwait(false); - mock1.Verify(i => i.DisposeAsync(), Times.Once); - mock2.Verify(i => i.DisposeAsync(), Times.Once); - mock3.Verify(i => i.DisposeAsync(), Times.Once); + await substitute1.Received(1).DisposeAsync(); + await substitute2.Received(1).DisposeAsync(); + await substitute3.Received(1).DisposeAsync(); + Assert.That(list, Is.Empty); } @@ -36,8 +37,8 @@ public partial class CollectionTests [Test] public void ClearAndDisposeAllAsync_ShouldThrowInvalidOperationException_WhenCalledWithReadOnlyList() { - var mock = new Mock(); - var list = new ReadOnlyCollection(new List {mock.Object}); + var substitute = Substitute.For(); + var list = new ReadOnlyCollection(new List {substitute}); Assert.ThrowsAsync(list.ClearAndDisposeAllAsync); } diff --git a/X10D.Tests/src/Collections/EnumerableTests.DisposeAll.cs b/X10D.Tests/src/Collections/EnumerableTests.DisposeAll.cs index d5a4b8e..a402ceb 100644 --- a/X10D.Tests/src/Collections/EnumerableTests.DisposeAll.cs +++ b/X10D.Tests/src/Collections/EnumerableTests.DisposeAll.cs @@ -1,4 +1,4 @@ -using Moq; +using NSubstitute; using NUnit.Framework; using X10D.Collections; @@ -12,16 +12,16 @@ public partial class EnumerableTests [Test] public void DisposeAll_ShouldDisposeAllItems_WhenCalledWithValidList() { - var mock1 = new Mock(); - var mock2 = new Mock(); - var mock3 = new Mock(); - var list = new List {mock1.Object, mock2.Object, null!, mock3.Object}; + var substitute1 = Substitute.For(); + var substitute2 = Substitute.For(); + var substitute3 = Substitute.For(); + var list = new List { substitute1, substitute2, null!, substitute3 }; list.DisposeAll(); - mock1.Verify(i => i.Dispose(), Times.Once); - mock2.Verify(i => i.Dispose(), Times.Once); - mock3.Verify(i => i.Dispose(), Times.Once); + substitute1.Received(1).Dispose(); + substitute2.Received(1).Dispose(); + substitute3.Received(1).Dispose(); } [Test] diff --git a/X10D.Tests/src/Collections/EnumerableTests.DisposeAllAsync.cs b/X10D.Tests/src/Collections/EnumerableTests.DisposeAllAsync.cs index 867006e..1510338 100644 --- a/X10D.Tests/src/Collections/EnumerableTests.DisposeAllAsync.cs +++ b/X10D.Tests/src/Collections/EnumerableTests.DisposeAllAsync.cs @@ -1,4 +1,4 @@ -using Moq; +using NSubstitute; using NUnit.Framework; using X10D.Collections; @@ -12,16 +12,16 @@ public partial class EnumerableTests [Test] public async Task DisposeAllAsync_ShouldDisposeAllItems_WhenCalledWithValidList() { - var mock1 = new Mock(); - var mock2 = new Mock(); - var mock3 = new Mock(); - var list = new List {mock1.Object, mock2.Object, null!, mock3.Object}; + var substitute1 = Substitute.For(); + var substitute2 = Substitute.For(); + var substitute3 = Substitute.For(); + var list = new List { substitute1, substitute2, null!, substitute3 }; await list.DisposeAllAsync().ConfigureAwait(false); - mock1.Verify(i => i.DisposeAsync(), Times.Once); - mock2.Verify(i => i.DisposeAsync(), Times.Once); - mock3.Verify(i => i.DisposeAsync(), Times.Once); + await substitute1.Received(1).DisposeAsync(); + await substitute2.Received(1).DisposeAsync(); + await substitute3.Received(1).DisposeAsync(); } [Test]