Incorrect warning message on thread pool startup in full AOT:ed Windows build.
[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
31 using NUnit.Framework;
32
33 using System;
34 using System.Security.Cryptography;
35
36 namespace MonoTests.System.Security.Cryptography {
37
38         [TestFixture]
39
40         public class OidTest {
41
42                 static string invalidOid = "1.0";
43                 static string invalidName = "friendlyName";
44                 static string validOid = "1.2.840.113549.1.1.1";
45                 static string validName = "RSA";
46
47                 [Test]
48                 public void ConstructorEmpty () 
49                 {
50                         Oid o = new Oid ();
51                         Assert.IsNull (o.FriendlyName, "FriendlyName");
52                         Assert.IsNull (o.Value, "Value");
53                 }
54
55                 [Test]
56                 public void ConstructorValidString () 
57                 {
58                         Oid o = new Oid (validOid);
59                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName");
60                         Assert.AreEqual (validOid, o.Value, "Value");
61                 }
62
63                 [Test]
64                 public void ConstructorInvalidString ()
65                 {
66                         Oid o = new Oid (invalidOid);
67                         Assert.IsNull (o.FriendlyName, "FriendlyName");
68                         Assert.AreEqual (invalidOid, o.Value, "Value");
69                 }
70
71                 [Test]
72                 [ExpectedException (typeof (ArgumentNullException))]
73                 public void ConstructorNullString ()
74                 {
75                         string oid = null; // do not confuse compiler
76                         Oid o = new Oid (oid);
77                 }
78
79                 [Test]
80                 public void ConstructorStringString ()
81                 {
82                         Oid o = new Oid (validOid, invalidName);
83                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName");
84                         Assert.AreEqual (validOid, o.Value, "Value");
85                 }
86
87                 [Test]
88                 //BUG [ExpectedException (typeof (ArgumentNullException))]
89                 public void ConstructorStringNullString () 
90                 {
91                         Oid o = new Oid (null, validName);
92                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName");
93                         Assert.IsNull (o.Value, "Value");
94                 }
95
96                 [Test]
97                 public void ConstructorStringStringNull () 
98                 {
99                         Oid o = new Oid (validOid, null);
100                         Assert.IsNull (o.FriendlyName, "FriendlyName");
101                         Assert.AreEqual (validOid, o.Value, "Value");
102                 }
103
104                 [Test]
105                 public void ConstructorOid ()
106                 {
107                         Oid o = new Oid (validOid, invalidName);
108                         Oid o2 = new Oid (o);
109                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName==invalid");
110                         Assert.AreEqual (o.FriendlyName, o2.FriendlyName, "FriendlyName");
111                         Assert.AreEqual (o.Value, o2.Value, "Value");
112                 }
113
114                 [Test]
115                 [ExpectedException (typeof (ArgumentNullException))]
116                 public void ConstructorOidNull () 
117                 {
118                         Oid onull = null; // do not confuse compiler
119                         Oid o = new Oid (onull);
120                 }
121
122                 [Test]
123                 public void FriendlyName () 
124                 {
125                         Oid o = new Oid (invalidOid, invalidName);
126                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName-1");
127                         Assert.AreEqual (invalidOid, o.Value, "Value-1");
128                         o.FriendlyName = validName;
129                         Assert.AreEqual (validName, o.FriendlyName, "FriendlyName-2");
130                         Assert.AreEqual (validOid, o.Value, "Value-2"); // surprise!
131                 }
132
133                 [Test]
134                 public void FriendlyNameNull ()
135                 {
136                         Oid o = new Oid (validOid, invalidName);
137                         Assert.AreEqual (invalidName, o.FriendlyName, "FriendlyName");
138                         o.FriendlyName = null;
139                         Assert.IsNull (o.FriendlyName, "FriendlyName-Null");
140                 }
141
142                 [Test]
143                 public void Value () 
144                 {
145                         Oid o = new Oid (validOid, invalidName);
146                         Assert.AreEqual (validOid, o.Value, "Value-1");
147                         o.Value = invalidName;
148                         Assert.AreEqual (invalidName, o.Value, "Value-2");
149                 }
150
151                 [Test]
152                 public void ValueNull () 
153                 {
154                         Oid o = new Oid (validOid, invalidName);
155                         Assert.AreEqual (validOid, o.Value, "Value");
156                         o.Value = null;
157                         Assert.IsNull (o.Value, "Value-Null");
158                 }
159
160                 [Test]
161                 public void WellKnownOid () 
162                 {
163                         Oid o = new Oid ("1.2.840.113549.1.1.1");
164                         Assert.AreEqual ("1.2.840.113549.1.1.1", o.Value, "RSA Value");
165                         Assert.AreEqual ("RSA", o.FriendlyName, "RSA FriendlyName");
166                         o = new Oid ();
167                         o.FriendlyName = "RSA";
168                         Assert.AreEqual (o.Value, "1.2.840.113549.1.1.1", "RSA Value from FriendlyName");
169
170                         o = new Oid ("1.2.840.113549.1.7.1");
171                         Assert.AreEqual ("1.2.840.113549.1.7.1", o.Value, "PKCS 7 Data Value");
172                         // FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
173                         //Assert.AreEqual ("PKCS 7 Data", o.FriendlyName, "PKCS 7 Data FriendlyName");
174
175                         o = new Oid ("1.2.840.113549.1.9.5");
176                         Assert.AreEqual ("1.2.840.113549.1.9.5", o.Value, "Signing Time Value");
177                         // FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
178                         //Assert.AreEqual ("Signing Time", o.FriendlyName, "Signing Time FriendlyName");
179
180                         o = new Oid ("1.2.840.113549.3.7");
181                         Assert.AreEqual ("1.2.840.113549.3.7", o.Value, "3des Value");
182                         Assert.AreEqual ("3des", o.FriendlyName, "3des FriendlyName");
183                         o = new Oid ();
184                         o.FriendlyName = "3des";
185                         Assert.AreEqual (o.Value, "1.2.840.113549.3.7", "3des Value from FriendlyName");
186
187                         o = new Oid ("2.16.840.1.101.3.4.1.2");
188                         Assert.AreEqual ("2.16.840.1.101.3.4.1.2", o.Value, "aes128 Value");
189                         Assert.AreEqual ("aes128", o.FriendlyName, "aes128 FriendlyName");
190                         o = new Oid ();
191                         o.FriendlyName = "aes128";
192                         Assert.AreEqual (o.Value, "2.16.840.1.101.3.4.1.2", "aes123 Value from FriendlyName");
193
194                         o = new Oid ("2.16.840.1.101.3.4.1.42");
195                         Assert.AreEqual ("2.16.840.1.101.3.4.1.42", o.Value, "aes256 Value");
196                         Assert.AreEqual ("aes256", o.FriendlyName, "aes256 FriendlyName");
197                         o = new Oid ();
198                         o.FriendlyName = "aes256";
199                         Assert.AreEqual (o.Value, "2.16.840.1.101.3.4.1.42", "aes256 Value from FriendlyName");
200
201                         o = new Oid ("2.16.840.1.101.3.4.2.1");
202                         Assert.AreEqual ("2.16.840.1.101.3.4.2.1", o.Value, "sha256 Value");
203                         Assert.AreEqual ("sha256", o.FriendlyName, "sha256 FriendlyName");
204                         o = new Oid ();
205                         o.FriendlyName = "sha256";
206                         Assert.AreEqual (o.Value, "2.16.840.1.101.3.4.2.1", "sha256 Value from FriendlyName");
207
208                         o = new Oid ("2.16.840.1.101.3.4.2.3");
209                         Assert.AreEqual ("2.16.840.1.101.3.4.2.3", o.Value, "sha512 Value");
210                         Assert.AreEqual ("sha512", o.FriendlyName, "sha512 FriendlyName");
211                         o = new Oid ();
212                         o.FriendlyName = "sha512";
213                         Assert.AreEqual (o.Value, "2.16.840.1.101.3.4.2.3", "sha512 Value from FriendlyName");
214
215                         // TODO: add other well known oid as we find them
216                 }
217         }
218 }
219