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);
54 Assert.AreEqual (0, e.Count, "null");
56 e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
57 Assert.AreEqual (0, e.Count, "String.Empty");
61 public void CreateEvidenceForUrl_Local ()
64 Evidence e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().Location);
65 Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
68 IEnumerator en = e.GetHostEnumerator ();
69 while (en.MoveNext ()) {
70 if (en.Current is Url)
72 else if (en.Current is Zone)
75 Assert.IsTrue (url, "Url-1");
76 Assert.IsTrue (zone, "Zone-1");
79 e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
80 Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
83 en = e.GetHostEnumerator ();
84 while (en.MoveNext ()) {
85 if (en.Current is Url)
87 else if (en.Current is Zone)
90 Assert.IsTrue (url, "Url-1");
91 Assert.IsTrue (zone, "Zone-1");
95 public void CreateEvidenceForUrl_Http ()
98 Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
99 Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
103 IEnumerator en = e.GetHostEnumerator ();
104 while (en.MoveNext ()) {
105 if (en.Current is Url)
107 else if (en.Current is Zone)
109 else if (en.Current is Site)
112 Assert.IsTrue (url, "Url-2");
113 Assert.IsTrue (zone, "Zone-2");
114 Assert.IsTrue (site, "Site-2");
120 public void TestAsync ()
122 var loc = Assembly.GetExecutingAssembly ().Location;
123 Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc);
124 var ur = new XmlUrlResolver ();
125 var sr = new XmlSecureResolver (ur, e);
126 Uri resolved = sr.ResolveUri (null, loc);
127 Assert.AreEqual ("file", resolved.Scheme);
128 var task = sr.GetEntityAsync (resolved, null, typeof (Stream));
129 Assert.That (task.Wait (3000));
130 Assert.IsInstanceOfType (typeof (Stream), task.Result);