XmlSecureResolverTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 MonoTestsXml
  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. Assert.AreEqual (0, e.Count, "null");
  49. e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
  50. Assert.AreEqual (0, e.Count, "String.Empty");
  51. }
  52. [Test]
  53. public void CreateEvidenceForUrl_Local ()
  54. {
  55. // "normal" path
  56. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().Location);
  57. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
  58. bool url = false;
  59. bool zone = false;
  60. IEnumerator en = e.GetHostEnumerator ();
  61. while (en.MoveNext ()) {
  62. if (en.Current is Url)
  63. url = true;
  64. else if (en.Current is Zone)
  65. zone = true;
  66. }
  67. Assert.IsTrue (url, "Url-1");
  68. Assert.IsTrue (zone, "Zone-1");
  69. // file://
  70. e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
  71. Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
  72. url = false;
  73. zone = false;
  74. en = e.GetHostEnumerator ();
  75. while (en.MoveNext ()) {
  76. if (en.Current is Url)
  77. url = true;
  78. else if (en.Current is Zone)
  79. zone = true;
  80. }
  81. Assert.IsTrue (url, "Url-1");
  82. Assert.IsTrue (zone, "Zone-1");
  83. }
  84. [Test]
  85. public void CreateEvidenceForUrl_Http ()
  86. {
  87. // http://
  88. Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
  89. Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
  90. bool url = false;
  91. bool zone = false;
  92. bool site = false;
  93. IEnumerator en = e.GetHostEnumerator ();
  94. while (en.MoveNext ()) {
  95. if (en.Current is Url)
  96. url = true;
  97. else if (en.Current is Zone)
  98. zone = true;
  99. else if (en.Current is Site)
  100. site = true;
  101. }
  102. Assert.IsTrue (url, "Url-2");
  103. Assert.IsTrue (zone, "Zone-2");
  104. Assert.IsTrue (site, "Site-2");
  105. }
  106. #if NET_4_5
  107. [Test]
  108. [Category("Async")]
  109. public void TestAsync ()
  110. {
  111. var loc = Assembly.GetExecutingAssembly ().Location;
  112. Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc);
  113. var ur = new XmlUrlResolver ();
  114. var sr = new XmlSecureResolver (ur, e);
  115. Uri resolved = sr.ResolveUri (null, loc);
  116. Assert.AreEqual ("file", resolved.Scheme);
  117. var task = sr.GetEntityAsync (resolved, null, typeof (Stream));
  118. Assert.That (task.Wait (3000));
  119. Assert.IsInstanceOfType (typeof (Stream), task.Result);
  120. }
  121. #endif
  122. }
  123. }
  124. #endif