2 // PermissionRequestEvidenceTest.cs -
3 // NUnit Test Cases for PermissionRequestEvidence
6 // Nick Drochak (ndrochak@gol.com)
7 // Sebastien Pouliot <sebastien@ximian.com>
9 // (C) 2004 Nick Drochak
10 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using NUnit.Framework;
34 using System.Security;
35 using System.Security.Permissions;
36 using System.Security.Policy;
38 namespace MonoTests.System.Security.Policy {
41 public class PermissionRequestEvidenceTest {
43 private string AdjustNewLine (string s)
45 // no spaces are used in Fx 2.0
46 while (s.IndexOf ("\r\n ") != -1)
47 s = s.Replace ("\r\n ", "\r\n");
48 if (Environment.NewLine != "\r\n")
49 s = s.Replace ("\r\n", Environment.NewLine);
54 public void NullConstructor ()
56 PermissionRequestEvidence pre = new PermissionRequestEvidence (null, null, null);
57 Assert.IsNull (pre.RequestedPermissions, "Requested");
58 Assert.IsNull (pre.OptionalPermissions, "Optional");
59 Assert.IsNull (pre.DeniedPermissions, "Denied");
60 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\"/>\r\n");
61 Assert.AreEqual (expected, pre.ToString (), "ToString");
65 public void Constructor1 ()
67 PermissionSet ps = new PermissionSet (PermissionState.None);
68 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps, ps, ps);
69 Assert.IsFalse (pre.RequestedPermissions.IsUnrestricted (), "Requested");
70 Assert.IsFalse (pre.OptionalPermissions.IsUnrestricted (), "Optional");
71 Assert.IsFalse (pre.DeniedPermissions.IsUnrestricted (), "Denied");
72 Assert.IsFalse (Object.ReferenceEquals (ps, pre.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
73 Assert.IsFalse (Object.ReferenceEquals (ps, pre.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
74 Assert.IsFalse (Object.ReferenceEquals (ps, pre.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
75 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n <Request>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Request>\r\n <Optional>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Optional>\r\n <Denied>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
76 Assert.AreEqual (expected, pre.ToString (), "ToString");
80 public void Constructor2 ()
82 PermissionSet ps = new PermissionSet (PermissionState.Unrestricted);
83 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps, ps, ps);
84 Assert.IsTrue (pre.RequestedPermissions.IsUnrestricted (), "Requested");
85 Assert.IsTrue (pre.OptionalPermissions.IsUnrestricted (), "Optional");
86 Assert.IsTrue (pre.DeniedPermissions.IsUnrestricted (), "Denied");
87 Assert.IsFalse (Object.ReferenceEquals (ps, pre.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
88 Assert.IsFalse (Object.ReferenceEquals (ps, pre.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
89 Assert.IsFalse (Object.ReferenceEquals (ps, pre.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
90 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n <Request>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Request>\r\n <Optional>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Optional>\r\n <Denied>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
91 Assert.AreEqual (expected, pre.ToString (), "ToString");
95 public void Constructor3 ()
97 PermissionSet ps1 = new PermissionSet (PermissionState.None);
98 PermissionSet ps2 = new PermissionSet (PermissionState.Unrestricted);
99 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps1, ps2, ps1);
100 Assert.IsFalse (pre.RequestedPermissions.IsUnrestricted (), "Requested");
101 Assert.IsTrue (pre.OptionalPermissions.IsUnrestricted (), "Optional");
102 Assert.IsFalse (pre.DeniedPermissions.IsUnrestricted (), "Denied");
103 Assert.IsFalse (Object.ReferenceEquals (ps1, pre.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
104 Assert.IsFalse (Object.ReferenceEquals (ps2, pre.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
105 Assert.IsFalse (Object.ReferenceEquals (ps1, pre.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
106 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n <Request>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Request>\r\n <Optional>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Optional>\r\n <Denied>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
107 Assert.AreEqual (expected, pre.ToString (), "ToString");
111 public void Constructor4 ()
113 PermissionSet ps1 = new PermissionSet (PermissionState.None);
114 PermissionSet ps2 = new PermissionSet (PermissionState.Unrestricted);
115 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps2, ps1, ps2);
116 Assert.IsTrue (pre.RequestedPermissions.IsUnrestricted (), "Requested");
117 Assert.IsFalse (pre.OptionalPermissions.IsUnrestricted (), "Optional");
118 Assert.IsTrue (pre.DeniedPermissions.IsUnrestricted (), "Denied");
119 Assert.IsFalse (Object.ReferenceEquals (ps2, pre.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
120 Assert.IsFalse (Object.ReferenceEquals (ps1, pre.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
121 Assert.IsFalse (Object.ReferenceEquals (ps2, pre.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
122 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n <Request>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Request>\r\n <Optional>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Optional>\r\n <Denied>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
123 Assert.AreEqual (expected, pre.ToString (), "ToString");
129 PermissionSet ps1 = new PermissionSet (PermissionState.None);
130 PermissionSet ps2 = new PermissionSet (PermissionState.Unrestricted);
131 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps2, ps1, ps2);
132 PermissionRequestEvidence copy = pre.Copy ();
133 Assert.IsFalse (Object.ReferenceEquals (pre, copy), "!ReferenceEquals");
134 Assert.IsTrue (copy.RequestedPermissions.IsUnrestricted (), "Requested");
135 Assert.IsFalse (copy.OptionalPermissions.IsUnrestricted (), "Optional");
136 Assert.IsTrue (copy.DeniedPermissions.IsUnrestricted (), "Denied");
137 Assert.IsFalse (Object.ReferenceEquals (ps2, copy.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
138 Assert.IsFalse (Object.ReferenceEquals (ps1, copy.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
139 Assert.IsFalse (Object.ReferenceEquals (ps2, copy.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
140 Assert.IsFalse (Object.ReferenceEquals (pre.RequestedPermissions, copy.RequestedPermissions), "!ReferenceEquals-Copy-RequestedPermissions");
141 Assert.IsFalse (Object.ReferenceEquals (pre.OptionalPermissions, copy.OptionalPermissions), "!ReferenceEquals-Copy-OptionalPermissions");
142 Assert.IsFalse (Object.ReferenceEquals (pre.DeniedPermissions, copy.DeniedPermissions), "!ReferenceEquals-Copy-DeniedPermissions");
143 string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n <Request>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Request>\r\n <Optional>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"/>\r\n </Optional>\r\n <Denied>\r\n <PermissionSet class=\"System.Security.PermissionSet\"\r\n version=\"1\"\r\n Unrestricted=\"true\"/>\r\n </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
144 Assert.AreEqual (expected, pre.ToString (), "ToString");
145 Assert.AreEqual (pre.ToString (), copy.ToString (), "ToString-Copy");
149 public void CopiesButNotReadOnly ()
151 PermissionSet ps = new PermissionSet (PermissionState.None);
152 PermissionRequestEvidence pre = new PermissionRequestEvidence (ps, ps, ps);
153 ps.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
154 Assert.AreEqual (1, ps.Count, "ps.Count");
156 Assert.AreEqual (0, pre.RequestedPermissions.Count, "Requested.Count");
157 Assert.AreEqual (0, pre.OptionalPermissions.Count, "Optional.Count");
158 Assert.AreEqual (0, pre.DeniedPermissions.Count, "Denied.Count");
159 // and we can still add permissions
160 pre.RequestedPermissions.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
161 Assert.AreEqual (1, pre.RequestedPermissions.Count, "Requested.Count-2");
162 Assert.AreEqual (0, pre.OptionalPermissions.Count, "Optional.Count-2");
163 Assert.AreEqual (0, pre.DeniedPermissions.Count, "Denied.Count-2");