Skip to content

Commit ab99364

Browse files
committed
more tests
1 parent bd8d3b1 commit ab99364

3 files changed

Lines changed: 106 additions & 7 deletions

File tree

src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/Package/Download/PackageDownloadRunner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ await ResolvePackageDownloadVersion(
240240
return (versionToDownload, downloadSourceRepository);
241241
}
242242

243-
private static IReadOnlyList<SourceRepository> GetMappedRepositories(
243+
internal static IReadOnlyList<SourceRepository> GetMappedRepositories(
244244
IReadOnlyList<string> mappedNames,
245245
IReadOnlyList<SourceRepository> allRepos,
246246
string packageId,

test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/Package/Download/PackageDownloadRunnerTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ public async Task RunAsync_WhenSourceMappingMapsToInsecureSource_AndAllowInsecur
636636
exit.Should().Be(PackageDownloadRunner.ExitCodeError);
637637
logger.Verify(
638638
l => l.LogError(expectedError),
639-
Times.AtLeastOnce);
639+
Times.Once);
640640

641641
}
642642

@@ -699,7 +699,7 @@ public async Task RunAsync_WhenSourceMappingEnabled_PackageMapsToNoSource_Fails(
699699
{
700700
// Arrange
701701
using var context = new SimpleTestPathContext();
702-
PackageSource source = new("http://contoso.test/v3/index.json", "Insecure");
702+
PackageSource source = new(context.PackageSource, "source");
703703
context.Settings.AddSource(source.Name, source.SourceUri.OriginalString);
704704
context.Settings.AddPackageSourceMapping(source.Name, "Contoso.Not.*");
705705
var settings = Settings.LoadSettingsGivenConfigPaths([context.Settings.ConfigPath]);
@@ -709,10 +709,10 @@ public async Task RunAsync_WhenSourceMappingEnabled_PackageMapsToNoSource_Fails(
709709
var version = "1.0.0";
710710

711711
string expectedError = string.Format(
712-
CultureInfo.CurrentCulture,
713-
Strings.PackageDownloadCommand_PackageSourceMapping_NoSourcesMapped,
714-
id,
715-
source);
712+
CultureInfo.CurrentCulture,
713+
Strings.PackageDownloadCommand_PackageSourceMapping_NoSourcesMapped,
714+
id,
715+
source);
716716

717717
// arguments
718718
var logger = new Mock<ILoggerWithColor>(MockBehavior.Loose);

test/NuGet.Core.Tests/NuGet.CommandLine.Xplat.Tests/Commands/Package/Download/PackageDownloadRunnerTests.cs

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System.Collections.Generic;
5+
using System.Globalization;
56
using System.IO;
67
using System.Threading;
78
using System.Threading.Tasks;
@@ -200,4 +201,102 @@ public async Task ResolvePackageDownloadVersion_UnlistedPackage_BehavesAsExpecte
200201
foundRepo.Should().BeNull();
201202
}
202203
}
204+
205+
[Theory]
206+
[InlineData("A", "a")]
207+
[InlineData("a", "A")]
208+
[InlineData("SourceA", "sourcea")]
209+
[InlineData("SOURCEA", "sourcea")]
210+
public void GetMappedRepositories_WithVariousSourceCasing_ReturnsOnlyApplicableSources(string sourceNameConfig, string sourceNameMapped)
211+
{
212+
// Arrange
213+
var packageId = "Contoso.Package";
214+
var packageSource = new PackageSource(sourceNameConfig, sourceNameConfig);
215+
var repository = new Mock<SourceRepository>();
216+
repository.Setup(r => r.PackageSource).Returns(packageSource);
217+
var allRepos = new List<SourceRepository> { repository.Object };
218+
var mappedNames = new List<string> { sourceNameMapped };
219+
var logger = new Mock<ILoggerWithColor>(MockBehavior.Loose);
220+
221+
// Act
222+
var result = PackageDownloadRunner.GetMappedRepositories(
223+
mappedNames,
224+
allRepos,
225+
packageId,
226+
logger.Object);
227+
228+
// Assert
229+
result.Should().HaveCount(1);
230+
result[0].PackageSource.Name.Should().Be(sourceNameConfig);
231+
}
232+
233+
[Fact]
234+
public void GetMappedRepositories_WhenSourceMissing_LogsVerbose()
235+
{
236+
// Arrange
237+
var packageId = "Contoso.Package";
238+
239+
var existingRepo = new Mock<SourceRepository>();
240+
existingRepo.Setup(r => r.PackageSource).Returns(new PackageSource("A", "A"));
241+
242+
var allRepos = new List<SourceRepository> { existingRepo.Object };
243+
string mappedName = "MissingSource";
244+
var mappedNames = new List<string> { mappedName };
245+
246+
string captured = "";
247+
var logger = new Mock<ILoggerWithColor>(MockBehavior.Loose);
248+
logger.Setup(l => l.LogVerbose(It.IsAny<string>()))
249+
.Callback<string>(msg => captured += msg);
250+
251+
string expectedLog = string.Format(
252+
CultureInfo.CurrentCulture,
253+
XPlat.Strings.PackageDownloadCommand_PackageSourceMapping_NoSuchSource,
254+
mappedName,
255+
packageId);
256+
257+
// Act
258+
var result = PackageDownloadRunner.GetMappedRepositories(
259+
mappedNames,
260+
allRepos,
261+
packageId,
262+
logger.Object);
263+
264+
// Assert
265+
result.Should().BeEmpty();
266+
captured.Should().Contain(expectedLog);
267+
}
268+
269+
[Fact]
270+
public void GetMappedRepositories_WhenAllMappedSourcesExist_ReturnsAllMatchedRepositories()
271+
{
272+
// Arrange
273+
var packageId = "Contoso.Package";
274+
275+
var packageSourceA = new PackageSource("Source1", "Source1");
276+
var packageSourceB = new PackageSource("Source2", "Source2");
277+
278+
var repoA = new Mock<SourceRepository>();
279+
repoA.Setup(r => r.PackageSource).Returns(packageSourceA);
280+
281+
var repoB = new Mock<SourceRepository>();
282+
repoB.Setup(r => r.PackageSource).Returns(packageSourceB);
283+
284+
var allRepos = new List<SourceRepository> { repoA.Object, repoB.Object };
285+
var mappedNames = new List<string> { "Source1", "source2" };
286+
287+
var logger = new Mock<ILoggerWithColor>(MockBehavior.Loose);
288+
289+
// Act
290+
var result = PackageDownloadRunner.GetMappedRepositories(
291+
mappedNames,
292+
allRepos,
293+
packageId,
294+
logger.Object);
295+
296+
// Assert
297+
Assert.Equal(2, result.Count);
298+
Assert.Equal(packageSourceA.Name, result[0].PackageSource.Name);
299+
Assert.Equal(packageSourceB.Name, result[1].PackageSource.Name);
300+
logger.Verify(l => l.LogVerbose(It.IsAny<string>()), Times.Never);
301+
}
203302
}

0 commit comments

Comments
 (0)