@@ -509,6 +509,55 @@ public async Task WithNotTooManyPackageEntries_WhenRejectPackagesWithTooManyPack
509509 Assert . Empty ( result . Warnings ) ;
510510 }
511511
512+ [ Theory ]
513+ [ InlineData ( "duplicatedFile.txt" , "duplicatedFile.txt" ) ]
514+ [ InlineData ( "./temp/duplicatedFile.txt" , "./temp/duplicatedFile.txt" ) ]
515+ [ InlineData ( "./temp/duplicatedFile.txt" , "./temp\\ duplicatedFile.txt" ) ]
516+ [ InlineData ( "./temp\\ duplicatedFile.txt" , "./temp\\ duplicatedFile.txt" ) ]
517+ [ InlineData ( "duplicatedFile.txt" , "duplicatedFile.TXT" ) ]
518+ [ InlineData ( "./duplicatedFile.txt" , "duplicatedFile.txt" ) ]
519+ [ InlineData ( "./duplicatedFile.txt" , "/duplicatedFile.txt" ) ]
520+ [ InlineData ( "/duplicatedFile.txt" , "duplicatedFile.txt" ) ]
521+ [ InlineData ( ".\\ duplicatedFile.txt" , "./duplicatedFile.txt" ) ]
522+ public async Task WithDuplicatedEntries_ReturnsInvalidPackage ( params string [ ] entryNames )
523+ {
524+ // Arrange
525+ _nuGetPackage = GeneratePackage ( entryNames : entryNames ) ;
526+
527+ // Act
528+ var result = await _target . ValidateBeforeGeneratePackageAsync (
529+ _nuGetPackage . Object ,
530+ GetPackageMetadata ( _nuGetPackage ) ,
531+ _currentUser ) ;
532+
533+ // Assert
534+ Assert . Equal ( PackageValidationResultType . Invalid , result . Type ) ;
535+ Assert . Equal ( "The package contains one or more duplicated files in the same folder." , result . Message . PlainTextMessage ) ;
536+ Assert . Empty ( result . Warnings ) ;
537+ }
538+
539+ [ Theory ]
540+ [ InlineData ( "noDuplicatedFile.txt" , "./temp/noDuplicatedFile.txt" ) ]
541+ [ InlineData ( "./temp1/noDuplicatedFile.txt" , "./temp2/noDuplicatedFile.txt" ) ]
542+ [ InlineData ( "./temp1/noDuplicatedFile.txt" , "./temp1/noDuplicatedFile.css" ) ]
543+ [ InlineData ( "./temp1/noDuplicatedFile.txt" , "./temp1\\ noDuplicatedFile.css" ) ]
544+ public async Task WithNoDuplicatedEntries_ReturnsAcceptedPackage ( params string [ ] entryNames )
545+ {
546+ // Arrange
547+ _nuGetPackage = GeneratePackage ( entryNames : entryNames ) ;
548+
549+ // Act
550+ var result = await _target . ValidateBeforeGeneratePackageAsync (
551+ _nuGetPackage . Object ,
552+ GetPackageMetadata ( _nuGetPackage ) ,
553+ _currentUser ) ;
554+
555+ // Assert
556+ Assert . Equal ( PackageValidationResultType . Accepted , result . Type ) ;
557+ Assert . Null ( result . Message ) ;
558+ Assert . Empty ( result . Warnings ) ;
559+ }
560+
512561 [ Theory ]
513562 [ InlineData ( false , false ) ]
514563 [ InlineData ( true , true ) ]
@@ -2309,6 +2358,7 @@ protected static Mock<TestPackageReader> GeneratePackage(
23092358 RepositoryMetadata repositoryMetadata = null ,
23102359 bool isSigned = true ,
23112360 int ? desiredTotalEntryCount = null ,
2361+ IReadOnlyList < string > entryNames = null ,
23122362 Func < string > getCustomNuspecNodes = null )
23132363 => GeneratePackageWithUserContent (
23142364 version : version ,
@@ -2320,7 +2370,8 @@ protected static Mock<TestPackageReader> GeneratePackage(
23202370 licenseExpression : "MIT" ,
23212371 licenseFilename : null ,
23222372 licenseFileContents : null ,
2323- licenseFileBinaryContents : null ) ;
2373+ licenseFileBinaryContents : null ,
2374+ entryNames : entryNames ) ;
23242375
23252376 protected static Mock < TestPackageReader > GeneratePackageWithUserContent (
23262377 string version = "1.2.3-alpha.0" ,
@@ -2335,7 +2386,8 @@ protected static Mock<TestPackageReader> GeneratePackageWithUserContent(
23352386 string licenseFileContents = null ,
23362387 byte [ ] licenseFileBinaryContents = null ,
23372388 string iconFilename = null ,
2338- byte [ ] iconFileBinaryContents = null )
2389+ byte [ ] iconFileBinaryContents = null ,
2390+ IReadOnlyList < string > entryNames = null )
23392391 {
23402392 var packageStream = GeneratePackageStream (
23412393 version : version ,
@@ -2350,7 +2402,8 @@ protected static Mock<TestPackageReader> GeneratePackageWithUserContent(
23502402 licenseFileContents : licenseFileContents ,
23512403 licenseFileBinaryContents : licenseFileBinaryContents ,
23522404 iconFilename : iconFilename ,
2353- iconFileBinaryContents : iconFileBinaryContents ) ;
2405+ iconFileBinaryContents : iconFileBinaryContents ,
2406+ entryNames : entryNames ) ;
23542407
23552408 return PackageServiceUtility . CreateNuGetPackage ( packageStream ) ;
23562409 }
@@ -2368,7 +2421,8 @@ protected static MemoryStream GeneratePackageStream(
23682421 string licenseFileContents = null ,
23692422 byte [ ] licenseFileBinaryContents = null ,
23702423 string iconFilename = null ,
2371- byte [ ] iconFileBinaryContents = null )
2424+ byte [ ] iconFileBinaryContents = null ,
2425+ IReadOnlyList < string > entryNames = null )
23722426 {
23732427 return PackageServiceUtility . CreateNuGetPackageStream (
23742428 id : PackageId ,
@@ -2383,7 +2437,8 @@ protected static MemoryStream GeneratePackageStream(
23832437 licenseFilename : licenseFilename ,
23842438 licenseFileContents : GetBinaryLicenseFileContents ( licenseFileBinaryContents , licenseFileContents ) ,
23852439 iconFilename : iconFilename ,
2386- iconFileBinaryContents : iconFileBinaryContents ) ;
2440+ iconFileBinaryContents : iconFileBinaryContents ,
2441+ entryNames : entryNames ) ;
23872442 }
23882443
23892444 private static byte [ ] GetBinaryLicenseFileContents ( byte [ ] binaryContents , string stringContents )
0 commit comments