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