2 // ApplicationTrustTest.cs - NUnit tests for ApplicationTrust
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using NUnit.Framework;
34 using System.Runtime.Serialization;
35 using System.Security;
36 using System.Security.Permissions;
37 using System.Security.Policy;
39 namespace MonoTests.System.Security.Policy {
42 public class ApplicationTrustTest {
44 private string AdjustLineEnds (string s)
46 return s.Replace ("\r\n", "\n");
50 public void Constructor_Empty ()
52 ApplicationTrust at = new ApplicationTrust ();
53 Assert.IsNull (at.ApplicationIdentity, "ApplicationIdentity");
54 Assert.AreEqual (PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
55 Assert.AreEqual (String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
56 Assert.IsTrue (at.DefaultGrantSet.PermissionSet.IsEmpty (), "DefaultGrantSet.PermissionSet.IsEmpty");
57 Assert.IsFalse (at.DefaultGrantSet.PermissionSet.IsUnrestricted (), "DefaultGrantSet.PermissionSet.IsUnrestricted");
58 Assert.IsNull (at.ExtraInfo, "ExtraInfo");
\r
59 Assert.IsFalse (at.IsApplicationTrustedToRun, "IsApplicationTrustedToRun");
\r
60 Assert.IsFalse (at.Persist, "Persist");
\r
61 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");
62 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
66 [ExpectedException (typeof (ArgumentNullException))]
67 public void Constructor_Null ()
69 ApplicationTrust at = new ApplicationTrust (null);
73 public void ApplicationIdentity ()
75 ApplicationTrust at = new ApplicationTrust ();
76 at.ApplicationIdentity = new ApplicationIdentity ("Mono Unit Test");
77 Assert.IsNotNull (at.ApplicationIdentity, "not null");
78 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\"\r\nFullName=\"Mono Unit Test, Culture=neutral\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");
79 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
83 [ExpectedException (typeof (ArgumentNullException))]
84 public void ApplicationIdentity_Null ()
86 ApplicationTrust at = new ApplicationTrust ();
87 at.ApplicationIdentity = new ApplicationIdentity ("Mono Unit Test");
88 // once set it cannot be "unset" ...
89 at.ApplicationIdentity = null;
93 public void ApplicationIdentity_Change ()
95 ApplicationTrust at = new ApplicationTrust ();
96 at.ApplicationIdentity = new ApplicationIdentity ("Mono Unit Test");
97 // ... but it can be changed
98 at.ApplicationIdentity = new ApplicationIdentity ("Mono Unit Test Too");
102 public void DefaultGrantSet ()
104 ApplicationTrust at = new ApplicationTrust ();
105 at.DefaultGrantSet = new PolicyStatement (new PermissionSet (PermissionState.Unrestricted));
106 Assert.IsNotNull (at.DefaultGrantSet, "not null");
107 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"\r\nUnrestricted=\"true\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");
108 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
110 at.DefaultGrantSet = null;
111 // returns to defaults
112 Assert.IsNotNull (at.DefaultGrantSet, "null");
113 Assert.AreEqual (PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
114 Assert.AreEqual (String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
115 Assert.IsTrue (at.DefaultGrantSet.PermissionSet.IsEmpty (), "DefaultGrantSet.PermissionSet.IsEmpty");
116 Assert.IsFalse (at.DefaultGrantSet.PermissionSet.IsUnrestricted (), "DefaultGrantSet.PermissionSet.IsUnrestricted");
120 public void ExtraInfo ()
122 ApplicationTrust at = new ApplicationTrust ();
123 at.ExtraInfo = "Mono";
124 Assert.IsNotNull (at.ExtraInfo, "not null");
126 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n<ExtraInfo Data=\"0001000000FFFFFFFF01000000000000000601000000044D6F6E6F0B\"/>\r\n</ApplicationTrust>\r\n");
127 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
130 Assert.IsNull (at.ExtraInfo, "null");
134 [ExpectedException (typeof (SerializationException))]
135 public void ExtraInfo_NotSerializable ()
137 ApplicationTrust at = new ApplicationTrust ();
139 SecurityElement se = at.ToXml ();
143 public void IsApplicationTrustedToRun ()
145 ApplicationTrust at = new ApplicationTrust ();
146 at.IsApplicationTrustedToRun = true;
147 Assert.IsTrue (at.IsApplicationTrustedToRun);
149 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\"\r\nTrustedToRun=\"true\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");
150 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
152 at.IsApplicationTrustedToRun = false;
153 Assert.IsFalse (at.IsApplicationTrustedToRun);
157 public void Persist ()
159 ApplicationTrust at = new ApplicationTrust ();
161 Assert.IsTrue (at.Persist, "true");
163 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\"\r\nPersist=\"true\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");
164 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
167 Assert.IsFalse (at.Persist, "false");
171 public void ToFromXmlRoundtrip ()
173 ApplicationTrust at = new ApplicationTrust ();
174 at.ApplicationIdentity = new ApplicationIdentity ("Mono Unit Test");
175 at.DefaultGrantSet = new PolicyStatement (new PermissionSet (PermissionState.Unrestricted));
176 at.ExtraInfo = "Mono";
177 at.IsApplicationTrustedToRun = true;
180 SecurityElement se = at.ToXml ();
181 string expected = AdjustLineEnds ("<ApplicationTrust version=\"1\"\r\nFullName=\"Mono Unit Test, Culture=neutral\"\r\nTrustedToRun=\"true\"\r\nPersist=\"true\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"\r\nUnrestricted=\"true\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n<ExtraInfo Data=\"0001000000FFFFFFFF01000000000000000601000000044D6F6E6F0B\"/>\r\n</ApplicationTrust>\r\n");
182 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "XML");
184 ApplicationTrust copy = new ApplicationTrust ();
187 Assert.AreEqual (expected, AdjustLineEnds (at.ToXml ().ToString ()), "Copy");
191 [ExpectedException (typeof (ArgumentNullException))]
192 public void FromXml_Null ()
194 ApplicationTrust at = new ApplicationTrust ();
199 [ExpectedException (typeof (ArgumentException))]
\r
200 public void FromXml_InvalidTag ()
\r
202 ApplicationTrust at = new ApplicationTrust ();
\r
203 SecurityElement se = at.ToXml ();
\r
204 se.Tag = "MonoTrust";
\r
209 public void FromXml_InvalidVersion ()
\r
211 ApplicationTrust at = new ApplicationTrust ();
\r
212 SecurityElement se = at.ToXml ();
\r
214 SecurityElement w = new SecurityElement (se.Tag);
\r
215 w.AddAttribute ("version", "2");
\r
216 foreach (SecurityElement child in se.Children)
\r
217 w.AddChild (child);
\r
223 public void FromXml_NoVersion ()
\r
225 ApplicationTrust at = new ApplicationTrust ();
\r
226 SecurityElement se = at.ToXml ();
\r
228 SecurityElement w = new SecurityElement (se.Tag);
\r
229 foreach (SecurityElement child in se.Children)
\r
230 w.AddChild (child);
\r
236 public void FromXml_NoChild ()
\r
238 ApplicationTrust at = new ApplicationTrust ();
\r
239 SecurityElement se = at.ToXml ();
\r
241 SecurityElement w = new SecurityElement (se.Tag);
\r
242 w.AddAttribute ("version", "1");
\r
246 Assert.IsNull (at.ApplicationIdentity, "ApplicationIdentity");
\r
247 Assert.AreEqual (PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
\r
248 Assert.AreEqual (String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
\r
249 Assert.IsTrue (at.DefaultGrantSet.PermissionSet.IsEmpty (), "DefaultGrantSet.PermissionSet.IsEmpty");
\r
250 Assert.IsFalse (at.DefaultGrantSet.PermissionSet.IsUnrestricted (), "DefaultGrantSet.PermissionSet.IsUnrestricted");
\r
251 Assert.IsNull (at.ExtraInfo, "ExtraInfo");
\r
252 Assert.IsFalse (at.IsApplicationTrustedToRun, "IsApplicationTrustedToRun");
\r
253 Assert.IsFalse (at.Persist, "Persist");
\r