File: ObjectSecurity_TTest.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (103 lines) | stat: -rw-r--r-- 3,048 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// ObjectSecurity_TTest.cs - NUnit Test Cases for ObjectSecurity<T>
//
// Authors:
//	James Bellinger (jfb@zer7.com)


using System;
using System.Security.AccessControl;
using System.Security.Principal;
using NUnit.Framework;

namespace MonoTests.System.Security.AccessControl
{
	[TestFixture]
	public class ObjectSecurity_TTest
	{
		enum WillWorkRights
		{
			Value = 1
		}

		class WillWorkSecurity : ObjectSecurity<WillWorkRights>
		{
			public WillWorkSecurity ()
				: base (false, ResourceType.Unknown)
			{

			}
		}

		struct WillFailRights
		{

		}

		class WillFailSecurity : ObjectSecurity<WillFailRights>
		{
			public WillFailSecurity ()
				: base (false, ResourceType.Unknown)
			{

			}
		}

		[Test]
		public void TypesAreCorrect ()
		{
			WillWorkSecurity security = new WillWorkSecurity ();
			Assert.AreEqual (security.AccessRightType, typeof (WillWorkRights));
			Assert.AreEqual (security.AccessRuleType, typeof (AccessRule<WillWorkRights>));
			Assert.AreEqual (security.AuditRuleType, typeof (AuditRule<WillWorkRights>));
		}

		[Test]
		public void WillWorkOKUsingAccessFactory ()
		{
			WillWorkSecurity security = new WillWorkSecurity ();
			SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null);
			AccessRule<WillWorkRights> rule = (AccessRule<WillWorkRights>)
				security.AccessRuleFactory (id, 1, false,
					InheritanceFlags.None, PropagationFlags.None,
					AccessControlType.Allow);
			Assert.AreEqual (rule.AccessControlType, AccessControlType.Allow);
			Assert.AreEqual (rule.IdentityReference, id);
			Assert.AreEqual (rule.InheritanceFlags, InheritanceFlags.None);
			Assert.AreEqual (rule.PropagationFlags, PropagationFlags.None);
			Assert.AreEqual (rule.Rights, WillWorkRights.Value);
		}

		[Test]
		public void WillWorkOKUsingConstructor()
		{
			SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null);
			AccessRule<WillWorkRights> rule = new AccessRule<WillWorkRights> (id, WillWorkRights.Value,
											  AccessControlType.Allow);
			Assert.AreEqual (rule.AccessControlType, AccessControlType.Allow);
			Assert.AreEqual (rule.IdentityReference, id);
			Assert.AreEqual (rule.Rights, WillWorkRights.Value);
		}

		[Test, ExpectedException (typeof (InvalidCastException))]
		public void WillFailFailsUsingFactoryOnGetter()
		{
			WillFailSecurity security = new WillFailSecurity ();
			SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null);
			AccessRule<WillFailRights> rule = (AccessRule<WillFailRights>)
				security.AccessRuleFactory (id, 1, false,
					InheritanceFlags.None, PropagationFlags.None,
					AccessControlType.Allow);
			WillFailRights rights = rule.Rights;
		}

		[Test, ExpectedException (typeof (InvalidCastException))]
		public void WillFailFailsUsingConstructor()
		{
			SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null);
			AccessRule<WillFailRights> rule = new AccessRule<WillFailRights> (id, new WillFailRights(),
											  AccessControlType.Allow);
		}
	}
}