Merge pull request #1237 from esdrubal/xdocument
[mono.git] / mcs / class / System / Test / System.Security.Cryptography / OidTest.cs
1 //
2 // OidTest.cs - NUnit tests for Oid
3 //
4 // Author:
5 //      Sebastien Pouliot  <sebastien@ximian.com>
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
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.
28 //
29
30 #if NET_2_0
31
32 using NUnit.Framework;
33
34 using System;
35 using System.Security.Cryptography;
36
37 namespace MonoTests.System.Security.Cryptography {
38
39         [TestFixture]
40
41         public class OidTest {
42
43                 static string invalidOid = "1.0";
44                 static string invalidName = "friendlyName";
45                 static string validOid = "1.2.840.113549.1.1.1";
46                 static string validName = "RSA";
47
48                 [Test]
49                 public void ConstructorEmpty () 
50                 {
51                         Oid o = new Oid ();
52                         Assert.IsNull (o.FriendlyName, "FriendlyName");
53                         Assert.IsNull (o.Value, "Value");
54                 }
55
56                 [Test]
57                 public void ConstructorValidString () 
58                 {
59                         Oid o = new Oid (validOid);
60                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName");
61                         Assert.AreEqual (validOid, o.Value, "Value");
62                 }
63
64                 [Test]
65                 public void ConstructorInvalidString ()
66                 {
67                         Oid o = new Oid (invalidOid);
68                         Assert.IsNull (o.FriendlyName, "FriendlyName");
69                         Assert.AreEqual (invalidOid, o.Value, "Value");
70                 }
71
72                 [Test]
73                 [ExpectedException (typeof (ArgumentNullException))]
74                 public void ConstructorNullString ()
75                 {
76                         string oid = null; // do not confuse compiler
77                         Oid o = new Oid (oid);
78                 }
79
80                 [Test]
81                 public void ConstructorStringString ()
82                 {
83                         Oid o = new Oid (validOid, invalidName);
84                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName");
85                         Assert.AreEqual (validOid, o.Value, "Value");
86                 }
87
88                 [Test]
89                 //BUG [ExpectedException (typeof (ArgumentNullException))]
90                 public void ConstructorStringNullString () 
91                 {
92                         Oid o = new Oid (null, validName);
93                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName");
94                         Assert.IsNull (o.Value, "Value");
95                 }
96
97                 [Test]
98                 public void ConstructorStringStringNull () 
99                 {
100                         Oid o = new Oid (validOid, null);
101                         Assert.IsNull (o.FriendlyName, "FriendlyName");
102                         Assert.AreEqual (validOid, o.Value, "Value");
103                 }
104
105                 [Test]
106                 public void ConstructorOid ()
107                 {
108                         Oid o = new Oid (validOid, invalidName);
109                         Oid o2 = new Oid (o);
110                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName==invalid");
111                         Assert.AreEqual (o.FriendlyName, o2.FriendlyName, "FriendlyName");
112                         Assert.AreEqual (o.Value, o2.Value, "Value");
113                 }
114
115                 [Test]
116                 [ExpectedException (typeof (ArgumentNullException))]
117                 public void ConstructorOidNull () 
118                 {
119                         Oid onull = null; // do not confuse compiler
120                         Oid o = new Oid (onull);
121                 }
122
123                 [Test]
124                 public void FriendlyName () 
125                 {
126                         Oid o = new Oid (invalidOid, invalidName);
127                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName-1");
128                         Assert.AreEqual (invalidOid, o.Value, "Value-1");
129                         o.FriendlyName = validName;
130                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName-2");
131                         Assert.AreEqual (validOid, o.Value, "Value-2"); // surprise!
132                 }
133
134                 [Test]
135                 public void FriendlyNameNull ()
136                 {
137                         Oid o = new Oid (validOid, invalidName);
138                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName");
139                         o.FriendlyName = null;
140                         Assert.IsNull (o.FriendlyName, "FriendlyName-Null");
141                 }
142
143                 [Test]
144                 public void Value () 
145                 {
146                         Oid o = new Oid (validOid, invalidName);
147                         Assert.AreEqual (validOid, o.Value, "Value-1");
148                         o.Value = invalidName;
149                         Assert.AreEqual (invalidName, o.Value, "Value-2");
150                 }
151
152                 [Test]
153                 public void ValueNull () 
154                 {
155                         Oid o = new Oid (validOid, invalidName);
156                         Assert.AreEqual (validOid, o.Value, "Value");
157                         o.Value = null;
158                         Assert.IsNull (o.Value, "Value-Null");
159                 }
160
161                 [Test]
162                 public void WellKnownOid () 
163                 {
164                         Oid o = new Oid ("1.2.840.113549.1.1.1");
165                         Assert.AreEqual ("1.2.840.113549.1.1.1", o.Value, "RSA Value");
166                         Assert.AreEqual ("RSA", o.FriendlyName, "RSA FriendlyName");
167
168                         o = new Oid ("1.2.840.113549.1.7.1");
169                         Assert.AreEqual ("1.2.840.113549.1.7.1", o.Value, "PKCS 7 Data Value");
170                         // FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
171                         //Assert.AreEqual ("PKCS 7 Data", o.FriendlyName, "PKCS 7 Data FriendlyName");
172
173                         o = new Oid ("1.2.840.113549.1.9.5");
174                         Assert.AreEqual ("1.2.840.113549.1.9.5", o.Value, "Signing Time Value");
175                         // FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
176                         //Assert.AreEqual ("Signing Time", o.FriendlyName, "Signing Time FriendlyName");
177
178                         o = new Oid ("1.2.840.113549.3.7");
179                         Assert.AreEqual ("1.2.840.113549.3.7", o.Value, "3des Value");
180                         Assert.AreEqual ("3des", o.FriendlyName, "3des FriendlyName");
181
182                         // TODO: add other well known oid as we find them
183                 }
184         }
185 }
186
187 #endif