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
)
46 // no spaces are used in Fx 2.0
47 while (s
.IndexOf ("\r\n ") != -1)
48 s
= s
.Replace ("\r\n ", "\r\n");
50 if (Environment
.NewLine
!= "\r\n")
51 s
= s
.Replace ("\r\n", Environment
.NewLine
);
56 public void NullConstructor ()
58 PermissionRequestEvidence pre
= new PermissionRequestEvidence (null, null, null);
59 Assert
.IsNull (pre
.RequestedPermissions
, "Requested");
60 Assert
.IsNull (pre
.OptionalPermissions
, "Optional");
61 Assert
.IsNull (pre
.DeniedPermissions
, "Denied");
62 string expected
= AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\"/>\r\n");
63 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
67 public void Constructor1 ()
69 PermissionSet ps
= new PermissionSet (PermissionState
.None
);
70 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps
, ps
, ps
);
71 Assert
.IsFalse (pre
.RequestedPermissions
.IsUnrestricted (), "Requested");
72 Assert
.IsFalse (pre
.OptionalPermissions
.IsUnrestricted (), "Optional");
73 Assert
.IsFalse (pre
.DeniedPermissions
.IsUnrestricted (), "Denied");
74 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.RequestedPermissions
), "!ReferenceEquals-RequestedPermissions");
75 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.OptionalPermissions
), "!ReferenceEquals-OptionalPermissions");
76 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.DeniedPermissions
), "!ReferenceEquals-DeniedPermissions");
77 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");
78 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
82 public void Constructor2 ()
84 PermissionSet ps
= new PermissionSet (PermissionState
.Unrestricted
);
85 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps
, ps
, ps
);
86 Assert
.IsTrue (pre
.RequestedPermissions
.IsUnrestricted (), "Requested");
87 Assert
.IsTrue (pre
.OptionalPermissions
.IsUnrestricted (), "Optional");
88 Assert
.IsTrue (pre
.DeniedPermissions
.IsUnrestricted (), "Denied");
89 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.RequestedPermissions
), "!ReferenceEquals-RequestedPermissions");
90 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.OptionalPermissions
), "!ReferenceEquals-OptionalPermissions");
91 Assert
.IsFalse (Object
.ReferenceEquals (ps
, pre
.DeniedPermissions
), "!ReferenceEquals-DeniedPermissions");
92 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");
93 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
97 public void Constructor3 ()
99 PermissionSet ps1
= new PermissionSet (PermissionState
.None
);
100 PermissionSet ps2
= new PermissionSet (PermissionState
.Unrestricted
);
101 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps1
, ps2
, ps1
);
102 Assert
.IsFalse (pre
.RequestedPermissions
.IsUnrestricted (), "Requested");
103 Assert
.IsTrue (pre
.OptionalPermissions
.IsUnrestricted (), "Optional");
104 Assert
.IsFalse (pre
.DeniedPermissions
.IsUnrestricted (), "Denied");
105 Assert
.IsFalse (Object
.ReferenceEquals (ps1
, pre
.RequestedPermissions
), "!ReferenceEquals-RequestedPermissions");
106 Assert
.IsFalse (Object
.ReferenceEquals (ps2
, pre
.OptionalPermissions
), "!ReferenceEquals-OptionalPermissions");
107 Assert
.IsFalse (Object
.ReferenceEquals (ps1
, pre
.DeniedPermissions
), "!ReferenceEquals-DeniedPermissions");
108 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");
109 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
113 public void Constructor4 ()
115 PermissionSet ps1
= new PermissionSet (PermissionState
.None
);
116 PermissionSet ps2
= new PermissionSet (PermissionState
.Unrestricted
);
117 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps2
, ps1
, ps2
);
118 Assert
.IsTrue (pre
.RequestedPermissions
.IsUnrestricted (), "Requested");
119 Assert
.IsFalse (pre
.OptionalPermissions
.IsUnrestricted (), "Optional");
120 Assert
.IsTrue (pre
.DeniedPermissions
.IsUnrestricted (), "Denied");
121 Assert
.IsFalse (Object
.ReferenceEquals (ps2
, pre
.RequestedPermissions
), "!ReferenceEquals-RequestedPermissions");
122 Assert
.IsFalse (Object
.ReferenceEquals (ps1
, pre
.OptionalPermissions
), "!ReferenceEquals-OptionalPermissions");
123 Assert
.IsFalse (Object
.ReferenceEquals (ps2
, pre
.DeniedPermissions
), "!ReferenceEquals-DeniedPermissions");
124 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");
125 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
131 PermissionSet ps1
= new PermissionSet (PermissionState
.None
);
132 PermissionSet ps2
= new PermissionSet (PermissionState
.Unrestricted
);
133 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps2
, ps1
, ps2
);
134 PermissionRequestEvidence copy
= pre
.Copy ();
135 Assert
.IsFalse (Object
.ReferenceEquals (pre
, copy
), "!ReferenceEquals");
136 Assert
.IsTrue (copy
.RequestedPermissions
.IsUnrestricted (), "Requested");
137 Assert
.IsFalse (copy
.OptionalPermissions
.IsUnrestricted (), "Optional");
138 Assert
.IsTrue (copy
.DeniedPermissions
.IsUnrestricted (), "Denied");
139 Assert
.IsFalse (Object
.ReferenceEquals (ps2
, copy
.RequestedPermissions
), "!ReferenceEquals-RequestedPermissions");
140 Assert
.IsFalse (Object
.ReferenceEquals (ps1
, copy
.OptionalPermissions
), "!ReferenceEquals-OptionalPermissions");
141 Assert
.IsFalse (Object
.ReferenceEquals (ps2
, copy
.DeniedPermissions
), "!ReferenceEquals-DeniedPermissions");
142 Assert
.IsFalse (Object
.ReferenceEquals (pre
.RequestedPermissions
, copy
.RequestedPermissions
), "!ReferenceEquals-Copy-RequestedPermissions");
143 Assert
.IsFalse (Object
.ReferenceEquals (pre
.OptionalPermissions
, copy
.OptionalPermissions
), "!ReferenceEquals-Copy-OptionalPermissions");
144 Assert
.IsFalse (Object
.ReferenceEquals (pre
.DeniedPermissions
, copy
.DeniedPermissions
), "!ReferenceEquals-Copy-DeniedPermissions");
145 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");
146 Assert
.AreEqual (expected
, pre
.ToString (), "ToString");
147 Assert
.AreEqual (pre
.ToString (), copy
.ToString (), "ToString-Copy");
151 public void CopiesButNotReadOnly ()
153 PermissionSet ps
= new PermissionSet (PermissionState
.None
);
154 PermissionRequestEvidence pre
= new PermissionRequestEvidence (ps
, ps
, ps
);
155 ps
.AddPermission (new SecurityPermission (SecurityPermissionFlag
.Execution
));
156 Assert
.AreEqual (1, ps
.Count
, "ps.Count");
158 Assert
.AreEqual (0, pre
.RequestedPermissions
.Count
, "Requested.Count");
159 Assert
.AreEqual (0, pre
.OptionalPermissions
.Count
, "Optional.Count");
160 Assert
.AreEqual (0, pre
.DeniedPermissions
.Count
, "Denied.Count");
161 // and we can still add permissions
162 pre
.RequestedPermissions
.AddPermission (new SecurityPermission (SecurityPermissionFlag
.Execution
));
163 Assert
.AreEqual (1, pre
.RequestedPermissions
.Count
, "Requested.Count-2");
164 Assert
.AreEqual (0, pre
.OptionalPermissions
.Count
, "Optional.Count-2");
165 Assert
.AreEqual (0, pre
.DeniedPermissions
.Count
, "Denied.Count-2");