2 // DBDataPermissionTest.cs - NUnit Test Cases for DBDataPermission
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using NUnit
.Framework
;
32 using System
.Data
.Common
;
33 using System
.Security
;
34 using System
.Security
.Permissions
;
36 namespace MonoTests
.System
.Data
.Common
{
38 public class NonAbstractDBDataPermission
: DBDataPermission
{
41 public NonAbstractDBDataPermission ()
46 public NonAbstractDBDataPermission (DBDataPermission permission
, bool allowBlankPassword
)
49 AllowBlankPassword
= allowBlankPassword
;
52 // make Copy and CreateInstance work :)
53 public NonAbstractDBDataPermission ()
54 : base (PermissionState
.None
)
58 public NonAbstractDBDataPermission (PermissionState state
)
63 public NonAbstractDBDataPermission (DBDataPermission permission
)
68 public NonAbstractDBDataPermission (DBDataPermissionAttribute permissionAttribute
)
69 : base (permissionAttribute
)
73 public NonAbstractDBDataPermission (DbConnectionOptions connectionOptions
)
74 : base (connectionOptions
)
79 public new void Clear ()
84 public new DBDataPermission
CreateInstance ()
86 return base.CreateInstance ();
91 public class DBDataPermissionTest
{
93 private const string defaultConnectString
= "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
94 private const string defaultConnectString2
= "Data Source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=Northwind;";
96 private void Check (string msg
, NonAbstractDBDataPermission dbdp
, bool blank
, bool unrestricted
, int count
)
98 Assert
.AreEqual (blank
, dbdp
.AllowBlankPassword
, msg
+ ".AllowBlankPassword");
99 Assert
.AreEqual (unrestricted
, dbdp
.IsUnrestricted (), msg
+ ".IsUnrestricted");
101 Assert
.IsNull (dbdp
.ToXml ().Children
, msg
+ ".Count != 0");
103 Assert
.AreEqual (count
, dbdp
.ToXml ().Children
.Count
, msg
+ ".Count");
108 public void Constructor_Empty ()
110 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission ();
111 Check ("Empty", dbdp
, false, false, 0);
115 [ExpectedException (typeof (ArgumentOutOfRangeException
))]
116 public void Constructor_PermissionStateBoolean_Invalid ()
118 PermissionState ps
= (PermissionState
) Int32
.MinValue
;
119 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
, false);
123 public void Constructor_PermissionStateBoolean_None ()
125 PermissionState ps
= PermissionState
.None
;
126 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
, false);
127 Check ("None,False", dbdp
, false, false, 0);
129 dbdp
= new NonAbstractDBDataPermission (ps
, true);
130 Check ("None,True", dbdp
, true, false, 0);
134 public void Constructor_PermissionStateBoolean_Unrestricted ()
136 PermissionState ps
= PermissionState
.Unrestricted
;
137 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
, false);
138 Check ("Unrestricted,False", dbdp
, false, true, 0);
140 dbdp
= new NonAbstractDBDataPermission (ps
, true);
141 Check ("Unrestricted,True", dbdp
, true, true, 0);
145 [ExpectedException (typeof (ArgumentNullException
))]
146 public void Constructor_DBDataPermission_Null ()
148 DBDataPermission p
= null;
149 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (p
);
153 public void Constructor_DBDataPermission ()
155 DBDataPermission p
= new NonAbstractDBDataPermission (PermissionState
.None
);
156 p
.AllowBlankPassword
= true;
157 p
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
159 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (p
);
160 Check ("DBDataPermission", dbdp
, true, false, 1);
164 [ExpectedException (typeof (ArgumentNullException
))]
165 public void Constructor_DBDataPermissionAttribute_Null ()
167 DBDataPermissionAttribute a
= null;
168 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (a
);
172 public void Constructor_DBDataPermissionAttribute ()
174 DBDataPermissionAttribute a
= new NonAbstractDBDataPermissionAttribute (SecurityAction
.Assert
);
175 a
.AllowBlankPassword
= true;
177 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (a
);
178 Check ("DBDataPermissionAttribute-0", dbdp
, true, false, 0);
180 a
.Unrestricted
= true;
181 dbdp
= new NonAbstractDBDataPermission (a
);
182 Check ("DBDataPermissionAttribute-1", dbdp
, false, true, 0);
183 // Unrestricted "bypass" the AllowBlankPassword (so it report false)
185 a
.ConnectionString
= defaultConnectString
;
186 dbdp
= new NonAbstractDBDataPermission (a
);
187 Check ("DBDataPermissionAttribute-2", dbdp
, false, true, 0);
188 // Unrestricted "bypass" the ConnectionString (so it report 0 childs)
190 a
.Unrestricted
= false;
191 dbdp
= new NonAbstractDBDataPermission (a
);
192 Check ("DBDataPermissionAttribute-3", dbdp
, true, false, 1);
196 // [ExpectedException (typeof (ArgumentNullException))]
197 public void Constructor_DbConnectionOptions_Null ()
199 DbConnectionOptions o
= null;
200 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (o
);
201 Check ("DbConnectionOptions_Null", dbdp
, false, false, 0);
205 public void Constructor_DbConnectionOptions ()
207 DbConnectionOptions o
= new DbConnectionOptions (defaultConnectString
);
208 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (o
);
209 Check ("DbConnectionOptions", dbdp
, false, false, 1);
213 [ExpectedException (typeof (ArgumentOutOfRangeException
))]
214 public void Constructor_PermissionState_Invalid ()
216 PermissionState ps
= (PermissionState
) Int32
.MinValue
;
217 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
);
221 public void Constructor_PermissionState_None ()
223 PermissionState ps
= PermissionState
.None
;
224 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
);
225 Check ("PermissionState_None-1", dbdp
, false, false, 0);
226 dbdp
.AllowBlankPassword
= true;
227 Check ("PermissionState_None-1", dbdp
, true, false, 0);
231 public void Constructor_PermissionState_Unrestricted ()
233 PermissionState ps
= PermissionState
.Unrestricted
;
234 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (ps
);
235 Check ("PermissionState_Unrestricted-1", dbdp
, false, true, 0);
236 dbdp
.AllowBlankPassword
= true;
237 Check ("PermissionState_Unrestricted-2", dbdp
, true, true, 0);
241 public void AllowBlankPassword ()
243 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
244 Assert
.IsFalse (dbdp
.AllowBlankPassword
, "Default");
245 dbdp
.AllowBlankPassword
= true;
246 Assert
.IsTrue (dbdp
.AllowBlankPassword
, "True");
248 // clear the connection list - not the permission itself
249 Assert
.IsTrue (dbdp
.AllowBlankPassword
, "Clear");
250 dbdp
.AllowBlankPassword
= false;
251 Assert
.IsFalse (dbdp
.AllowBlankPassword
, "False");
257 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
258 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
259 Assert
.AreEqual (1, dbdp
.ToXml ().Children
.Count
, "Count");
261 NonAbstractDBDataPermission copy
= (NonAbstractDBDataPermission
)dbdp
.Copy ();
262 Assert
.AreEqual (1, copy
.ToXml ().Children
.Count
, "Copy.Count");
265 Assert
.IsNull (dbdp
.ToXml ().Children
, "Clear");
266 Assert
.AreEqual (1, copy
.ToXml ().Children
.Count
, "Copy.Count-2");
270 public void Add_Duplicates ()
272 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
273 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
274 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
275 // no exception but a single element is kept
276 Assert
.AreEqual (1, dbdp
.ToXml ().Children
.Count
, "Count");
277 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
280 Assert
.IsNull (dbdp
.ToXml ().Children
, "Clear");
284 public void Add_Differents ()
286 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
287 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
288 string connectString
= "Data Source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=Northwind;";
289 dbdp
.Add (connectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
290 Assert
.AreEqual (2, dbdp
.ToXml ().Children
.Count
, "Count");
293 Assert
.IsNull (dbdp
.ToXml ().Children
, "Clear");
297 public void Add_Unrestricted ()
299 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
300 Assert
.IsTrue (dbdp
.IsUnrestricted (), "IsUnrestricted-1");
301 // we lose unrestricted by adding an element
302 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
303 Assert
.IsFalse (dbdp
.IsUnrestricted (), "IsUnrestricted-2");
304 // removing the element doesn't regain unrestricted status
306 Assert
.IsFalse (dbdp
.IsUnrestricted (), "IsUnrestricted-3");
310 public void CreateInstance ()
312 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
313 Assert
.AreEqual (typeof (NonAbstractDBDataPermission
), dbdp
.CreateInstance ().GetType (), "Same type");
318 public void Intersect_Null ()
320 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
321 // No intersection with null
322 Assert
.IsNull (elp
.Intersect (null), "None N null");
326 public void Intersect ()
328 NonAbstractDBDataPermission dbdp1
= new NonAbstractDBDataPermission (PermissionState
.None
);
329 NonAbstractDBDataPermission dbdp2
= new NonAbstractDBDataPermission (PermissionState
.None
);
332 NonAbstractDBDataPermission result
= (NonAbstractDBDataPermission
) dbdp1
.Intersect (dbdp2
);
333 Assert
.IsNull (result
, "Empty N Empty");
336 dbdp2
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
337 result
= (NonAbstractDBDataPermission
)dbdp1
.Intersect (dbdp2
);
338 Assert
.IsNull (result
, "Empty N Entry");
341 result
= (NonAbstractDBDataPermission
)dbdp2
.Intersect (dbdp1
);
342 Assert
.IsNull (result
, "Entry N Empty");
344 // 4. Unrestricted N None
345 NonAbstractDBDataPermission unr
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
346 result
= (NonAbstractDBDataPermission
)unr
.Intersect (dbdp1
);
347 Check ("(Unrestricted N None)", result
, false, false, 0);
349 // 5. None N Unrestricted
350 result
= (NonAbstractDBDataPermission
)dbdp1
.Intersect (unr
);
351 Check ("(None N Unrestricted)", result
, false, false, 0);
353 // 6. Unrestricted N Unrestricted
354 result
= (NonAbstractDBDataPermission
)unr
.Intersect (unr
);
355 Check ("(Unrestricted N Unrestricted)", result
, false, true, 0);
357 // 7. Unrestricted N Entry
358 result
= (NonAbstractDBDataPermission
)unr
.Intersect (dbdp2
);
359 Check ("(Unrestricted N Entry)", result
, false, false, 1);
361 // 8. Entry N Unrestricted
362 result
= (NonAbstractDBDataPermission
)dbdp2
.Intersect (unr
);
363 Check ("(Entry N Unrestricted)", result
, false, false, 1);
365 // 9. Entry2 N Entry2
366 result
= (NonAbstractDBDataPermission
)dbdp2
.Intersect (dbdp2
);
367 Check ("(Entry2 N Entry2)", result
, false, false, 1);
369 // 10. Entry1 N Entry 2
370 dbdp1
.Add (defaultConnectString2
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
371 result
= (NonAbstractDBDataPermission
)dbdp1
.Intersect (dbdp2
);
372 Assert
.IsNull (result
, "(Entry1 N Entry2)");
374 // 11. Entry2 N Entry 1
375 result
= (NonAbstractDBDataPermission
)dbdp2
.Intersect (dbdp1
);
376 Assert
.IsNull (result
, "(Entry2 N Entry1)");
380 public void Intersect_AllowBlankPassword ()
382 NonAbstractDBDataPermission ptrue
= new NonAbstractDBDataPermission (PermissionState
.None
);
383 ptrue
.AllowBlankPassword
= true;
384 ptrue
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
385 NonAbstractDBDataPermission pfalse
= new NonAbstractDBDataPermission (PermissionState
.None
);
386 pfalse
.AllowBlankPassword
= false;
387 pfalse
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
389 NonAbstractDBDataPermission intersect
= (NonAbstractDBDataPermission
)ptrue
.Intersect (ptrue
);
390 Check ("true N true", intersect
, true, false, 1);
391 intersect
= (NonAbstractDBDataPermission
)ptrue
.Intersect (pfalse
);
392 Check ("true N false", intersect
, false, false, 1);
393 intersect
= (NonAbstractDBDataPermission
)pfalse
.Intersect (ptrue
);
394 Check ("false N true", intersect
, false, false, 1);
395 intersect
= (NonAbstractDBDataPermission
)pfalse
.Intersect (pfalse
);
396 Check ("false N false", intersect
, false, false, 1);
400 [ExpectedException (typeof (ArgumentException
))]
401 public void Intersect_BadPermission ()
403 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
404 dbdp
.Intersect (new SecurityPermission (SecurityPermissionFlag
.Assertion
));
408 public void IsSubset_Null ()
410 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
411 Assert
.IsTrue (dbdp
.IsSubsetOf (null), "Empty-null");
413 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
414 Assert
.IsFalse (dbdp
.IsSubsetOf (null), "Element-null");
416 dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
417 Assert
.IsFalse (dbdp
.IsSubsetOf (null), "Unrestricted-null");
421 public void IsSubset ()
423 NonAbstractDBDataPermission empty
= new NonAbstractDBDataPermission (PermissionState
.None
);
424 Assert
.IsTrue (empty
.IsSubsetOf (empty
), "Empty-Empty");
426 NonAbstractDBDataPermission dbdp1
= new NonAbstractDBDataPermission (PermissionState
.None
);
427 dbdp1
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
428 Assert
.IsTrue (empty
.IsSubsetOf (dbdp1
), "Empty-1");
429 Assert
.IsFalse (dbdp1
.IsSubsetOf (empty
), "1-Empty");
430 Assert
.IsTrue (dbdp1
.IsSubsetOf (dbdp1
), "1-1");
432 NonAbstractDBDataPermission dbdp2
= (NonAbstractDBDataPermission
)dbdp1
.Copy ();
433 dbdp2
.Add (defaultConnectString2
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
434 Assert
.IsTrue (dbdp1
.IsSubsetOf (dbdp2
), "1-2");
435 Assert
.IsFalse (dbdp2
.IsSubsetOf (dbdp1
), "2-1");
436 Assert
.IsTrue (dbdp2
.IsSubsetOf (dbdp2
), "2-2");
438 NonAbstractDBDataPermission dbdp3
= new NonAbstractDBDataPermission (PermissionState
.None
);
439 dbdp3
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
440 Assert
.IsTrue (dbdp3
.IsSubsetOf (dbdp1
), "3-1");
441 Assert
.IsTrue (dbdp1
.IsSubsetOf (dbdp3
), "1-3");
442 Assert
.IsTrue (dbdp3
.IsSubsetOf (dbdp3
), "3-3");
444 NonAbstractDBDataPermission unr
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
445 Assert
.IsTrue (dbdp1
.IsSubsetOf (unr
), "1-unrestricted");
446 Assert
.IsFalse (unr
.IsSubsetOf (dbdp1
), "unrestricted-1");
447 Assert
.IsTrue (dbdp2
.IsSubsetOf (unr
), "2-unrestricted");
448 Assert
.IsFalse (unr
.IsSubsetOf (dbdp2
), "unrestricted-2");
449 Assert
.IsTrue (dbdp3
.IsSubsetOf (unr
), "3-unrestricted");
450 Assert
.IsFalse (unr
.IsSubsetOf (dbdp3
), "unrestricted-3");
451 Assert
.IsTrue (unr
.IsSubsetOf (unr
), "unrestricted-unrestricted");
455 public void IsSubsetOf_AllowBlankPassword ()
457 NonAbstractDBDataPermission ptrue
= new NonAbstractDBDataPermission (PermissionState
.None
);
458 ptrue
.AllowBlankPassword
= true;
459 ptrue
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
460 NonAbstractDBDataPermission pfalse
= new NonAbstractDBDataPermission (PermissionState
.None
);
461 pfalse
.AllowBlankPassword
= false;
462 pfalse
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
464 Assert
.IsTrue (ptrue
.IsSubsetOf (ptrue
), "true subsetof true");
465 Assert
.IsFalse (ptrue
.IsSubsetOf (pfalse
), "true subsetof false");
466 Assert
.IsTrue (pfalse
.IsSubsetOf (ptrue
), "false subsetof true");
467 Assert
.IsTrue (pfalse
.IsSubsetOf (pfalse
), "false subsetof false");
471 public void IsSubsetOf_BothEmpty_KeyRestrictionBehavior ()
473 NonAbstractDBDataPermission pAllow
= new NonAbstractDBDataPermission (PermissionState
.None
);
474 pAllow
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
475 NonAbstractDBDataPermission pPrevent
= new NonAbstractDBDataPermission (PermissionState
.None
);
476 pPrevent
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
478 Assert
.IsTrue (pAllow
.IsSubsetOf (pAllow
), "BothEmpty - pAllow subsetof pAllow");
479 Assert
.IsTrue (pAllow
.IsSubsetOf (pPrevent
), "BothEmpty - pAllow subsetof pPrevent");
480 Assert
.IsTrue (pPrevent
.IsSubsetOf (pAllow
), "BothEmpty - pPrevent subsetof pAllow");
481 Assert
.IsTrue (pPrevent
.IsSubsetOf (pPrevent
), "BothEmpty - pPrevent subsetof pPrevent");
485 public void IsSubsetOf_EmptyAllow_Prevent_KeyRestrictionBehavior ()
487 NonAbstractDBDataPermission pAllow
= new NonAbstractDBDataPermission (PermissionState
.None
);
488 pAllow
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
489 NonAbstractDBDataPermission pPrevent
= new NonAbstractDBDataPermission (PermissionState
.None
);
490 pPrevent
.Add (defaultConnectString
, "password=;", KeyRestrictionBehavior
.PreventUsage
);
492 Assert
.IsTrue (pAllow
.IsSubsetOf (pAllow
), "EmptyAllow_Prevent - pAllow subsetof pAllow");
493 Assert
.IsTrue (pAllow
.IsSubsetOf (pPrevent
), "EmptyAllow_Prevent - pAllow subsetof pPrevent");
494 Assert
.IsTrue (pPrevent
.IsSubsetOf (pAllow
), "EmptyAllow_Prevent - pPrevent subsetof pAllow");
495 Assert
.IsTrue (pPrevent
.IsSubsetOf (pPrevent
), "EmptyAllow_Prevent - pPrevent subsetof pPrevent");
499 public void IsSubsetOf_Allow_EmptyPrevent_KeyRestrictionBehavior ()
501 NonAbstractDBDataPermission pAllow
= new NonAbstractDBDataPermission (PermissionState
.None
);
502 pAllow
.Add (defaultConnectString
, "data source=;", KeyRestrictionBehavior
.AllowOnly
);
503 NonAbstractDBDataPermission pPrevent
= new NonAbstractDBDataPermission (PermissionState
.None
);
504 pPrevent
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
506 Assert
.IsTrue (pAllow
.IsSubsetOf (pAllow
), "Allow_EmptyPrevent - pAllow subsetof pAllow");
507 Assert
.IsTrue (pAllow
.IsSubsetOf (pPrevent
), "Allow_EmptyPrevent - pAllow subsetof pPrevent");
508 Assert
.IsTrue (pPrevent
.IsSubsetOf (pAllow
), "Allow_EmptyPrevent - pPrevent subsetof pAllow");
509 Assert
.IsTrue (pPrevent
.IsSubsetOf (pPrevent
), "Allow_EmptyPrevent - pPrevent subsetof pPrevent");
513 public void IsSubsetOf_AllowPreventSame_KeyRestrictionBehavior ()
515 NonAbstractDBDataPermission pAllow
= new NonAbstractDBDataPermission (PermissionState
.None
);
516 pAllow
.Add (defaultConnectString
, "password=;", KeyRestrictionBehavior
.AllowOnly
);
517 NonAbstractDBDataPermission pPrevent
= new NonAbstractDBDataPermission (PermissionState
.None
);
518 pPrevent
.Add (defaultConnectString
, "password=;", KeyRestrictionBehavior
.PreventUsage
);
520 Assert
.IsTrue (pAllow
.IsSubsetOf (pAllow
), "AllowPreventSame - pAllow subsetof pAllow");
521 Assert
.IsTrue (pAllow
.IsSubsetOf (pPrevent
), "AllowPreventSame - pAllow subsetof pPrevent");
522 Assert
.IsTrue (pPrevent
.IsSubsetOf (pAllow
), "AllowPreventSame - pPrevent subsetof pAllow");
523 Assert
.IsTrue (pPrevent
.IsSubsetOf (pPrevent
), "AllowPreventSame - pPrevent subsetof pPrevent");
527 public void IsSubsetOf_AllowPreventDifferent_KeyRestrictionBehavior ()
529 NonAbstractDBDataPermission pAllow1
= new NonAbstractDBDataPermission (PermissionState
.None
);
530 pAllow1
.Add (defaultConnectString
, "security=;", KeyRestrictionBehavior
.AllowOnly
);
531 NonAbstractDBDataPermission pAllow2
= new NonAbstractDBDataPermission (PermissionState
.None
);
532 pAllow2
.Add (defaultConnectString
, "password=;", KeyRestrictionBehavior
.AllowOnly
);
533 NonAbstractDBDataPermission pPrevent1
= new NonAbstractDBDataPermission (PermissionState
.None
);
534 pPrevent1
.Add (defaultConnectString
, "security=;", KeyRestrictionBehavior
.PreventUsage
);
535 NonAbstractDBDataPermission pPrevent2
= new NonAbstractDBDataPermission (PermissionState
.None
);
536 pPrevent2
.Add (defaultConnectString
, "password=;", KeyRestrictionBehavior
.PreventUsage
);
538 Assert
.IsTrue (pAllow1
.IsSubsetOf (pAllow1
), "AllowPreventDifferent - pAllow subsetof pAllow");
539 Assert
.IsTrue (pAllow1
.IsSubsetOf (pPrevent2
), "AllowPreventDifferent - pAllow subsetof pPrevent");
540 Assert
.IsTrue (pPrevent1
.IsSubsetOf (pAllow2
), "AllowPreventDifferent - pPrevent subsetof pAllow");
541 Assert
.IsTrue (pPrevent1
.IsSubsetOf (pPrevent2
), "AllowPreventDifferent - pPrevent subsetof pPrevent");
545 [ExpectedException (typeof (ArgumentException
))]
546 public void IsSubsetOf_BadPermission ()
548 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
549 dbdp
.IsSubsetOf (new SecurityPermission (SecurityPermissionFlag
.Assertion
));
553 public void Union_Null ()
555 NonAbstractDBDataPermission dbdp
= new NonAbstractDBDataPermission (PermissionState
.None
);
556 NonAbstractDBDataPermission union
= (NonAbstractDBDataPermission
) dbdp
.Union (null);
557 Check ("Empty U null", dbdp
, false, false, 0);
559 dbdp
.AllowBlankPassword
= true;
560 dbdp
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
561 union
= (NonAbstractDBDataPermission
) dbdp
.Union (null);
562 Check ("Element U null", dbdp
, true, false, 1);
564 dbdp
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
565 union
= (NonAbstractDBDataPermission
) dbdp
.Union (null);
566 Check ("Unrestricted U null", dbdp
, false, true, 0);
572 NonAbstractDBDataPermission empty
= new NonAbstractDBDataPermission (PermissionState
.None
);
573 NonAbstractDBDataPermission union
= (NonAbstractDBDataPermission
) empty
.Union (empty
);
574 Assert
.IsNull (union
, "Empty U Empty");
576 NonAbstractDBDataPermission dbdp1
= new NonAbstractDBDataPermission (PermissionState
.None
);
577 dbdp1
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
578 union
= (NonAbstractDBDataPermission
) empty
.Union (dbdp1
);
579 Check ("Empty U 1", union
, false, false, 1);
581 NonAbstractDBDataPermission dbdp2
= (NonAbstractDBDataPermission
)dbdp1
.Copy ();
582 dbdp2
.Add (defaultConnectString2
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
583 union
= (NonAbstractDBDataPermission
) dbdp1
.Union (dbdp2
);
584 Check ("1 U 2", union
, false, false, 2);
586 NonAbstractDBDataPermission dbdp3
= new NonAbstractDBDataPermission (PermissionState
.None
);
587 dbdp3
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.PreventUsage
);
588 union
= (NonAbstractDBDataPermission
) dbdp2
.Union (dbdp3
);
589 Check ("2 U 3", union
, false, false, 2);
591 NonAbstractDBDataPermission dbdp4
= new NonAbstractDBDataPermission (PermissionState
.None
);
592 dbdp4
.Add (defaultConnectString
, "Data Source=;", KeyRestrictionBehavior
.PreventUsage
);
593 union
= (NonAbstractDBDataPermission
) dbdp3
.Union (dbdp4
);
594 Check ("3 U 4", union
, false, false, 1);
596 NonAbstractDBDataPermission unr
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
597 union
= (NonAbstractDBDataPermission
) unr
.Union (empty
);
598 Check ("unrestricted U empty", union
, false, true, 0);
600 union
= (NonAbstractDBDataPermission
)unr
.Union (dbdp4
);
601 Check ("unrestricted U 4", union
, false, true, 0);
605 public void Union_AllowBlankPassword ()
607 NonAbstractDBDataPermission ptrue
= new NonAbstractDBDataPermission (PermissionState
.None
);
608 ptrue
.AllowBlankPassword
= true;
609 ptrue
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
610 NonAbstractDBDataPermission pfalse
= new NonAbstractDBDataPermission (PermissionState
.None
);
611 pfalse
.AllowBlankPassword
= false;
612 pfalse
.Add (defaultConnectString
, String
.Empty
, KeyRestrictionBehavior
.AllowOnly
);
614 NonAbstractDBDataPermission union
= (NonAbstractDBDataPermission
) ptrue
.Union (ptrue
);
615 Check ("true U true", union
, true, false, 1);
616 union
= (NonAbstractDBDataPermission
)ptrue
.Union (pfalse
);
617 Check ("true U false", union
, true, false, 1);
618 union
= (NonAbstractDBDataPermission
)pfalse
.Union (ptrue
);
619 Check ("false U true", union
, true, false, 1);
620 union
= (NonAbstractDBDataPermission
)pfalse
.Union (pfalse
);
621 Check ("false U false", union
, false, false, 1);
625 [ExpectedException (typeof (ArgumentException
))]
626 public void Union_BadPermission ()
628 NonAbstractDBDataPermission dbdp1
= new NonAbstractDBDataPermission (PermissionState
.Unrestricted
);
629 dbdp1
.Union (new SecurityPermission (SecurityPermissionFlag
.Assertion
));
633 [ExpectedException (typeof (ArgumentNullException
))]
634 public void FromXml_Null ()
636 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
641 [ExpectedException (typeof (ArgumentException
))]
642 public void FromXml_WrongTag ()
644 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
645 SecurityElement se
= elp
.ToXml ();
651 [ExpectedException (typeof (ArgumentException
))]
652 public void FromXml_WrongTagCase ()
654 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
655 SecurityElement se
= elp
.ToXml ();
656 se
.Tag
= "IPERMISSION"; // instead of IPermission
661 public void FromXml_WrongClass ()
663 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
664 SecurityElement se
= elp
.ToXml ();
666 SecurityElement w
= new SecurityElement (se
.Tag
);
667 w
.AddAttribute ("class", "Wrong" + se
.Attribute ("class"));
668 w
.AddAttribute ("version", se
.Attribute ("version"));
670 // doesn't care of the class name at that stage
671 // anyway the class has already be created so...
675 public void FromXml_NoClass ()
677 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
678 SecurityElement se
= elp
.ToXml ();
680 SecurityElement w
= new SecurityElement (se
.Tag
);
681 w
.AddAttribute ("version", se
.Attribute ("version"));
683 // doesn't even care of the class attribute presence
687 [ExpectedException (typeof (ArgumentException
))]
688 public void FromXml_WrongVersion ()
690 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
691 SecurityElement se
= elp
.ToXml ();
692 se
.Attributes
.Remove ("version");
693 se
.Attributes
.Add ("version", "2");
698 public void FromXml_NoVersion ()
700 NonAbstractDBDataPermission elp
= new NonAbstractDBDataPermission (PermissionState
.None
);
701 SecurityElement se
= elp
.ToXml ();
703 SecurityElement w
= new SecurityElement (se
.Tag
);
704 w
.AddAttribute ("class", se
.Attribute ("class"));