[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / corlib / Test / System.Security.Policy / PermissionRequestEvidenceTest.cs
1 //
2 // PermissionRequestEvidenceTest.cs -
3 //      NUnit Test Cases for PermissionRequestEvidence
4 //
5 // Authors:
6 //      Nick Drochak (ndrochak@gol.com)
7 //      Sebastien Pouliot  <sebastien@ximian.com>
8 //
9 // (C) 2004 Nick Drochak
10 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 //
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:
19 // 
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 // 
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.
30 //
31
32 using NUnit.Framework;
33 using System;
34 using System.Security;
35 using System.Security.Permissions;
36 using System.Security.Policy;
37
38 namespace MonoTests.System.Security.Policy {
39
40         [TestFixture]
41         public class PermissionRequestEvidenceTest {
42
43                 private string AdjustNewLine (string s) 
44                 {
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);
50                         return s;
51                 }
52
53                 [Test]
54                 public void NullConstructor ()
55                 {
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");
62                 }
63
64                 [Test]
65                 public void Constructor1 () 
66                 {
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");
77                 }
78
79                 [Test]
80                 public void Constructor2 () 
81                 {
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");
92                 }
93
94                 [Test]
95                 public void Constructor3 () 
96                 {
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");
108                 }
109
110                 [Test]
111                 public void Constructor4 () 
112                 {
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");
124                 }
125
126                 [Test]
127                 public void Copy () 
128                 {
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");
146                 }
147
148                 [Test]
149                 public void CopiesButNotReadOnly ()
150                 {
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");
155                         // not a reference
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");
164                 }
165         }
166 }