XmlSecureResolverTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // XmlSecureResolverTests.cs
  3. //
  4. // Authors:
  5. // Atsushi Enomoto <[email protected]>
  6. // Sebastien Pouliot <[email protected]>
  7. //
  8. // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
  9. //
  10. #if !MOBILE
  11. using System;
  12. using System.Collections;
  13. using System.IO;
  14. using System.Reflection;
  15. using System.Security;
  16. using System.Security.Policy;
  17. using System.Security.Permissions;
  18. using System.Xml;
  19. using NUnit.Framework;
  20. namespace MonoTests.System.Xml
  21. {
  22. [TestFixture]
  23. public class XmlSecureResolverTests
  24. {
  25. [Test]
  26. public void EmptyCtor ()
  27. {
  28. new XmlSecureResolver (null, (Evidence) null);
  29. }
  30. [Test]
  31. [ExpectedException (typeof (NullReferenceException))]
  32. public void EmptyCtorCannotResolve ()
  33. {
  34. XmlSecureResolver r = new XmlSecureResolver (null, (Evidence)null);
  35. r.ResolveUri (null, "http://www.go-mono.com");
  36. }
  37. [Test]
  38. public void EmptyEvidenceWontMatter ()
  39. {
  40. XmlSecureResolver r = new XmlSecureResolver (new XmlUrlResolver (), (Evidence)null);
  41. Uri uri = r.ResolveUri (null, "http://www.go-mono.com");
  42. Assert.IsNotNull (uri);
  43. }
  44. [Test]
  45. public void CreateEvidenceForUrl_Basic ()
  46. {
  47. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (null);
  48. #if FEATURE_MONO_CAS
  49. Assert.AreEqual (0, e.Count, "null");
  50. #else
  51. Assert.IsNull (e);
  52. #endif
  53. e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
  54. #if FEATURE_MONO_CAS
  55. Assert.AreEqual (0, e.Count, "String.Empty");
  56. #else
  57. Assert.IsNull (e);
  58. #endif
  59. }
  60. [Test]
  61. [Ignore ("This test doesn't work for referencesource anymore.")]
  62. public void CreateEvidenceForUrl_Local ()
  63. {
  64. // "normal" path
  65. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().Location);
  66. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
  67. bool url = false;
  68. bool zone = false;
  69. IEnumerator en = e.GetHostEnumerator ();
  70. while (en.MoveNext ()) {
  71. if (en.Current is Url)
  72. url = true;
  73. else if (en.Current is Zone)
  74. zone = true;
  75. }
  76. Assert.IsTrue (url, "Url-1");
  77. Assert.IsTrue (zone, "Zone-1");
  78. // file://
  79. e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
  80. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
  81. url = false;
  82. zone = false;
  83. en = e.GetHostEnumerator ();
  84. while (en.MoveNext ()) {
  85. if (en.Current is Url)
  86. url = true;
  87. else if (en.Current is Zone)
  88. zone = true;
  89. }
  90. Assert.IsTrue (url, "Url-1");
  91. Assert.IsTrue (zone, "Zone-1");
  92. }
  93. [Test]
  94. [Ignore ("This test doesn't work for referencesource anymore.")]
  95. public void CreateEvidenceForUrl_Http ()
  96. {
  97. // http://
  98. Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
  99. Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
  100. bool url = false;
  101. bool zone = false;
  102. bool site = false;
  103. IEnumerator en = e.GetHostEnumerator ();
  104. while (en.MoveNext ()) {
  105. if (en.Current is Url)
  106. url = true;
  107. else if (en.Current is Zone)
  108. zone = true;
  109. else if (en.Current is Site)
  110. site = true;
  111. }
  112. Assert.IsTrue (url, "Url-2");
  113. Assert.IsTrue (zone, "Zone-2");
  114. Assert.IsTrue (site, "Site-2");
  115. }
  116. #if NET_4_5
  117. [Test]
  118. [Category("Async")]
  119. public void TestAsync ()
  120. {
  121. var loc = Assembly.GetExecutingAssembly ().Location;
  122. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc);
  123. var ur = new XmlUrlResolver ();
  124. var sr = new XmlSecureResolver (ur, e);
  125. Uri resolved = sr.ResolveUri (null, loc);
  126. Assert.AreEqual ("file", resolved.Scheme);
  127. var task = sr.GetEntityAsync (resolved, null, typeof (Stream));
  128. Assert.That (task.Wait (3000));
  129. Assert.IsInstanceOfType (typeof (Stream), task.Result);
  130. }
  131. #endif
  132. }
  133. }
  134. #endif