(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / System / Test / System.Diagnostics / EventLogPermissionAttributeTest.cs
bloba4062c037cfa14a791e8c222e6f0aae899dc6d5b
1 //
2 // EventLogPermissionAttributeTest.cs -
3 // NUnit Test Cases for EventLogPermissionAttribute
4 //
5 // Author:
6 // Sebastien Pouliot <sebastien@ximian.com>
7 //
8 // Copyright (C) 2004 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.
30 using NUnit.Framework;
31 using System;
32 using System.Diagnostics;
33 using System.Security;
34 using System.Security.Permissions;
35 using System.Text.RegularExpressions;
37 namespace MonoTests.System.Diagnostics {
39 [TestFixture]
40 public class EventLogPermissionAttributeTest {
42 [Test]
43 public void Default ()
45 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
46 Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
47 Assert.IsFalse (a.Unrestricted, "Unrestricted");
48 Assert.AreEqual (".", a.MachineName, "MachineName");
49 #if NET_2_0
50 Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "PermissionAccess");
51 #else
52 Assert.AreEqual (EventLogPermissionAccess.Browse, a.PermissionAccess, "PermissionAccess");
53 #endif
54 EventLogPermission sp = (EventLogPermission)a.CreatePermission ();
55 Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
58 [Test]
59 public void Action ()
61 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
62 Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
63 a.Action = SecurityAction.Demand;
64 Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
65 a.Action = SecurityAction.Deny;
66 Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
67 a.Action = SecurityAction.InheritanceDemand;
68 Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
69 a.Action = SecurityAction.LinkDemand;
70 Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
71 a.Action = SecurityAction.PermitOnly;
72 Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
73 a.Action = SecurityAction.RequestMinimum;
74 Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
75 a.Action = SecurityAction.RequestOptional;
76 Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
77 a.Action = SecurityAction.RequestRefuse;
78 Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
79 #if NET_2_0
80 a.Action = SecurityAction.DemandChoice;
81 Assert.AreEqual (SecurityAction.DemandChoice, a.Action, "Action=DemandChoice");
82 a.Action = SecurityAction.InheritanceDemandChoice;
83 Assert.AreEqual (SecurityAction.InheritanceDemandChoice, a.Action, "Action=InheritanceDemandChoice");
84 a.Action = SecurityAction.LinkDemandChoice;
85 Assert.AreEqual (SecurityAction.LinkDemandChoice, a.Action, "Action=LinkDemandChoice");
86 #endif
89 [Test]
90 public void Action_Invalid ()
92 EventLogPermissionAttribute a = new EventLogPermissionAttribute ((SecurityAction)Int32.MinValue);
93 // no validation in attribute
96 [Test]
97 public void Unrestricted ()
99 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
100 a.Unrestricted = true;
101 EventLogPermission wp = (EventLogPermission)a.CreatePermission ();
102 Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
104 a.Unrestricted = false;
105 wp = (EventLogPermission)a.CreatePermission ();
106 Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
109 [Test]
110 [ExpectedException (typeof (ArgumentException))]
111 public void MachineName_Null ()
113 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
114 a.MachineName = null;
117 [Test]
118 [ExpectedException (typeof (ArgumentException))]
119 public void MachineName_Empty ()
121 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
122 a.MachineName = String.Empty;
125 [Test]
126 public void MachineName ()
128 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
129 for (int i=0; i < 256; i++) {
130 try {
131 a.MachineName = Convert.ToChar (i).ToString ();
132 Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
134 catch {
135 switch (i) {
136 case 9:
137 case 10:
138 case 11:
139 case 12:
140 case 13:
141 case 32:
142 case 92:
143 case 160:
144 // known invalid chars
145 break;
146 default:
147 Assert.Fail (i.ToString());
148 break;
152 // all first 256 characters seems to be valid
153 // is there other rules ?
156 [Test]
157 public void PermissionAccess ()
159 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
160 a.PermissionAccess = EventLogPermissionAccess.Audit;
161 Assert.AreEqual (EventLogPermissionAccess.Audit, a.PermissionAccess, "Audit");
162 a.PermissionAccess = EventLogPermissionAccess.Browse;
163 Assert.AreEqual (EventLogPermissionAccess.Browse, a.PermissionAccess, "Browse");
164 a.PermissionAccess = EventLogPermissionAccess.Instrument;
165 Assert.AreEqual (EventLogPermissionAccess.Instrument, a.PermissionAccess, "Instrument");
166 a.PermissionAccess = EventLogPermissionAccess.None;
167 Assert.AreEqual (EventLogPermissionAccess.None, a.PermissionAccess, "None");
168 #if NET_2_0
169 a.PermissionAccess = EventLogPermissionAccess.Administer;
170 Assert.AreEqual (EventLogPermissionAccess.Administer, a.PermissionAccess, "Administer");
171 a.PermissionAccess = EventLogPermissionAccess.Write;
172 Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "Write");
173 #endif
176 [Test]
177 public void PermissionAccess_Invalid ()
179 EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
180 a.PermissionAccess = (EventLogPermissionAccess) Int32.MinValue;
181 Assert.AreEqual ((EventLogPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
182 // no exception thrown
185 [Test]
186 public void Attributes ()
188 Type t = typeof (EventLogPermissionAttribute);
189 Assert.IsTrue (t.IsSerializable, "IsSerializable");
191 object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
192 Assert.AreEqual (1, attrs.Length, "AttributeUsage");
193 AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
194 Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
195 Assert.IsFalse (aua.Inherited, "Inherited");
196 AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
197 Assert.AreEqual (at, aua.ValidOn, "ValidOn");