|
4 | 4 | using System; |
5 | 5 | using System.Collections.Generic; |
6 | 6 | using System.IO; |
| 7 | +using System.IO.Compression; |
7 | 8 | using System.Linq; |
8 | 9 | using System.Threading; |
9 | 10 | using System.Threading.Tasks; |
@@ -376,6 +377,69 @@ public async Task AggregatesWarnings() |
376 | 377 | Assert.Equal(2, result.Warnings.Count()); |
377 | 378 | } |
378 | 379 |
|
| 380 | + [Theory] |
| 381 | + [InlineData(true)] |
| 382 | + [InlineData(false)] |
| 383 | + public async Task WithTooManyPackageEntries_WhenRejectPackagesWithTooManyPackageEntriesIsFalse_AcceptsPackage(bool isSigned) |
| 384 | + { |
| 385 | + var desiredTotalEntryCount = isSigned ? ushort.MaxValue : ushort.MaxValue - 1; |
| 386 | + |
| 387 | + _nuGetPackage = GeneratePackage(isSigned: isSigned, desiredTotalEntryCount: desiredTotalEntryCount); |
| 388 | + _config |
| 389 | + .Setup(x => x.RejectPackagesWithTooManyPackageEntries) |
| 390 | + .Returns(false); |
| 391 | + |
| 392 | + var result = await _target.ValidateBeforeGeneratePackageAsync( |
| 393 | + _nuGetPackage.Object, |
| 394 | + GetPackageMetadata(_nuGetPackage)); |
| 395 | + |
| 396 | + Assert.Equal(PackageValidationResultType.Accepted, result.Type); |
| 397 | + Assert.Null(result.Message); |
| 398 | + Assert.Empty(result.Warnings); |
| 399 | + } |
| 400 | + |
| 401 | + [Theory] |
| 402 | + [InlineData(true)] |
| 403 | + [InlineData(false)] |
| 404 | + public async Task WithTooManyPackageEntries_WhenRejectPackagesWithTooManyPackageEntriesIsTrue_RejectsPackage(bool isSigned) |
| 405 | + { |
| 406 | + var desiredTotalEntryCount = isSigned ? ushort.MaxValue : ushort.MaxValue - 1; |
| 407 | + |
| 408 | + _nuGetPackage = GeneratePackage(isSigned: isSigned, desiredTotalEntryCount: desiredTotalEntryCount); |
| 409 | + _config |
| 410 | + .Setup(x => x.RejectPackagesWithTooManyPackageEntries) |
| 411 | + .Returns(true); |
| 412 | + |
| 413 | + var result = await _target.ValidateBeforeGeneratePackageAsync( |
| 414 | + _nuGetPackage.Object, |
| 415 | + GetPackageMetadata(_nuGetPackage)); |
| 416 | + |
| 417 | + Assert.Equal(PackageValidationResultType.Invalid, result.Type); |
| 418 | + Assert.Equal("The package contains too many files and/or folders.", result.Message); |
| 419 | + Assert.Empty(result.Warnings); |
| 420 | + } |
| 421 | + |
| 422 | + [Theory] |
| 423 | + [InlineData(true)] |
| 424 | + [InlineData(false)] |
| 425 | + public async Task WithNotTooManyPackageEntries_WhenRejectPackagesWithTooManyPackageEntriesIsTrue_AcceptsPackage(bool isSigned) |
| 426 | + { |
| 427 | + var desiredTotalEntryCount = (isSigned ? ushort.MaxValue : ushort.MaxValue - 1) - 1; |
| 428 | + |
| 429 | + _nuGetPackage = GeneratePackage(isSigned: isSigned, desiredTotalEntryCount: desiredTotalEntryCount); |
| 430 | + _config |
| 431 | + .Setup(x => x.RejectPackagesWithTooManyPackageEntries) |
| 432 | + .Returns(true); |
| 433 | + |
| 434 | + var result = await _target.ValidateBeforeGeneratePackageAsync( |
| 435 | + _nuGetPackage.Object, |
| 436 | + GetPackageMetadata(_nuGetPackage)); |
| 437 | + |
| 438 | + Assert.Equal(PackageValidationResultType.Accepted, result.Type); |
| 439 | + Assert.Null(result.Message); |
| 440 | + Assert.Empty(result.Warnings); |
| 441 | + } |
| 442 | + |
379 | 443 | private PackageMetadata GetPackageMetadata(Mock<TestPackageReader> mockPackage) |
380 | 444 | { |
381 | 445 | return PackageMetadata.FromNuspecReader(mockPackage.Object.GetNuspecReader(), strict: true); |
@@ -934,13 +998,18 @@ public FactsBase() |
934 | 998 | _config.Object); |
935 | 999 | } |
936 | 1000 |
|
937 | | - protected static Mock<TestPackageReader> GeneratePackage(string version = "1.2.3-alpha.0", RepositoryMetadata repositoryMetadata = null, bool isSigned = true) |
| 1001 | + protected static Mock<TestPackageReader> GeneratePackage( |
| 1002 | + string version = "1.2.3-alpha.0", |
| 1003 | + RepositoryMetadata repositoryMetadata = null, |
| 1004 | + bool isSigned = true, |
| 1005 | + int? desiredTotalEntryCount = null) |
938 | 1006 | { |
939 | 1007 | return PackageServiceUtility.CreateNuGetPackage( |
940 | 1008 | id: "theId", |
941 | 1009 | version: version, |
942 | 1010 | repositoryMetadata: repositoryMetadata, |
943 | | - isSigned: isSigned); |
| 1011 | + isSigned: isSigned, |
| 1012 | + desiredTotalEntryCount: desiredTotalEntryCount); |
944 | 1013 | } |
945 | 1014 | } |
946 | 1015 | } |
|
0 commit comments