New test.
[mono.git] / mcs / class / corlib / Test / System.Security.Principal / WindowsPrincipalTest.cs
1 //
2 // WindowsPrincipalTest.cs - NUnit Test Cases for WindowsPrincipal
3 //
4 // Author:
5 //      Sebastien Pouliot (sebastien@ximian.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 // (C) 2004 Novell (http://www.novell.com)
9 //
10
11 using NUnit.Framework;
12 using System;
13 using System.Runtime.Serialization;
14 using System.Security.Principal;
15
16 namespace MonoTests.System.Security.Principal {
17
18         [TestFixture]
19         public class WindowsPrincipalTest : Assertion {
20
21                 [Test]
22                 [ExpectedException (typeof (ArgumentNullException))]
23                 public void ConstructorNull () 
24                 {
25                         WindowsPrincipal p = new WindowsPrincipal (null);
26                 }
27
28                 [Test]
29                 public void Current () 
30                 {
31                         WindowsPrincipal p = new WindowsPrincipal (WindowsIdentity.GetCurrent ());
32                         AssertNotNull ("Identity", p.Identity);
33
34                         bool test;
35                         // we don't Assert as we don't know the current user roles
36                         test = p.IsInRole (WindowsBuiltInRole.Administrator);
37                         test = p.IsInRole (WindowsBuiltInRole.BackupOperator);
38                         test = p.IsInRole (WindowsBuiltInRole.Guest);
39                         test = p.IsInRole (WindowsBuiltInRole.PowerUser);
40                         test = p.IsInRole (WindowsBuiltInRole.Replicator);
41                         test = p.IsInRole (WindowsBuiltInRole.User);
42
43                         // doesn't work under XP in a workgroup (ArgumentException)
44 //                      test = p.IsInRole (WindowsBuiltInRole.AccountOperator);
45 //                      test = p.IsInRole (WindowsBuiltInRole.PrintOperator);
46 //                      test = p.IsInRole (WindowsBuiltInRole.SystemOperator);
47                 }
48
49                 [Test]
50                 public void Anonymous () 
51                 {
52                         WindowsPrincipal p = new WindowsPrincipal (WindowsIdentity.GetAnonymous ());
53                         AssertNotNull ("Identity", p.Identity);
54
55                         Assert ("Administrator", !p.IsInRole (WindowsBuiltInRole.Administrator));
56                         Assert ("BackupOperator", !p.IsInRole (WindowsBuiltInRole.BackupOperator));
57                         Assert ("Guest", !p.IsInRole (WindowsBuiltInRole.Guest));
58                         Assert ("PowerUser", !p.IsInRole (WindowsBuiltInRole.PowerUser));
59                         Assert ("Replicator", !p.IsInRole (WindowsBuiltInRole.Replicator));
60                         Assert ("User", !p.IsInRole (WindowsBuiltInRole.User));
61
62                         // doesn't work under XP in a workgroup (ArgumentException)
63 //                      Assert ("AccountOperator", !p.IsInRole (WindowsBuiltInRole.AccountOperator));
64 //                      Assert ("PrintOperator", !p.IsInRole (WindowsBuiltInRole.PrintOperator));
65 //                      Assert ("SystemOperator", !p.IsInRole (WindowsBuiltInRole.SystemOperator));
66                 }
67
68                 [Test]
69                 //[ExpectedException (typeof (ArgumentNullException))]
70                 public void IsInRole_Null ()
71                 {
72                         WindowsPrincipal p = new WindowsPrincipal (WindowsIdentity.GetAnonymous ());
73                         Assert ("IsInRole(Null)", !p.IsInRole ((string)null));
74                 }
75
76                 [Test]
77                 public void Interface () 
78                 {
79                         WindowsPrincipal wp = new WindowsPrincipal (WindowsIdentity.GetAnonymous ());
80
81                         IPrincipal p = (wp as IPrincipal);
82                         AssertNotNull ("IPrincipal", p);
83                 }
84         }
85 }