@@ -14,6 +14,37 @@ namespace NuGet.Server.Core.Tests
1414{
1515 public class JsonNetPackagesSerializerTests
1616 {
17+ [ Fact ]
18+ public void RoundTripsUncPaths ( )
19+ {
20+ var originalPackages = GenerateServerPackages ( 1 ) ;
21+ var originalPackage = originalPackages . Single ( ) ;
22+ originalPackage . IconUrl = new Uri ( "//testunc/test/a" , UriKind . Absolute ) ;
23+ originalPackage . LicenseUrl = new Uri ( "//testunc/test/b" , UriKind . Absolute ) ;
24+ originalPackage . ProjectUrl = new Uri ( "//testunc/test/c" , UriKind . Absolute ) ;
25+ originalPackage . ReportAbuseUrl = new Uri ( "//testunc/test/d" , UriKind . Absolute ) ;
26+ var serializer = new JsonNetPackagesSerializer ( ) ;
27+
28+ // Act
29+ var deserializedPackages = new List < ServerPackage > ( ) ;
30+ using ( var memoryStream = new MemoryStream ( ) )
31+ {
32+ serializer . Serialize ( originalPackages , memoryStream ) ;
33+
34+ memoryStream . Position = 0 ;
35+
36+ deserializedPackages . AddRange ( serializer . Deserialize ( memoryStream ) ) ;
37+ }
38+
39+ // Assert
40+ AssertPackagesAreEqual ( originalPackages , deserializedPackages ) ;
41+ var deserializedPackage = deserializedPackages . Single ( ) ;
42+ Assert . True ( deserializedPackage . IconUrl . IsAbsoluteUri , "The icon URL should still be absolute." ) ;
43+ Assert . True ( deserializedPackage . LicenseUrl . IsAbsoluteUri , "The license URL should still be absolute." ) ;
44+ Assert . True ( deserializedPackage . ProjectUrl . IsAbsoluteUri , "The project URL should still be absolute." ) ;
45+ Assert . True ( deserializedPackage . ReportAbuseUrl . IsAbsoluteUri , "The report abuse URL should still be absolute." ) ;
46+ }
47+
1748 [ Fact ]
1849 public void TestSerializationRoundTrip ( )
1950 {
@@ -33,14 +64,25 @@ public void TestSerializationRoundTrip()
3364 }
3465
3566 // Assert
67+ AssertPackagesAreEqual ( originalPackages , deserializedPackages ) ;
68+ }
69+
70+ private static void AssertPackagesAreEqual ( List < ServerPackage > originalPackages , List < ServerPackage > deserializedPackages )
71+ {
3672 Assert . Equal ( originalPackages . Count , deserializedPackages . Count ) ;
3773 for ( var i = 0 ; i < originalPackages . Count ; i ++ )
3874 {
39- Assert . True ( PublicPropertiesEqual ( originalPackages [ i ] , deserializedPackages [ i ] , "DependencySets" , "FrameworkAssemblies" , "PackageAssemblyReferences" , "AssemblyReferences" ) ) ;
75+ AssertPublicPropertiesEqual (
76+ originalPackages [ i ] ,
77+ deserializedPackages [ i ] ,
78+ "DependencySets" ,
79+ "FrameworkAssemblies" ,
80+ "PackageAssemblyReferences" ,
81+ "AssemblyReferences" ) ;
4082 }
4183 }
4284
43- private static bool PublicPropertiesEqual < T > ( T a , T b , params string [ ] ignoreProperties ) where T : class
85+ private static void AssertPublicPropertiesEqual < T > ( T a , T b , params string [ ] ignoreProperties ) where T : class
4486 {
4587 if ( a != null && b != null )
4688 {
@@ -55,15 +97,15 @@ private static bool PublicPropertiesEqual<T>(T a, T b, params string[] ignorePro
5597
5698 if ( selfValue != toValue && ( selfValue == null || ! selfValue . Equals ( toValue ) ) && ! ( selfValue is IEnumerable ) )
5799 {
58- return false ;
100+ Assert . False ( true , $ "The property ' { pi . Name } ' is not equal." ) ;
59101 }
60102 }
61103 }
62104
63- return true ;
105+ return ;
64106 }
65107
66- return a == b ;
108+ Assert . Equal ( a , b ) ;
67109 }
68110
69111 private static List < ServerPackage > GenerateServerPackages ( int count )
0 commit comments