New test.
[mono.git] / mcs / class / Mainsoft.Web / Tests / Mainsoft.Web.Security / MembershipTests.cs
1 //\r
2 // Mainsoft.Web.Security.Tests.DerbyMembershipProviderTests\r
3 //\r
4 // Authors:\r
5 //      Vladimir Krasnov (vladimirk@mainsoft.com)\r
6 //\r
7 // (C) 2006 Mainsoft\r
8 //\r
9 //\r
10 // Permission is hereby granted, free of charge, to any person obtaining\r
11 // a copy of this software and associated documentation files (the\r
12 // "Software"), to deal in the Software without restriction, including\r
13 // without limitation the rights to use, copy, modify, merge, publish,\r
14 // distribute, sublicense, and/or sell copies of the Software, and to\r
15 // permit persons to whom the Software is furnished to do so, subject to\r
16 // the following conditions:\r
17 // \r
18 // The above copyright notice and this permission notice shall be\r
19 // included in all copies or substantial portions of the Software.\r
20 // \r
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
28 //\r
29 \r
30 #if NET_2_0\r
31 \r
32 using System;\r
33 using System.IO;\r
34 using System.Web;\r
35 using System.Web.UI;\r
36 using System.Web.UI.WebControls;\r
37 using System.Web.Configuration;\r
38 using System.Web.Security;\r
39 using System.Data;\r
40 using System.Data.OleDb;\r
41 using System.Data.Common;\r
42 using System.Collections.Generic;\r
43 using System.Collections.Specialized;\r
44 using System.Text;\r
45 using Mainsoft.Web.Security;\r
46 using NUnit.Framework;
47  \r
48 \r
49 namespace Mainsoft.Web.Security.Tests\r
50 {\r
51         [TestFixture] \r
52         public class DerbyMembershipProviderTests\r
53         {\r
54                 public void Init ()\r
55                 {\r
56                         InitDB ();\r
57                 }\r
58                 public void InitDB ()\r
59                 {\r
60                         if (Directory.Exists ("AspDB"))\r
61                                 Directory.Delete ("AspDB", true);\r
62                 }\r
63                 public void Finish ()\r
64                 {\r
65                         ReleaseDB ();\r
66                 }\r
67 \r
68                 public void ReleaseDB ()\r
69                 {\r
70                 }\r
71                 private MembershipProvider CreateMembershipProvider ()\r
72                 {\r
73                         NameValueCollection nvc = new NameValueCollection ();\r
74                         nvc.Add ("applicationName", "testapp");\r
75                         nvc.Add ("connectionStringName", "derby");\r
76                         nvc.Add ("requiresUniqueEmail", "false");\r
77                         nvc.Add ("enablePasswordRetrieval", "true");\r
78                         nvc.Add ("passwordFormat", "Clear");\r
79 \r
80                         WebConfigurationManager.ConnectionStrings.Add (new System.Configuration.ConnectionStringSettings ("derby", "JdbcDriverClassName=org.apache.derby.jdbc.EmbeddedDriver;JdbcURL=jdbc:derby:AspDB;create=true", "System.Data.OleDb"));\r
81                         DerbyMembershipProvider p = new DerbyMembershipProvider ();\r
82                         p.Initialize ("DerbyMembershipProvider", nvc);\r
83 \r
84                         return p;\r
85                 }\r
86 \r
87                 [Test] \r
88                 public void CreateUserTest ()\r
89                 {\r
90                         MembershipProvider p = CreateMembershipProvider ();\r
91                         MembershipCreateStatus st;\r
92                         MembershipUser u = p.CreateUser("username", "123123!", "username@email.com", "q", "a", true, null, out st);\r
93                         Assert.IsNotNull (u);\r
94                         Assert.AreEqual ("username", u.UserName);\r
95                 }\r
96 \r
97                 [Test] \r
98                 public void ChangePasswordTest ()\r
99                 {\r
100                         MembershipProvider p = CreateMembershipProvider ();\r
101                         MembershipCreateStatus st;\r
102                         MembershipUser u = p.CreateUser("userpwd", "123123!", "username2@email.com", "q", "a", true, null, out st);\r
103                         bool b = p.ChangePassword ("userpwd", "123123!", "123123!123");\r
104                         Assert.IsTrue (b);\r
105 \r
106                         b = p.ChangePassword ("userpwd", "123123!", "123123!123");\r
107                         Assert.IsFalse (b);\r
108                 }\r
109 \r
110                 [Test] \r
111                 public void ChangePasswordQuestionAndAnswerTest ()\r
112                 {\r
113                         MembershipProvider p = CreateMembershipProvider ();\r
114                         MembershipCreateStatus st;\r
115                         MembershipUser u = p.CreateUser("userpwd2", "123123!", "username3@email.com", "q", "a", true, null, out st);\r
116 \r
117                         bool b = p.ChangePasswordQuestionAndAnswer ("userpwd2", "123123!", "q2", "a2");\r
118                         Assert.IsTrue (b);\r
119                         b = p.ChangePasswordQuestionAndAnswer ("userpwd2", "123123!123", "q2", "a2");\r
120                         Assert.IsFalse (b);\r
121                 }\r
122 \r
123                 [Test] \r
124                 public void DeleteUserTest ()\r
125                 {\r
126                         MembershipProvider p = CreateMembershipProvider ();\r
127                         MembershipCreateStatus st;\r
128                         p.CreateUser ("user3", "123123!", "username4@email.com", "q", "a", true, null, out st);\r
129 \r
130                         bool b = p.DeleteUser ("user3", true);\r
131                         Assert.IsTrue (b);\r
132 \r
133                         MembershipUser u = p.GetUser ("user2", false);\r
134                         Assert.IsNotNull (u);\r
135                 }\r
136 \r
137                 [Test] \r
138                 public void GetUserNameByEmailTest ()\r
139                 {\r
140                         MembershipProvider p = CreateMembershipProvider ();\r
141                         string u = p.GetUserNameByEmail ("username@email.com");\r
142                         Assert.AreEqual ("username", u);\r
143                 }\r
144 \r
145                 [Test] \r
146                 public void ValidateUserTest ()\r
147                 {\r
148                         MembershipProvider p = CreateMembershipProvider ();\r
149                         bool b = p.ValidateUser ("username", "123");\r
150                         Assert.IsFalse (b);\r
151                         b = p.ValidateUser ("username", "123");\r
152                         Assert.IsFalse (b);\r
153                         b = p.ValidateUser ("username", "123");\r
154                         Assert.IsFalse (b);\r
155                         b = p.ValidateUser ("username", "123");\r
156                         Assert.IsFalse (b);\r
157                         b = p.ValidateUser ("username", "123");\r
158                         Assert.IsFalse (b);\r
159                         b = p.ValidateUser ("username", "123");\r
160                         Assert.IsFalse (b);\r
161                         b = p.ValidateUser ("username", "123");\r
162                         Assert.IsFalse (b);\r
163                         b = p.ValidateUser ("username", "123");\r
164                         Assert.IsFalse (b);\r
165                         b = p.UnlockUser ("username");\r
166                         Assert.IsFalse (b);\r
167                 }\r
168 \r
169                 [Test] \r
170                 public void UpdateUserTest ()\r
171                 {\r
172                         MembershipProvider p = CreateMembershipProvider ();\r
173                         MembershipCreateStatus st;\r
174                         MembershipUser u = p.CreateUser ("user5", "123123!", "user5@email.com", "q", "a", true, null, out st);\r
175                         \r
176                         u.Comment = "comment2";\r
177                         u.Email = "email2";\r
178                         u.IsApproved = false;\r
179                 \r
180                         p.UpdateUser (u);\r
181                         MembershipUser u2 = p.GetUser (u.ProviderUserKey, false);\r
182 \r
183                         Assert.AreEqual (u.Comment, u2.Comment);\r
184                         Assert.AreEqual (u.Email, u2.Email);\r
185                         Assert.AreEqual (u.IsApproved, u2.IsApproved);\r
186                 }\r
187 \r
188                 [Test] \r
189                 public void GetPasswordTest ()\r
190                 {\r
191                         MembershipProvider p = CreateMembershipProvider ();\r
192                         MembershipCreateStatus st;\r
193                         p.CreateUser ("user7", "123123!", "user5@email.com", "q", "a", true, null, out st);\r
194                         string pass = p.GetPassword ("user7", "a");\r
195                         Assert.AreEqual ("123123!", pass);\r
196                 }\r
197 \r
198                 [Test] \r
199                 public void FindUsersByName ()\r
200                 {\r
201                         MembershipProvider p = CreateMembershipProvider ();\r
202                         MembershipCreateStatus st;\r
203                         p.CreateUser ("user_a", "123123!", "user_a@email.com", "q", "a", true, null, out st);\r
204                         p.CreateUser ("user_b", "123123!", "user_b@email.com", "q", "a", true, null, out st);\r
205                         p.CreateUser ("user_c", "123123!", "user_c@email.com", "q", "a", true, null, out st);\r
206                         p.CreateUser ("user_d", "123123!", "user_d@email.com", "q", "a", true, null, out st);\r
207                         p.CreateUser ("user_e", "123123!", "user_e@email.com", "q", "a", true, null, out st);\r
208                         int tr = 0;\r
209                         MembershipUserCollection u = p.FindUsersByName ("%user_%", 0, 10, out tr);\r
210                         Assert.AreEqual (5, tr);\r
211                         Assert.AreEqual (5, u.Count);\r
212                 }\r
213 \r
214                 [Test] \r
215                 public void FindUsersByEmail ()\r
216                 {\r
217                         MembershipProvider p = CreateMembershipProvider ();\r
218                         MembershipCreateStatus st;\r
219                         p.CreateUser ("user_7a", "123123!", "user_7a@email.com", "q", "a", true, null, out st);\r
220                         p.CreateUser ("user_7b", "123123!", "user_7b@email.com", "q", "a", true, null, out st);\r
221                         p.CreateUser ("user_7c", "123123!", "user_7c@email.com", "q", "a", true, null, out st);\r
222                         p.CreateUser ("user_7d", "123123!", "user_7d@email.com", "q", "a", true, null, out st);\r
223                         p.CreateUser ("user_7e", "123123!", "user_7e@email.com", "q", "a", true, null, out st);\r
224                         int tr = 0;\r
225                         MembershipUserCollection u = p.FindUsersByEmail ("%user_7%", 0, 10, out tr);\r
226                         Assert.AreEqual (5, tr);\r
227                         Assert.AreEqual (5, u.Count);\r
228                 }\r
229         }\r
230 }\r
231 \r
232 #endif