2 // XmlSecureResolverTests.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
14 using System.Collections;
16 using System.Reflection;
17 using System.Security;
18 using System.Security.Policy;
19 using System.Security.Permissions;
21 using NUnit.Framework;
23 namespace MonoTests.System.Xml
26 public class XmlSecureResolverTests
29 public void EmptyCtor ()
31 new XmlSecureResolver (null, (Evidence) null);
35 [ExpectedException (typeof (NullReferenceException))]
36 public void EmptyCtorCannotResolve ()
38 XmlSecureResolver r = new XmlSecureResolver (null, (Evidence)null);
39 r.ResolveUri (null, "http://www.go-mono.com");
43 public void EmptyEvidenceWontMatter ()
45 XmlSecureResolver r = new XmlSecureResolver (new XmlUrlResolver (), (Evidence)null);
46 Uri uri = r.ResolveUri (null, "http://www.go-mono.com");
47 Assert.IsNotNull (uri);
51 public void CreateEvidenceForUrl_Basic ()
53 Evidence e = XmlSecureResolver.CreateEvidenceForUrl (null);
55 Assert.AreEqual (0, e.Count, "null");
60 e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
62 Assert.AreEqual (0, e.Count, "String.Empty");
69 [Ignore ("This test doesn't work for referencesource anymore.")]
70 public void CreateEvidenceForUrl_Local ()
73 Evidence e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().Location);
74 Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
77 IEnumerator en = e.GetHostEnumerator ();
78 while (en.MoveNext ()) {
79 if (en.Current is Url)
81 else if (en.Current is Zone)
84 Assert.IsTrue (url, "Url-1");
85 Assert.IsTrue (zone, "Zone-1");
88 e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
89 Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
92 en = e.GetHostEnumerator ();
93 while (en.MoveNext ()) {
94 if (en.Current is Url)
96 else if (en.Current is Zone)
99 Assert.IsTrue (url, "Url-1");
100 Assert.IsTrue (zone, "Zone-1");
104 [Ignore ("This test doesn't work for referencesource anymore.")]
105 public void CreateEvidenceForUrl_Http ()
108 Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
109 Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
113 IEnumerator en = e.GetHostEnumerator ();
114 while (en.MoveNext ()) {
115 if (en.Current is Url)
117 else if (en.Current is Zone)
119 else if (en.Current is Site)
122 Assert.IsTrue (url, "Url-2");
123 Assert.IsTrue (zone, "Zone-2");
124 Assert.IsTrue (site, "Site-2");
129 public void TestAsync ()
131 var loc = Assembly.GetExecutingAssembly ().Location;
132 Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc);
133 var ur = new XmlUrlResolver ();
134 var sr = new XmlSecureResolver (ur, e);
135 Uri resolved = sr.ResolveUri (null, loc);
136 Assert.AreEqual ("file", resolved.Scheme);
137 var task = sr.GetEntityAsync (resolved, null, typeof (Stream));
138 Assert.That (task.Wait (3000));
139 Assert.IsInstanceOfType (typeof (Stream), task.Result);