2 // StrongNameIdentityPermissionTest.cs -
3 // NUnit Test Cases for StrongNameIdentityPermission
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
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:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
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;
32 using System.Security;
33 using System.Security.Permissions;
35 namespace MonoTests.System.Security.Permissions {
38 public class StrongNameIdentityPermissionTest {
40 static byte[] ecma = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
43 private StrongNameIdentityPermission GetUnion ()
45 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
46 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
47 StrongNamePublicKeyBlob blob2 = new StrongNamePublicKeyBlob (new byte[16]);
48 StrongNameIdentityPermission diffPk = new StrongNameIdentityPermission (blob2, "mono", new Version (1, 2, 3, 4));
49 return (StrongNameIdentityPermission)snip.Union (diffPk);
54 public void PermissionStateNone ()
56 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
57 Assert.AreEqual (String.Empty, snip.Name, "Name");
58 Assert.IsNull (snip.PublicKey, "PublicKey");
59 Assert.AreEqual ("0.0", snip.Version.ToString (), "Version");
61 SecurityElement se = snip.ToXml ();
63 Assert.IsNull (se.Attribute ("Name"), "Xml-Name");
64 Assert.IsNull (se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
66 Assert.AreEqual (String.Empty, se.Attribute ("Name"), "Xml-Name");
67 Assert.AreEqual ("0.0", se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
69 Assert.IsNull (se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
71 // because Name == String.Empty, which is illegal using the other constructor
72 StrongNameIdentityPermission copy = (StrongNameIdentityPermission) snip.Copy ();
73 Assert.AreEqual (String.Empty, copy.Name, "Copy-Name");
75 // Strangely once copied the Name becomes equals to String.Empty in 2.0 [FDBK19351]
76 Assert.IsNull (se.Attribute ("AssemblyVersion"), "Copy-Version");
78 Assert.AreEqual ("0.0", copy.Version.ToString (), "Copy-Version");
80 Assert.IsNull (copy.PublicKey, "Copy-PublicKey");
84 public void PermissionStateUnrestricted ()
86 // In 2.0 Unrestricted are permitted for identity permissions
87 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.Unrestricted);
88 Assert.AreEqual (String.Empty, snip.Name, "Name");
89 Assert.IsNull (snip.PublicKey, "PublicKey");
90 Assert.AreEqual ("0.0", snip.Version.ToString (), "Version");
91 SecurityElement se = snip.ToXml ();
92 Assert.IsNull (se.Attribute ("Name"), "Xml-Name");
93 Assert.IsNull (se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
94 Assert.IsNull (se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
95 StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
96 Assert.IsTrue (snip.Equals (copy), "snip Equals copy");
97 Assert.IsTrue (copy.Equals (snip), "copy Equals snip");
98 // and they aren't equals to None
99 Assert.IsFalse (snip.Equals (new StrongNameIdentityPermission (PermissionState.None)), "Not Equals None");
103 [ExpectedException (typeof (ArgumentException))]
104 public void PermissionStateUnrestricted ()
106 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.Unrestricted);
110 [ExpectedException (typeof (ArgumentException))]
111 public void PermissionStateInvalid ()
113 StrongNameIdentityPermission snip = new StrongNameIdentityPermission ((PermissionState)2);
117 [ExpectedException (typeof (ArgumentNullException))]
118 public void StrongNameIdentityPermission_BlobNull ()
120 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (null, "mono", new Version (0,0));
124 public void StrongNameIdentityPermission_NameNull ()
126 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
127 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, null, new Version (1, 2));
128 Assert.IsNull (snip.Name, "Name");
129 Assert.AreEqual ("00000000000000000400000000000000", snip.PublicKey.ToString (), "PublicKey");
130 Assert.AreEqual ("1.2", snip.Version.ToString (), "Version");
132 SecurityElement se = snip.ToXml ();
133 Assert.IsNull (se.Attribute ("Name"), "Xml-Name");
134 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
135 Assert.AreEqual ("1.2", se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
137 StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
139 Assert.IsNull (se.Attribute ("Name"), "Copy-Name");
140 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Copy-PublicKeyBlob");
141 Assert.AreEqual ("1.2", se.Attribute ("AssemblyVersion"), "Copy-AssemblyVersion");
146 [ExpectedException (typeof (ArgumentException))]
148 public void StrongNameIdentityPermission_NameEmpty ()
150 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
151 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, String.Empty, new Version (1, 2));
155 public void StrongNameIdentityPermission_VersionNull ()
157 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
158 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", null);
159 Assert.AreEqual ("mono", snip.Name, "Name");
160 Assert.AreEqual ("00000000000000000400000000000000", snip.PublicKey.ToString (), "PublicKey");
161 Assert.IsNull (snip.Version, "Version");
163 SecurityElement se = snip.ToXml ();
164 Assert.AreEqual ("mono", se.Attribute ("Name"), "Xml-Name");
165 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
166 Assert.IsNull (se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
168 StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
169 Assert.AreEqual ("mono", se.Attribute ("Name"), "Copy-Name");
170 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Copy-PublicKeyBlob");
171 Assert.IsNull (se.Attribute ("AssemblyVersion"), "Copy-AssemblyVersion");
175 public void StrongNameIdentityPermission_All ()
177 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
178 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
179 Assert.AreEqual ("mono", snip.Name, "Name");
180 Assert.AreEqual ("00000000000000000400000000000000", snip.PublicKey.ToString (), "PublicKey");
181 Assert.AreEqual ("1.2.3.4", snip.Version.ToString (), "Version");
183 SecurityElement se = snip.ToXml ();
184 Assert.AreEqual ("mono", se.Attribute ("Name"), "Xml-Name");
185 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
186 Assert.AreEqual ("1.2.3.4", se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
188 StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
189 Assert.AreEqual ("mono", se.Attribute ("Name"), "Copy-Name");
190 Assert.AreEqual ("00000000000000000400000000000000", se.Attribute ("PublicKeyBlob"), "Copy-PublicKeyBlob");
191 Assert.AreEqual ("1.2.3.4", se.Attribute ("AssemblyVersion"), "Copy-AssemblyVersion");
197 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
198 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
199 Assert.AreEqual ("mono", snip.Name, "Name-1");
201 Assert.IsNull (snip.Name, "Name-2");
203 Assert.AreEqual ("mono", snip.Name, "Name-3");
208 [ExpectedException (typeof (ArgumentException))]
210 public void Name_Empty ()
212 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
213 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
214 snip.Name = String.Empty;
216 Assert.AreEqual (String.Empty, snip.Name, "Name");
222 [ExpectedException (typeof (NotSupportedException))]
223 public void Name_Multiple_Get ()
225 StrongNameIdentityPermission union = GetUnion ();
226 string s = union.Name;
230 public void Name_Multiple_Set ()
232 StrongNameIdentityPermission union = GetUnion ();
234 Assert.AreEqual ("oops", union.Name, "Name");
235 Assert.IsNull (union.PublicKey, "PublicKey");
236 Assert.AreEqual ("0.0", union.Version.ToString (), "Version");
241 [ExpectedException (typeof (ArgumentNullException))]
242 public void PublicKey_Null ()
244 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
245 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
246 snip.PublicKey = null;
250 [ExpectedException (typeof (NotSupportedException))]
251 public void PublicKey_Multiple_Get ()
253 StrongNameIdentityPermission union = GetUnion ();
254 StrongNamePublicKeyBlob snpkb = union.PublicKey;
258 public void PublicKey_Multiple_Set ()
260 StrongNameIdentityPermission union = GetUnion ();
261 union.PublicKey = new StrongNamePublicKeyBlob (ecma);
262 Assert.AreEqual (String.Empty, union.Name, "Name");
263 Assert.IsNotNull (union.PublicKey, "PublicKey");
264 Assert.AreEqual ("0.0", union.Version.ToString (), "Version");
268 public void Version ()
270 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
271 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
272 Assert.AreEqual ("1.2.3.4", snip.Version.ToString (), "Version-1");
274 Assert.IsNull (snip.Version, "Version-2");
275 snip.Version = new Version (1, 2, 3);
276 Assert.AreEqual ("1.2.3", snip.Version.ToString (), "Version-3");
280 [ExpectedException (typeof (NotSupportedException))]
281 public void Version_Multiple_Get ()
283 StrongNameIdentityPermission union = GetUnion ();
284 Version v = union.Version;
288 public void Version_Multiple_Set ()
290 StrongNameIdentityPermission union = GetUnion ();
291 union.Version = new Version ("1.2.3.4");
292 Assert.AreEqual (String.Empty, union.Name, "Name");
293 Assert.IsNull (union.PublicKey, "PublicKey");
294 Assert.AreEqual ("1.2.3.4", union.Version.ToString (), "Version");
298 public void Copy_NameEmpty ()
300 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
301 snip.PublicKey = new StrongNamePublicKeyBlob (ecma);
302 snip.Version = new Version ("1.2.3.4");
304 // because Name == String.Empty, which is illegal using the other constructor
305 // but (somewhat) required to copy the teo other informations
306 StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
308 Assert.IsTrue (copy.Equals (snip), "Equals");
310 Assert.AreEqual (copy.ToXml ().ToString (), snip.ToXml ().ToString (), "Equals-XML");
314 private void Compare (StrongNameIdentityPermission p1, StrongNameIdentityPermission p2, string prefix)
316 Assert.AreEqual (p1.Name, p2.Name, prefix + ".Name");
317 Assert.AreEqual (p1.PublicKey, p2.PublicKey, prefix + ".PublicKey");
318 Assert.AreEqual (p1.Version, p2.Version, prefix + ".Version");
319 Assert.IsFalse (Object.ReferenceEquals (p1, p2), "ReferenceEquals");
323 public void Intersect ()
325 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
326 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
328 StrongNameIdentityPermission intersect = (StrongNameIdentityPermission)snip.Intersect (null);
329 Assert.IsNull (intersect, "snip N null");
331 StrongNameIdentityPermission empty = new StrongNameIdentityPermission (PermissionState.None);
332 intersect = (StrongNameIdentityPermission)snip.Intersect (empty);
334 Assert.IsNull (intersect, "snip N empty");
336 Compare (empty, intersect, "snip U empty");
338 intersect = (StrongNameIdentityPermission)snip.Intersect (snip);
339 Compare (snip, intersect, "snip U snip");
341 StrongNameIdentityPermission samePk = new StrongNameIdentityPermission (blob, "novell", new Version (1, 2));
342 intersect = (StrongNameIdentityPermission)snip.Intersect (samePk);
343 Assert.IsNull (intersect, "(snip N samePk)");
344 // strange, I would have expected a SNIP with the same public key...
349 [ExpectedException (typeof (ArgumentException))]
351 public void Intersect_DifferentPermissions ()
353 StrongNameIdentityPermission a = new StrongNameIdentityPermission (PermissionState.None);
354 SecurityPermission b = new SecurityPermission (PermissionState.None);
355 Assert.IsNull (a.Intersect (b));
359 public void IsSubsetOf ()
361 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
362 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
363 Assert.IsFalse (snip.IsSubsetOf (null), "snip.IsSubsetOf (null)");
365 StrongNameIdentityPermission empty = new StrongNameIdentityPermission (PermissionState.None);
366 Assert.IsTrue (empty.IsSubsetOf (null), "empty.IsSubsetOf (null)");
370 public void IsSubsetOf_Corlib ()
372 Version fx11 = new Version (1, 0, 5000, 0);
373 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
374 StrongNameIdentityPermission granted = new StrongNameIdentityPermission (blob, "mscorlib", fx11);
376 StrongNameIdentityPermission demanded = new StrongNameIdentityPermission (blob, null, null);
377 Assert.IsTrue (demanded.IsSubsetOf (granted), "pk");
379 demanded = new StrongNameIdentityPermission (blob, "mscorlib", null);
380 Assert.IsTrue (demanded.IsSubsetOf (granted), "pk+name");
382 demanded = new StrongNameIdentityPermission (blob, null, fx11);
383 Assert.IsTrue (demanded.IsSubsetOf (granted), "pk+v");
385 demanded = new StrongNameIdentityPermission (blob, "mscorlib", fx11);
386 Assert.IsTrue (demanded.IsSubsetOf (granted), "pk+name+v");
390 [ExpectedException (typeof (ArgumentException))]
391 public void IsSubsetOf_DifferentPermissions ()
393 StrongNameIdentityPermission a = new StrongNameIdentityPermission (PermissionState.None);
394 SecurityPermission b = new SecurityPermission (PermissionState.None);
401 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
402 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
404 StrongNameIdentityPermission union = (StrongNameIdentityPermission)snip.Union (null);
405 Compare (snip, union, "snip U null");
407 StrongNameIdentityPermission empty = new StrongNameIdentityPermission (PermissionState.None);
408 union = (StrongNameIdentityPermission)snip.Union (empty);
409 Compare (snip, union, "snip U empty");
411 union = (StrongNameIdentityPermission)snip.Union (snip);
412 Compare (snip, union, "snip U snip");
414 // note: can't be tested with PermissionState.Unrestricted
416 StrongNameIdentityPermission samePk = new StrongNameIdentityPermission (blob, null, null);
417 union = (StrongNameIdentityPermission)snip.Union (samePk);
419 // can't compare the properties with multiple entries
420 Compare (snip, union, "snip U samePk");
422 Assert.IsTrue (snip.IsSubsetOf (union), "snip.IsSubsetOf (union)");
424 union = (StrongNameIdentityPermission)samePk.Union (snip);
426 // can't compare the properties with multiple entries
427 Compare (snip, union, "samePk U snip");
429 Assert.IsTrue (samePk.IsSubsetOf (union), "snip.IsSubsetOf (union)");
433 public void Union_DifferentPk ()
435 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
436 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
437 StrongNamePublicKeyBlob blob2 = new StrongNamePublicKeyBlob (new byte [16]);
438 StrongNameIdentityPermission diffPk = new StrongNameIdentityPermission (blob2, "mono", new Version (1, 2, 3, 4));
439 StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffPk);
441 Assert.IsNotNull (result, "DifferentPk");
442 // new XML format is used to contain more than one site
443 SecurityElement se = result.ToXml ();
444 Assert.AreEqual (2, se.Children.Count, "Childs");
445 Assert.AreEqual ("00000000000000000400000000000000", (se.Children [0] as SecurityElement).Attribute ("PublicKeyBlob"), "Blob#1");
446 Assert.AreEqual ("00000000000000000000000000000000", (se.Children [1] as SecurityElement).Attribute ("PublicKeyBlob"), "Blob#2");
447 // strangely it is still versioned as 'version="1"'.
448 Assert.AreEqual ("1", se.Attribute ("version"), "Version");
450 Assert.IsNull (result, "DifferentPk");
455 public void Union_SamePublicKey_DifferentName ()
457 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
458 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
459 StrongNameIdentityPermission diffName = new StrongNameIdentityPermission (blob, "novell", null);
460 StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffName);
462 Assert.IsNotNull (result, "DifferentName");
463 // new XML format is used to contain more than one site
464 SecurityElement se = result.ToXml ();
465 Assert.AreEqual (2, se.Children.Count, "Childs");
466 Assert.AreEqual ("mono", (se.Children [0] as SecurityElement).Attribute ("Name"), "Name#1");
467 Assert.AreEqual ("novell", (se.Children [1] as SecurityElement).Attribute ("Name"), "Name#2");
468 // strangely it is still versioned as 'version="1"'.
469 Assert.AreEqual ("1", se.Attribute ("version"), "Version");
471 Assert.IsNull (result, "DifferentName");
476 public void Union_SamePublicKey_DifferentVersion ()
478 StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
479 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
480 StrongNameIdentityPermission diffVersion = new StrongNameIdentityPermission (blob, null, new Version (1, 2));
481 StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffVersion);
483 Assert.IsNotNull (result, "DifferentVersion");
484 // new XML format is used to contain more than one site
485 SecurityElement se = result.ToXml ();
486 Assert.AreEqual (2, se.Children.Count, "Childs");
487 Assert.AreEqual ("1.2.3.4", (se.Children [0] as SecurityElement).Attribute ("AssemblyVersion"), "AssemblyVersion#1");
488 Assert.AreEqual ("1.2", (se.Children [1] as SecurityElement).Attribute ("AssemblyVersion"), "AssemblyVersion#2");
489 // strangely it is still versioned as 'version="1"'.
490 Assert.AreEqual ("1", se.Attribute ("version"), "Version");
492 Assert.IsNull (result, "DifferentVersion");
497 [ExpectedException (typeof (ArgumentException))]
498 public void Union_DifferentPermissions ()
500 StrongNameIdentityPermission a = new StrongNameIdentityPermission (PermissionState.None);
501 SecurityPermission b = new SecurityPermission (PermissionState.None);
506 [ExpectedException (typeof (ArgumentNullException))]
507 public void FromXml_Null ()
509 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
514 [ExpectedException (typeof (ArgumentException))]
515 public void FromXml_WrongTag ()
517 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
518 SecurityElement se = snip.ToXml ();
524 [ExpectedException (typeof (ArgumentException))]
525 public void FromXml_WrongTagCase ()
527 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
528 SecurityElement se = snip.ToXml ();
529 se.Tag = "IPERMISSION"; // instead of IPermission
534 public void FromXml_WrongClass ()
536 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
537 SecurityElement se = snip.ToXml ();
539 SecurityElement w = new SecurityElement (se.Tag);
540 w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
541 w.AddAttribute ("version", se.Attribute ("version"));
543 // doesn't care of the class name at that stage
544 // anyway the class has already be created so...
548 public void FromXml_NoClass ()
550 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
551 SecurityElement se = snip.ToXml ();
553 SecurityElement w = new SecurityElement (se.Tag);
554 w.AddAttribute ("version", se.Attribute ("version"));
556 // doesn't even care of the class attribute presence
560 [ExpectedException (typeof (ArgumentException))]
561 public void FromXml_WrongVersion ()
563 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
564 SecurityElement se = snip.ToXml ();
565 se.Attributes.Remove ("version");
566 se.Attributes.Add ("version", "2");
571 public void FromXml_NoVersion ()
573 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
574 SecurityElement se = snip.ToXml ();
576 SecurityElement w = new SecurityElement (se.Tag);
577 w.AddAttribute ("class", se.Attribute ("class"));
582 public void FromXml_NameEmpty ()
584 StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
585 SecurityElement se = snip.ToXml ();
588 snip.PublicKey = new StrongNamePublicKeyBlob (ecma);
589 snip.Version = new Version ("1.2.3.4");