New test.
[mono.git] / mcs / class / System / Test / System.Security.Permissions / StorePermissionAttributeTest.cs
1 //
2 // StorePermissionAttributeTest.cs -
3 //      NUnit Test Cases for StorePermissionAttributeTest
4 //
5 // Author:
6 //      Sebastien Pouliot  <sebastien@ximian.com>
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 #if NET_2_0
31
32 using NUnit.Framework;
33 using System;
34 using System.Security;
35 using System.Security.Permissions;
36
37 namespace MonoTests.System.Security.Permissions {
38
39         [TestFixture]
40         public class StorePermissionAttributeTest {
41
42                 [Test]
43                 public void Default ()
44                 {
45                         StorePermissionAttribute a = new StorePermissionAttribute (SecurityAction.Assert);
46                         Assert.IsFalse (a.AddToStore, "AddToStore");
47                         Assert.IsFalse (a.CreateStore, "CreateStore");
48                         Assert.IsFalse (a.DeleteStore, "DeleteStore");
49                         Assert.IsFalse (a.EnumerateCertificates, "EnumerateCertificates");
50                         Assert.IsFalse (a.EnumerateStores, "EnumerateStores");
51                         Assert.IsFalse (a.OpenStore, "OpenStore");
52                         Assert.IsFalse (a.RemoveFromStore, "RemoveFromStore");
53
54                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags");
55                         Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
56
57                         StorePermission perm = (StorePermission)a.CreatePermission ();
58                         Assert.AreEqual (StorePermissionFlags.NoFlags, perm.Flags, "CreatePermission.Flags");
59                 }
60
61                 [Test]
62                 public void Action ()
63                 {
64                         StorePermissionAttribute a = new StorePermissionAttribute (SecurityAction.Assert);
65                         Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
66                         a.Action = SecurityAction.Demand;
67                         Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
68                         a.Action = SecurityAction.Deny;
69                         Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
70                         a.Action = SecurityAction.InheritanceDemand;
71                         Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
72                         a.Action = SecurityAction.LinkDemand;
73                         Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
74                         a.Action = SecurityAction.PermitOnly;
75                         Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
76                         a.Action = SecurityAction.RequestMinimum;
77                         Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
78                         a.Action = SecurityAction.RequestOptional;
79                         Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
80                         a.Action = SecurityAction.RequestRefuse;
81                         Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
82                 }
83
84                 [Test]
85                 public void Action_Invalid ()
86                 {
87                         StorePermissionAttribute a = new StorePermissionAttribute ((SecurityAction)Int32.MinValue);
88                         // no validation in attribute
89                 }
90
91                 private StorePermissionAttribute Empty ()
92                 {
93                         StorePermissionAttribute a = new StorePermissionAttribute (SecurityAction.Assert);
94                         a.AddToStore = false;
95                         a.CreateStore = false;
96                         a.DeleteStore = false;
97                         a.EnumerateCertificates = false;
98                         a.EnumerateStores = false;
99                         a.OpenStore = false;
100                         a.RemoveFromStore = false;
101                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags");
102                         return a;
103                 }
104
105                 [Test]
106                 public void AddToStore ()
107                 {
108                         StorePermissionAttribute a = Empty ();
109                         a.AddToStore = true;
110                         Assert.AreEqual (StorePermissionFlags.AddToStore, a.Flags, "Flags=AddToStore");
111                         a.AddToStore = false;
112                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
113                 }
114
115                 [Test]
116                 public void CreateStore ()
117                 {
118                         StorePermissionAttribute a = Empty ();
119                         a.CreateStore = true;
120                         Assert.AreEqual (StorePermissionFlags.CreateStore, a.Flags, "Flags=CreateStore");
121                         a.CreateStore = false;
122                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
123                 }
124
125                 [Test]
126                 public void DeleteStore ()
127                 {
128                         StorePermissionAttribute a = Empty ();
129                         a.DeleteStore = true;
130                         Assert.AreEqual (StorePermissionFlags.DeleteStore, a.Flags, "Flags=DeleteStore");
131                         a.DeleteStore = false;
132                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
133                 }
134
135                 [Test]
136                 public void EnumerateCertificates ()
137                 {
138                         StorePermissionAttribute a = Empty ();
139                         a.EnumerateCertificates = true;
140                         Assert.AreEqual (StorePermissionFlags.EnumerateCertificates, a.Flags, "Flags=EnumerateCertificates");
141                         a.EnumerateCertificates = false;
142                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
143                 }
144
145                 [Test]
146                 public void EnumerateStores ()
147                 {
148                         StorePermissionAttribute a = Empty ();
149                         a.EnumerateStores = true;
150                         Assert.AreEqual (StorePermissionFlags.EnumerateStores, a.Flags, "Flags=EnumerateStores");
151                         a.EnumerateStores = false;
152                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
153                 }
154
155                 [Test]
156                 public void OpenStore ()
157                 {
158                         StorePermissionAttribute a = Empty ();
159                         a.OpenStore = true;
160                         Assert.AreEqual (StorePermissionFlags.OpenStore, a.Flags, "Flags=OpenStore");
161                         a.OpenStore = false;
162                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
163                 }
164
165                 [Test]
166                 public void RemoveFromStore ()
167                 {
168                         StorePermissionAttribute a = Empty ();
169                         a.RemoveFromStore = true;
170                         Assert.AreEqual (StorePermissionFlags.RemoveFromStore, a.Flags, "Flags=RemoveFromStore");
171                         a.RemoveFromStore = false;
172                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Flags=NoFlags");
173                 }
174
175                 [Test]
176                 public void Unrestricted ()
177                 {
178                         StorePermissionAttribute a = Empty ();
179                         a.Unrestricted = true;
180                         Assert.AreEqual (StorePermissionFlags.NoFlags, a.Flags, "Unrestricted");
181
182                         StorePermission perm = (StorePermission)a.CreatePermission ();
183                         Assert.AreEqual (StorePermissionFlags.AllFlags, perm.Flags, "CreatePermission.Flags");
184                 }
185
186                 [Test]
187                 public void Flags ()
188                 {
189                         StorePermissionAttribute a = Empty ();
190                         a.Flags = StorePermissionFlags.AddToStore;
191                         Assert.IsTrue (a.AddToStore, "AddToStore");
192                         a.Flags |= StorePermissionFlags.CreateStore;
193                         Assert.IsTrue (a.CreateStore, "CreateStore");
194                         a.Flags |= StorePermissionFlags.DeleteStore;
195                         Assert.IsTrue (a.DeleteStore, "DeleteStore");
196                         a.Flags |= StorePermissionFlags.EnumerateCertificates;
197                         Assert.IsTrue (a.EnumerateCertificates, "EnumerateCertificates");
198                         a.Flags |= StorePermissionFlags.EnumerateStores;
199                         Assert.IsTrue (a.EnumerateStores, "EnumerateStores");
200                         a.Flags |= StorePermissionFlags.OpenStore;
201                         Assert.IsTrue (a.OpenStore, "OpenStore");
202                         a.Flags |= StorePermissionFlags.RemoveFromStore;
203                         Assert.IsTrue (a.RemoveFromStore, "RemoveFromStore");
204
205                         Assert.IsFalse (a.Unrestricted, "Unrestricted");
206                         Assert.AreEqual (StorePermissionFlags.AllFlags, a.Flags, "Flags=AllFlags");
207
208                         a.Flags &= ~StorePermissionFlags.AddToStore;
209                         Assert.IsFalse (a.AddToStore, "AddToStore");
210                         a.Flags &= ~StorePermissionFlags.CreateStore;
211                         Assert.IsFalse (a.CreateStore, "CreateStore");
212                         a.Flags &= ~StorePermissionFlags.DeleteStore;
213                         Assert.IsFalse (a.DeleteStore, "DeleteStore");
214                         a.Flags &= ~StorePermissionFlags.EnumerateCertificates;
215                         Assert.IsFalse (a.EnumerateCertificates, "EnumerateCertificates");
216                         a.Flags &= ~StorePermissionFlags.EnumerateStores;
217                         Assert.IsFalse (a.EnumerateStores, "EnumerateStores");
218                         a.Flags &= ~StorePermissionFlags.OpenStore;
219                         Assert.IsFalse (a.OpenStore, "OpenStore");
220                         a.Flags &= ~StorePermissionFlags.RemoveFromStore;
221                         Assert.IsFalse (a.RemoveFromStore, "RemoveFromStore");
222                 }
223
224                 [Test]
225                 [ExpectedException (typeof (ArgumentException))]
226                 public void Flags_Invalid ()
227                 {
228                         StorePermissionAttribute a = Empty ();
229                         a.Flags = ((StorePermissionFlags)Int32.MinValue);
230                 }
231
232                 [Test]
233                 public void Attributes ()
234                 {
235                         Type t = typeof (StorePermissionAttribute);
236                         Assert.IsTrue (t.IsSerializable, "IsSerializable");
237
238                         object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
239                         Assert.AreEqual (1, attrs.Length, "AttributeUsage");
240                         AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
241                         Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
242                         Assert.IsFalse (aua.Inherited, "Inherited");
243                         AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method);
244                         Assert.AreEqual (at, aua.ValidOn, "ValidOn");
245                 }
246         }
247 }
248
249 #endif