|
4 | 4 | using System; |
5 | 5 | using System.Collections.Generic; |
6 | 6 | using System.IO; |
7 | | -using System.IO.Compression; |
8 | 7 | using System.Linq; |
9 | 8 | using System.Threading; |
10 | 9 | using System.Threading.Tasks; |
@@ -441,6 +440,49 @@ public async Task WithNotTooManyPackageEntries_WhenRejectPackagesWithTooManyPack |
441 | 440 | Assert.Empty(result.Warnings); |
442 | 441 | } |
443 | 442 |
|
| 443 | + private static string[] LicenseNodeVariants => new string[] |
| 444 | + { |
| 445 | + "<license/>", |
| 446 | + "<license></license>", |
| 447 | + "<license> </license>", |
| 448 | + "<license>ttt</license>", |
| 449 | + "<license type='file'>fff</license>", |
| 450 | + "<license type='expression'>ee</license>", |
| 451 | + "<license type='foobar'>ttt</license>", |
| 452 | + }; |
| 453 | + |
| 454 | + public static IEnumerable<object[]> RejectsLicensedPackagesWhenConfigured_Input => |
| 455 | + from licenseNode in LicenseNodeVariants |
| 456 | + from rejectLicenseSetting in new[] { false, true } |
| 457 | + select new object[] { licenseNode, rejectLicenseSetting, !rejectLicenseSetting }; |
| 458 | + |
| 459 | + [Theory] |
| 460 | + [MemberData(nameof(RejectsLicensedPackagesWhenConfigured_Input))] |
| 461 | + public async Task RejectsLicensedPackagesWhenConfigured(string licenseNode, bool rejectPackagesWithLicense, bool expectedSuccess) |
| 462 | + { |
| 463 | + _config |
| 464 | + .SetupGet(x => x.RejectPackagesWithLicense) |
| 465 | + .Returns(rejectPackagesWithLicense); |
| 466 | + _nuGetPackage = GeneratePackage(getCustomNuspecNodes: () => licenseNode); |
| 467 | + |
| 468 | + var result = await _target.ValidateBeforeGeneratePackageAsync( |
| 469 | + _nuGetPackage.Object, |
| 470 | + GetPackageMetadata(_nuGetPackage)); |
| 471 | + |
| 472 | + if (expectedSuccess) |
| 473 | + { |
| 474 | + Assert.Equal(PackageValidationResultType.Accepted, result.Type); |
| 475 | + Assert.Null(result.Message); |
| 476 | + Assert.Empty(result.Warnings); |
| 477 | + } |
| 478 | + else |
| 479 | + { |
| 480 | + Assert.Equal(PackageValidationResultType.Invalid, result.Type); |
| 481 | + Assert.Contains("license", result.Message); |
| 482 | + Assert.Empty(result.Warnings); |
| 483 | + } |
| 484 | + } |
| 485 | + |
444 | 486 | private PackageMetadata GetPackageMetadata(Mock<TestPackageReader> mockPackage) |
445 | 487 | { |
446 | 488 | return PackageMetadata.FromNuspecReader(mockPackage.Object.GetNuspecReader(), strict: true); |
@@ -1100,14 +1142,16 @@ protected static Mock<TestPackageReader> GeneratePackage( |
1100 | 1142 | string version = "1.2.3-alpha.0", |
1101 | 1143 | RepositoryMetadata repositoryMetadata = null, |
1102 | 1144 | bool isSigned = true, |
1103 | | - int? desiredTotalEntryCount = null) |
| 1145 | + int? desiredTotalEntryCount = null, |
| 1146 | + Func<string> getCustomNuspecNodes = null) |
1104 | 1147 | { |
1105 | 1148 | return PackageServiceUtility.CreateNuGetPackage( |
1106 | 1149 | id: "theId", |
1107 | 1150 | version: version, |
1108 | 1151 | repositoryMetadata: repositoryMetadata, |
1109 | 1152 | isSigned: isSigned, |
1110 | | - desiredTotalEntryCount: desiredTotalEntryCount); |
| 1153 | + desiredTotalEntryCount: desiredTotalEntryCount, |
| 1154 | + getCustomNuspecNodes: getCustomNuspecNodes); |
1111 | 1155 | } |
1112 | 1156 | } |
1113 | 1157 | } |
|
0 commit comments