XmlSecureResolverTests.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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 MONO_FEATURE_CAS
  49. Assert.AreEqual (0, e.Count, "null");
  50. #else
  51. Assert.IsNull (e);
  52. #endif
  53. e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
  54. #if MONO_FEATURE_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. #pragma warning disable 612
  67. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
  68. #pragma warning restore
  69. bool url = false;
  70. bool zone = false;
  71. IEnumerator en = e.GetHostEnumerator ();
  72. while (en.MoveNext ()) {
  73. if (en.Current is Url)
  74. url = true;
  75. else if (en.Current is Zone)
  76. zone = true;
  77. }
  78. Assert.IsTrue (url, "Url-1");
  79. Assert.IsTrue (zone, "Zone-1");
  80. // file://
  81. e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
  82. #pragma warning disable 612
  83. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
  84. #pragma warning restore
  85. url = false;
  86. zone = false;
  87. en = e.GetHostEnumerator ();
  88. while (en.MoveNext ()) {
  89. if (en.Current is Url)
  90. url = true;
  91. else if (en.Current is Zone)
  92. zone = true;
  93. }
  94. Assert.IsTrue (url, "Url-1");
  95. Assert.IsTrue (zone, "Zone-1");
  96. }
  97. [Test]
  98. [Ignore ("This test doesn't work for referencesource anymore.")]
  99. public void CreateEvidenceForUrl_Http ()
  100. {
  101. // http://
  102. Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
  103. #pragma warning disable 612
  104. Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
  105. #pragma warning restore
  106. bool url = false;
  107. bool zone = false;
  108. bool site = false;
  109. IEnumerator en = e.GetHostEnumerator ();
  110. while (en.MoveNext ()) {
  111. if (en.Current is Url)
  112. url = true;
  113. else if (en.Current is Zone)
  114. zone = true;
  115. else if (en.Current is Site)
  116. site = true;
  117. }
  118. Assert.IsTrue (url, "Url-2");
  119. Assert.IsTrue (zone, "Zone-2");
  120. Assert.IsTrue (site, "Site-2");
  121. }
  122. [Test]
  123. [Category("Async")]
  124. public void TestAsync ()
  125. {
  126. var loc = Assembly.GetExecutingAssembly ().Location;
  127. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc);
  128. var ur = new XmlUrlResolver ();
  129. var sr = new XmlSecureResolver (ur, e);
  130. Uri resolved = sr.ResolveUri (null, loc);
  131. Assert.AreEqual ("file", resolved.Scheme);
  132. var task = sr.GetEntityAsync (resolved, null, typeof (Stream));
  133. Assert.That (task.Wait (3000));
  134. Assert.IsTrue (task.Result is FileStream, "Unexpected type: " + task.Result.GetType());
  135. }
  136. }
  137. }
  138. #endif