Merge pull request #1304 from slluis/mac-proxy-autoconfig
[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                         Assert.AreEqual (0, e.Count, "null");
55
56                         e = XmlSecureResolver.CreateEvidenceForUrl (String.Empty);
57                         Assert.AreEqual (0, e.Count, "String.Empty");
58                 }
59
60                 [Test]
61                 public void CreateEvidenceForUrl_Local ()
62                 {
63                         // "normal" path
64                         Evidence e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().Location);
65                         Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().Location");
66                         bool url = false;
67                         bool zone = false;
68                         IEnumerator en = e.GetHostEnumerator ();
69                         while (en.MoveNext ()) {
70                                 if (en.Current is Url)
71                                         url = true;
72                                 else if (en.Current is Zone)
73                                         zone = true;
74                         }
75                         Assert.IsTrue (url, "Url-1");
76                         Assert.IsTrue (zone, "Zone-1");
77
78                         // file://
79                         e = XmlSecureResolver.CreateEvidenceForUrl (Assembly.GetExecutingAssembly ().CodeBase);
80                         Assert.AreEqual (2, e.Count, "Assembly.GetExecutingAssembly ().CodeBase");
81                         url = false;
82                         zone = false;
83                         en = e.GetHostEnumerator ();
84                         while (en.MoveNext ()) {
85                                 if (en.Current is Url)
86                                         url = true;
87                                 else if (en.Current is Zone)
88                                         zone = true;
89                         }
90                         Assert.IsTrue (url, "Url-1");
91                         Assert.IsTrue (zone, "Zone-1");
92                 }
93
94                 [Test]
95                 public void CreateEvidenceForUrl_Http ()
96                 {
97                         // http://
98                         Evidence e = XmlSecureResolver.CreateEvidenceForUrl ("http://www.go-mono.com");
99                         Assert.AreEqual (3, e.Count, "http://www.go-mono.com");
100                         bool url = false;
101                         bool zone = false;
102                         bool site = false;
103                         IEnumerator en = e.GetHostEnumerator ();
104                         while (en.MoveNext ()) {
105                                 if (en.Current is Url)
106                                         url = true;
107                                 else if (en.Current is Zone)
108                                         zone = true;
109                                 else if (en.Current is Site)
110                                         site = true;
111                         }
112                         Assert.IsTrue (url, "Url-2");
113                         Assert.IsTrue (zone, "Zone-2");
114                         Assert.IsTrue (site, "Site-2");
115                 }
116
117 #if NET_4_5
118                 [Test]
119                 [Category("Async")]
120                 public void TestAsync ()
121                 {
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);
131                 }
132 #endif
133
134         }
135 }
136
137 #endif