Index: /branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi	(revision 3943)
@@ -4,5 +4,17 @@
     <Description>just first test for HeuristicLabUser</Description>
     <TestLinks>
+      <TestLink id="537e2ce5-1968-64c1-932a-0aff7f0ea564" name="ToStringTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="ecaca427-086c-9493-06af-9887f2d8184f" name="PasswordAnswerTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="c94ce8a9-0db1-d5f7-0d29-a5b40ed93b8f" name="ChangePasswordTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="5c113ee8-ae71-cf76-5bf1-608203739eeb" name="HeuristicLabUserConstructorTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="b6e6a789-8f4e-329c-38ef-d9e19bd14e55" name="PasswordTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
       <TestLink id="def90666-533d-bda5-8a29-fde7f290333f" name="createDBTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="4452b5de-b1d7-2a87-17cf-5bcef24a98ba" name="modifyUserTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="ce8163d5-a5c1-2a43-04b4-3afe6a0140c3" name="ChangePasswordQuestionAndAnswerTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="5a5bdb37-43b0-c6f1-1b5b-7df4fecd3b8f" name="PasswordQuestionTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="799ee04a-e351-af4d-61c5-344e29aaace3" name="UserNameTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="23131c03-ebe9-6d64-7d73-52214a9dac7d" name="EmailTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="e3413b57-3027-8e7d-3f25-67842a5c6986" name="CommentTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
+      <TestLink id="2b5d5229-e68f-6a88-fb76-73fa5d493613" name="LastPasswordChangedDateTest" storage="unittests\bin\debug\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel,   PublicKeyToken=b03f5f7f11d50a3a" />
     </TestLinks>
   </TestList>
Index: /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml	(revision 3943)
@@ -4,32 +4,32 @@
     <Type Name="HeuristicLabUser">
       <Column Name="id" Member="ID" Storage="_id" Type="System.Int64" IsReadOnly="true" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
-      <Column Name="UserName" Modifier="Override" Type="System.String" IsReadOnly="true" CanBeNull="false" />
+      <Column Name="UserName" Modifier="Virtual" Type="System.String" IsReadOnly="true" CanBeNull="false" />
       <Column Name="Password" Type="System.String" CanBeNull="false" />
-      <Column Name="LastPasswordChangedDate" Modifier="Override" Type="System.DateTime" IsReadOnly="true" CanBeNull="false" />
-      <Column Name="PasswordQuestion" Modifier="Override" Type="System.String" IsReadOnly="true" CanBeNull="false" />
+      <Column Name="LastPasswordChangedDate" Modifier="Virtual" Type="System.DateTime" IsReadOnly="true" CanBeNull="false" />
+      <Column Name="PasswordQuestion" Modifier="Virtual" Type="System.String" IsReadOnly="true" CanBeNull="false" />
       <Column Name="PasswordAnswer" Type="System.String" CanBeNull="false" />
-      <Column Name="Email" Modifier="Override" Type="System.String" CanBeNull="false" />
-      <Column Name="Comment" Modifier="Override" Type="System.String" CanBeNull="false" />
+      <Column Name="Email" Modifier="Virtual" Type="System.String" CanBeNull="false" />
+      <Column Name="Comment" Modifier="Virtual" Type="System.String" CanBeNull="false" />
       <Association Name="HeuristicLabUser_HeuristicLabUserRole" Member="HeuristicLabUserRole" ThisKey="ID" OtherKey="HeuristicLabUserID" Type="HeuristicLabUserRole" />
     </Type>
   </Table>
   <Table Name="" Member="HeuristicLabAbstractRoles">
-    <Type Name="HeuristicLabAbstractRole" IsInheritanceDefault="true" Modifier="Abstract">
+    <Type Name="HeuristicLabAbstractRole" Modifier="Abstract">
       <Column Name="ID" Type="System.Int64" IsReadOnly="true" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
       <Column Name="roleName" Member="RoleName" Storage="_roleName" Type="System.String" CanBeNull="false" />
       <Column Name="parentRoleID" Member="ParentRoleID" Storage="_parentRoleID" Type="System.Int64" CanBeNull="false" />
-      <Column Member="RoleType" Type="System.String" IsReadOnly="true" CanBeNull="false" UpdateCheck="Always" IsDiscriminator="true" />
+      <Column Name="RoleType" Type="System.String" IsReadOnly="true" CanBeNull="false" IsDiscriminator="true" />
+      <Association Name="HeuristicLabAbstractRole_HeuristicLabAbstractRole" Member="HeuristicLabAbstractRole2" ThisKey="ID" OtherKey="ParentRoleID" Type="HeuristicLabAbstractRole" />
       <Association Name="HeuristicLabAbstractRole_HeuristicLabUserRole" Member="HeuristicLabUserRole" ThisKey="ID" OtherKey="HeuristicLabRoleID" Type="HeuristicLabUserRole" />
-      <Association Name="HeuristicLabAbstractRole_HeuristicLabAbstractRole" Member="HeuristicLabAbstractRole2" ThisKey="ID" OtherKey="ParentRoleID" Type="HeuristicLabAbstractRole" />
       <Association Name="HeuristicLabAbstractRole_HeuristicLabAbstractRole" Member="HeuristicLabAbstractRole1" ThisKey="ParentRoleID" OtherKey="ID" Type="HeuristicLabAbstractRole" IsForeignKey="true" />
       <Type Name="HeuristicLabPermissionRole" InheritanceCode="permission" />
-      <Type Name="HeuristicLabRole" InheritanceCode="role" />
+      <Type Name="HeuristicLabRole" InheritanceCode="role" IsInheritanceDefault="true" />
     </Type>
   </Table>
   <Table Name="" Member="HeuristicLabUserRole">
     <Type Name="HeuristicLabUserRole">
-      <Column Member="ID" Type="System.Int64" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
-      <Column Member="HeuristicLabUserID" Type="System.Int64" CanBeNull="false" />
-      <Column Member="HeuristicLabRoleID" Type="System.Int64" CanBeNull="false" />
+      <Column Name="ID" Type="System.Int64" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="HeuristicLabUserID" Type="System.Int64" CanBeNull="false" />
+      <Column Name="HeuristicLabRoleID" Type="System.Int64" CanBeNull="false" />
       <Association Name="HeuristicLabUser_HeuristicLabUserRole" Member="HeuristicLabUser" ThisKey="HeuristicLabUserID" OtherKey="ID" Type="HeuristicLabUser" IsForeignKey="true" />
       <Association Name="HeuristicLabAbstractRole_HeuristicLabUserRole" Member="HeuristicLabAbstractRole" ThisKey="HeuristicLabRoleID" OtherKey="ID" Type="HeuristicLabAbstractRole" IsForeignKey="true" />
Index: /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml.layout
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml.layout	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.dbml.layout	(revision 3943)
@@ -27,5 +27,5 @@
       </nestedChildShapes>
     </classShape>
-    <inheritanceConnector edgePoints="[(5.5 : 2.22679768880208); (6.875 : 2.22679768880208)]" fixedFrom="Algorithm" fixedTo="Algorithm" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
+    <inheritanceConnector edgePoints="[(5.5 : 2.22679768880208); (6.875 : 2.22679768880208)]" fixedFrom="NotFixed" fixedTo="NotFixed" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
       <nodes>
         <classShapeMoniker Id="c7373ccc-61b3-43fb-88fa-14149d69bee9" />
@@ -33,5 +33,5 @@
       </nodes>
     </inheritanceConnector>
-    <inheritanceConnector edgePoints="[(5.5 : 1.21719482421875); (6.875 : 1.21719482421875)]" fixedFrom="Algorithm" fixedTo="Algorithm" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
+    <inheritanceConnector edgePoints="[(5.5 : 1.21719482421875); (6.875 : 1.21719482421875)]" fixedFrom="NotFixed" fixedTo="NotFixed" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
       <nodes>
         <classShapeMoniker Id="c7373ccc-61b3-43fb-88fa-14149d69bee9" />
@@ -45,5 +45,5 @@
       </nestedChildShapes>
     </classShape>
-    <associationConnector edgePoints="[(1.5625 : 2.97280110677083); (1.5625 : 3.625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(1.5625 : 2.97280110677083); (1.5625 : 3.625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/DataClassesDataContext/HeuristicLabUser/HeuristicLabUser_HeuristicLabUserRole" />
       <nodes>
@@ -52,5 +52,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(3.9687475 : 2.45359537760417); (3.9687475 : 4.35564697265625); (2.625 : 4.35564697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(3.9687475 : 2.45359537760417); (3.9687475 : 4.35564697265625); (2.625 : 4.35564697265625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/DataClassesDataContext/HeuristicLabAbstractRole/HeuristicLabAbstractRole_HeuristicLabUserRole" />
       <nodes>
Index: /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.designer.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.designer.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DataClasses.designer.cs	(revision 3943)
@@ -2,9 +2,9 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
-//     Dieser Code wurde von einem Tool generiert.
-//     Laufzeitversion:2.0.50727.4927
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4927
 //
-//     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-//     der Code erneut generiert wird.
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
 // </auto-generated>
 //------------------------------------------------------------------------------
@@ -144,5 +144,5 @@
 		
 		[Column(Storage="_UserName", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
-		public override string UserName
+		public virtual string UserName
 		{
 			get
@@ -173,5 +173,5 @@
 		
 		[Column(Storage="_LastPasswordChangedDate", UpdateCheck=UpdateCheck.Never)]
-		public override System.DateTime LastPasswordChangedDate
+		public virtual System.DateTime LastPasswordChangedDate
 		{
 			get
@@ -182,5 +182,5 @@
 		
 		[Column(Storage="_PasswordQuestion", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
-		public override string PasswordQuestion
+		public virtual string PasswordQuestion
 		{
 			get
@@ -211,5 +211,5 @@
 		
 		[Column(Storage="_Email", CanBeNull=false)]
-		public override string Email
+		public virtual string Email
 		{
 			get
@@ -231,5 +231,5 @@
 		
 		[Column(Storage="_Comment", CanBeNull=false)]
-		public override string Comment
+		public virtual string Comment
 		{
 			get
@@ -298,5 +298,5 @@
 	[Table(Name="")]
 	[InheritanceMapping(Code="permission", Type=typeof(HeuristicLabPermissionRole))]
-	[InheritanceMapping(Code="role", Type=typeof(HeuristicLabRole))]
+	[InheritanceMapping(Code="role", Type=typeof(HeuristicLabRole), IsDefault=true)]
 	public abstract partial class HeuristicLabAbstractRole : INotifyPropertyChanging, INotifyPropertyChanged
 	{
@@ -312,7 +312,7 @@
 		private string _RoleType = default(string);
 		
+		private EntitySet<HeuristicLabAbstractRole> _HeuristicLabAbstractRole2;
+		
 		private EntitySet<HeuristicLabUserRole> _HeuristicLabUserRole;
-		
-		private EntitySet<HeuristicLabAbstractRole> _HeuristicLabAbstractRole2;
 		
 		private EntityRef<HeuristicLabAbstractRole> _HeuristicLabAbstractRole1;
@@ -330,6 +330,6 @@
 		public HeuristicLabAbstractRole()
 		{
+			this._HeuristicLabAbstractRole2 = new EntitySet<HeuristicLabAbstractRole>(new Action<HeuristicLabAbstractRole>(this.attach_HeuristicLabAbstractRole2), new Action<HeuristicLabAbstractRole>(this.detach_HeuristicLabAbstractRole2));
 			this._HeuristicLabUserRole = new EntitySet<HeuristicLabUserRole>(new Action<HeuristicLabUserRole>(this.attach_HeuristicLabUserRole), new Action<HeuristicLabUserRole>(this.detach_HeuristicLabUserRole));
-			this._HeuristicLabAbstractRole2 = new EntitySet<HeuristicLabAbstractRole>(new Action<HeuristicLabAbstractRole>(this.attach_HeuristicLabAbstractRole2), new Action<HeuristicLabAbstractRole>(this.detach_HeuristicLabAbstractRole2));
 			this._HeuristicLabAbstractRole1 = default(EntityRef<HeuristicLabAbstractRole>);
 			OnCreated();
@@ -394,4 +394,17 @@
 		}
 		
+		[Association(Name="HeuristicLabAbstractRole_HeuristicLabAbstractRole", Storage="_HeuristicLabAbstractRole2", ThisKey="ID", OtherKey="ParentRoleID")]
+		public EntitySet<HeuristicLabAbstractRole> HeuristicLabAbstractRole2
+		{
+			get
+			{
+				return this._HeuristicLabAbstractRole2;
+			}
+			set
+			{
+				this._HeuristicLabAbstractRole2.Assign(value);
+			}
+		}
+		
 		[Association(Name="HeuristicLabAbstractRole_HeuristicLabUserRole", Storage="_HeuristicLabUserRole", ThisKey="ID", OtherKey="HeuristicLabRoleID")]
 		public EntitySet<HeuristicLabUserRole> HeuristicLabUserRole
@@ -404,17 +417,4 @@
 			{
 				this._HeuristicLabUserRole.Assign(value);
-			}
-		}
-		
-		[Association(Name="HeuristicLabAbstractRole_HeuristicLabAbstractRole", Storage="_HeuristicLabAbstractRole2", ThisKey="ID", OtherKey="ParentRoleID")]
-		public EntitySet<HeuristicLabAbstractRole> HeuristicLabAbstractRole2
-		{
-			get
-			{
-				return this._HeuristicLabAbstractRole2;
-			}
-			set
-			{
-				this._HeuristicLabAbstractRole2.Assign(value);
 			}
 		}
@@ -474,4 +474,16 @@
 		}
 		
+		private void attach_HeuristicLabAbstractRole2(HeuristicLabAbstractRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.HeuristicLabAbstractRole1 = this;
+		}
+		
+		private void detach_HeuristicLabAbstractRole2(HeuristicLabAbstractRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.HeuristicLabAbstractRole1 = null;
+		}
+		
 		private void attach_HeuristicLabUserRole(HeuristicLabUserRole entity)
 		{
@@ -484,16 +496,4 @@
 			this.SendPropertyChanging();
 			entity.HeuristicLabAbstractRole = null;
-		}
-		
-		private void attach_HeuristicLabAbstractRole2(HeuristicLabAbstractRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.HeuristicLabAbstractRole1 = this;
-		}
-		
-		private void detach_HeuristicLabAbstractRole2(HeuristicLabAbstractRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.HeuristicLabAbstractRole1 = null;
 		}
 	}
Index: /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DatabaseUtil.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DatabaseUtil.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Persistence/DatabaseUtil.cs	(revision 3943)
@@ -1,13 +1,42 @@
-﻿namespace Persistence {
+﻿using System;
+
+namespace Persistence {
   /// <summary>
-  /// 
+  /// combines multiple used static methods into one class
   /// </summary>
   public class DatabaseUtil {
     /// <summary>
-    /// 
+    /// creates and returns a database connection, if possible
     /// </summary>
-    /// <returns></returns>
+    /// <returns>database connection (could be null)</returns>
     public static DataClassesDataContext createDataClassesDataContext() {
-      return new Persistence.DataClassesDataContext(@"C:\TEMP\HeuristicLabTemp.mdf");
+      DataClassesDataContext db;
+      try {
+        db = new Persistence.DataClassesDataContext(@"C:\TEMP\HeuristicLabTemp.mdf");
+      }
+      catch (Exception) {
+        return null;
+      }
+      return db;
+    }
+
+    /// <summary>
+    /// creates a new database out of the LINQ to SQL classes
+    /// </summary>
+    /// <param name="db">DataClassesDataContext</param>
+    public static void createDatabase(DataClassesDataContext db) {
+      if (db == null) {
+        throw new ArgumentNullException("db");
+      }
+      
+      if (db.DatabaseExists()) {
+        Console.WriteLine("Deleting old database...");
+        db.DeleteDatabase();
+        Console.WriteLine("Deleted old database!");
+      }
+
+      Console.WriteLine("Creating new database...");
+      db.CreateDatabase();
+      Console.WriteLine("Created new database!");
     }
   }
Index: /branches/HeuristicLab.Services.Authentication Prototype/Persistence/HeuristicLabUser.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Persistence/HeuristicLabUser.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Persistence/HeuristicLabUser.cs	(revision 3943)
@@ -3,5 +3,18 @@
 
 namespace Persistence {
+  /// <summary>
+  /// implements the MembershipUser for HeuristicLab
+  /// </summary>
   partial class HeuristicLabUser : MembershipUser {
+    public HeuristicLabUser(string name, string email, string passwordQuestion, string comment) : this() {
+      _UserName = name;
+      Password = "INIT"; // just for tests
+      _LastPasswordChangedDate = System.DateTime.Today;
+      _PasswordQuestion = passwordQuestion;
+      PasswordAnswer = "";
+      Email = email;
+      Comment = comment;
+    }
+
     public override bool ChangePassword(string oldPassword, string newPassword) {
       if (oldPassword == null) {
Index: /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs	(revision 3943)
@@ -1,7 +1,6 @@
 ﻿using System;
-using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 using System.Web.Security;
+using Persistence;
 
 namespace Service.Provider {
@@ -17,5 +16,20 @@
 
     public override bool ChangePassword(string username, string oldPassword, string newPassword) {
-      throw new NotImplementedException();
+      DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
+      if (db == null) {
+        return false;
+      }
+      try {
+        HeuristicLabUser u = db.HeuristicLabUsers.Single(x => x.UserName == username);
+        if (u.ChangePassword(oldPassword, newPassword)) {
+          db.SubmitChanges();
+          return true;
+        } else {
+          return false;
+        }
+      }
+      catch (Exception) {
+        return false;
+      }
     }
 
Index: /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs	(revision 3943)
@@ -1,7 +1,5 @@
 ﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using System.Web.Security;
+using Persistence;
 
 namespace Service.Provider {
Index: /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj	(revision 3943)
@@ -38,4 +38,7 @@
     </Reference>
     <Reference Include="System.Data" />
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
     <Reference Include="System.Runtime.Serialization">
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
@@ -74,3 +77,12 @@
   </Target>
   -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
+        <WcfProjectProperties>
+          <AutoStart>True</AutoStart>
+        </WcfProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
 </Project>
Index: /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj.user
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj.user	(revision 3943)
+++ /branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj.user	(revision 3943)
@@ -0,0 +1,14 @@
+﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}" xmlns="">
+        <WcfProjectProperties>
+          <PublishCopyOption>RunFiles</PublishCopyOption>
+          <PublishTargetLocation>
+          </PublishTargetLocation>
+          <PublishDeleteAllFiles>False</PublishDeleteAllFiles>
+        </WcfProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
Index: /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AbstractHeuristicLabTest.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AbstractHeuristicLabTest.cs	(revision 3943)
+++ /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AbstractHeuristicLabTest.cs	(revision 3943)
@@ -0,0 +1,49 @@
+﻿using Persistence;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+
+namespace UnitTests {
+  /// <summary>
+  ///This is a abstract test class for all HeuristicLab unit tests
+  ///</summary>
+  public abstract class AbstractHeuristicLabTest {
+
+    /// <summary>
+    /// shared database for all test methods
+    /// </summary>
+    protected Persistence.DataClassesDataContext db;
+
+    /// <summary>
+    /// constructor creates database connection for all other test methods
+    /// </summary>
+    public AbstractHeuristicLabTest() {
+      db = Persistence.DatabaseUtil.createDataClassesDataContext();
+    }
+
+    /// <summary>
+    /// creates and opens a local database our of the DataClasses
+    /// </summary>
+    [TestMethod()]
+    public virtual void createDBTest() {
+      Assert.IsNotNull(db);
+
+      DatabaseUtil.createDatabase(db);
+
+      Assert.AreEqual<System.Data.ConnectionState>(System.Data.ConnectionState.Open, db.Connection.State);
+    }
+
+    /// <summary>
+    /// checks if the database connection is open
+    /// should be used by all other test methods
+    /// </summary>
+    protected virtual void checkConnection() {
+      Assert.IsNotNull(db);
+
+      if (db.Connection.State != System.Data.ConnectionState.Open) {
+        db.Connection.Open();
+      }
+
+      Assert.AreEqual<System.Data.ConnectionState>(System.Data.ConnectionState.Open, db.Connection.State);
+    }
+  }
+}
Index: /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs	(revision 3943)
@@ -4,6 +4,4 @@
 
 namespace UnitTests {
-
-
   /// <summary>
   ///Dies ist eine Testklasse für "HeuristicLabMembershipProviderTest" und soll
@@ -11,7 +9,5 @@
   ///</summary>
   [TestClass()]
-  public class HeuristicLabMembershipProviderTest {
-
-
+  public class HeuristicLabMembershipProviderTest : AbstractHeuristicLabTest {
     private TestContext testContextInstance;
 
@@ -59,5 +55,4 @@
     #endregion
 
-
     /// <summary>
     ///Ein Test für "RequiresUniqueEmail"
Index: /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs	(revision 3943)
@@ -2,6 +2,4 @@
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 namespace UnitTests {
-
-
   /// <summary>
   ///Dies ist eine Testklasse für "HeuristicLabRoleProviderTest" und soll
@@ -9,7 +7,5 @@
   ///</summary>
   [TestClass()]
-  public class HeuristicLabRoleProviderTest {
-
-
+  public class HeuristicLabRoleProviderTest : AbstractHeuristicLabTest {
     private TestContext testContextInstance;
 
@@ -57,5 +53,4 @@
     #endregion
 
-
     /// <summary>
     ///Ein Test für "ApplicationName"
Index: /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabUserTest.cs
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabUserTest.cs	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabUserTest.cs	(revision 3943)
@@ -1,5 +1,7 @@
-﻿using Persistence;
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
+using Persistence;
 
 namespace UnitTests {
@@ -9,41 +11,41 @@
   ///</summary>
   [TestClass()]
-  public class HeuristicLabUserTest {
+  public class HeuristicLabUserTest : AbstractHeuristicLabTest {
     private TestContext testContextInstance;
 
-    private Persistence.DataClassesDataContext db;
-
-    public HeuristicLabUserTest() {
-      db = Persistence.DatabaseUtil.createDataClassesDataContext();
-    }
-
-    /// <summary>
-    /// creates a local database for all other test methods
+    /// <summary>
+    /// inserts, modifies and deletes a new user into the database
     /// </summary>
     [TestMethod()]
-    public void createDBTest() {
-      if (db.DatabaseExists()) {
-        Console.WriteLine("Deleting old database...");
-        db.DeleteDatabase();
-        Console.WriteLine("Deleted old database!");
-      }
-      Console.WriteLine("Creating new database...");
-      db.CreateDatabase();
-      Console.WriteLine("Created new database!");
-    }
-
-    /// <summary>
-    /// inserts a new user into the database
-    /// </summary>
-    [TestMethod()]
-    public void addUserTest() {
-      //Assert.IsNotNull(db);
-
-      //Persistence.HeuristicLabUser user = new HeuristicLabUser();
-      //user.UserName = "TEST";
-      //db.HeuristicLabUsers.InsertOnSubmit(user);
-      //db.SubmitChanges();
-
-//      db.HeuristicLabUsers.
+    public void modifyUserTest() {
+      checkConnection();
+
+      // insert new user
+      Persistence.HeuristicLabUser user = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      db.HeuristicLabUsers.InsertOnSubmit(user);
+      db.SubmitChanges();
+      Persistence.HeuristicLabUser u = db.HeuristicLabUsers.Single(x => x.UserName == "testname");
+      Assert.IsNotNull(u);
+      Assert.AreEqual<string>("testname", u.UserName);
+      Assert.AreEqual<string>("testemail", u.Email);
+      Assert.AreEqual<string>("testquestion", u.PasswordQuestion);
+      Assert.AreEqual<string>("testcomment", u.Comment);
+
+      // modify existing user
+      u.Email = "testemail2";
+      u.Comment = "testcomment2";
+      db.SubmitChanges();
+      u = db.HeuristicLabUsers.Single(x => x.UserName == "testname");
+      Assert.IsNotNull(u);
+      Assert.AreEqual<string>("testname", u.UserName);
+      Assert.AreEqual<string>("testemail2", u.Email);
+      Assert.AreEqual<string>("testquestion", u.PasswordQuestion);
+      Assert.AreEqual<string>("testcomment2", u.Comment);
+
+      // delete user
+      db.HeuristicLabUsers.DeleteOnSubmit(u);
+      db.SubmitChanges();
+      List<HeuristicLabUser> uList = db.HeuristicLabUsers.Where(x => x.UserName == "testname").ToList<HeuristicLabUser>();
+      Assert.AreEqual(0, uList.Count);
     }
 
@@ -91,5 +93,4 @@
     #endregion
 
-
     /// <summary>
     ///A test for UserName
@@ -97,112 +98,92 @@
     [TestMethod()]
     public void UserNameTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.UserName;
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testname", target.UserName);
+    }
+
+    /// <summary>
+    ///A test for PasswordQuestion
+    ///</summary>
+    [TestMethod()]
+    public void PasswordQuestionTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testquestion", target.PasswordQuestion);
+      target.ChangePasswordQuestionAndAnswer("INIT", "newquestion", "newanswer");
+      Assert.AreEqual<String>("newquestion", target.PasswordQuestion);
+    }
+
+    /// <summary>
+    ///A test for PasswordAnswer
+    ///</summary>
+    [TestMethod()]
+    public void PasswordAnswerTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("", target.PasswordAnswer);
+      target.ChangePasswordQuestionAndAnswer("INIT", "newquestion", "newanswer");
+      Assert.AreEqual<String>("newquestion", target.PasswordQuestion);
+      target.PasswordAnswer = "testanswer";
+      Assert.AreEqual<String>("testanswer", target.PasswordAnswer);
+    }
+
+    /// <summary>
+    ///A test for Password
+    ///</summary>
+    [TestMethod()]
+    public void PasswordTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("INIT", target.Password);
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.Password);
+      target.ChangePassword("pwd1", "pwd2");
+      Assert.AreEqual<String>("pwd2", target.Password);
+    }
+
+    /// <summary>
+    ///A test for LastPasswordChangedDate
+    ///</summary>
+    [TestMethod()]
+    public void LastPasswordChangedDateTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<DateTime>(System.DateTime.Today, target.LastPasswordChangedDate);
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<DateTime>(System.DateTime.Today, target.LastPasswordChangedDate);
+    }
+
+    /// <summary>
+    ///A test for Email
+    ///</summary>
+    [TestMethod()]
+    public void EmailTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testemail", target.Email);
+      target.Email = "testemail2";
+      Assert.AreEqual<String>("testemail2", target.Email);
+    }
+
+    /// <summary>
+    ///A test for Comment
+    ///</summary>
+    [TestMethod()]
+    public void CommentTest() {
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      target.Comment = "testcomment2";
+      Assert.AreEqual<String>("testcomment2", target.Comment);
+    }
+
+    /// <summary>
+    ///A test for UnlockUser
+    ///</summary>
+    [TestMethod()]
+    public void UnlockUserTest() {
       Assert.Inconclusive("Verify the correctness of this test method.");
     }
 
     /// <summary>
-    ///A test for PasswordQuestion
-    ///</summary>
-    [TestMethod()]
-    public void PasswordQuestionTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.PasswordQuestion;
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for PasswordAnswer
-    ///</summary>
-    [TestMethod()]
-    public void PasswordAnswerTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      target.PasswordAnswer = expected;
-      actual = target.PasswordAnswer;
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for Password
-    ///</summary>
-    [TestMethod()]
-    public void PasswordTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      target.Password = expected;
-      actual = target.Password;
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for LastPasswordChangedDate
-    ///</summary>
-    [TestMethod()]
-    public void LastPasswordChangedDateTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      DateTime actual;
-      actual = target.LastPasswordChangedDate;
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for Email
-    ///</summary>
-    [TestMethod()]
-    public void EmailTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      target.Email = expected;
-      actual = target.Email;
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for Comment
-    ///</summary>
-    [TestMethod()]
-    public void CommentTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      target.Comment = expected;
-      actual = target.Comment;
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
-    ///A test for UnlockUser
-    ///</summary>
-    [TestMethod()]
-    public void UnlockUserTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      bool expected = false; // TODO: Initialize to an appropriate value
-      bool actual;
-      actual = target.UnlockUser();
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
-    }
-
-    /// <summary>
     ///A test for ToString
     ///</summary>
     [TestMethod()]
     public void ToStringTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.ToString();
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testname", target.ToString());
     }
 
@@ -235,10 +216,9 @@
     [TestMethod()]
     public void ResetPasswordTest1() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.ResetPassword();
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.GetPassword());
+      target.ResetPassword();
+      Assert.AreEqual<String>("", target.GetPassword());
     }
 
@@ -248,11 +228,9 @@
     [TestMethod()]
     public void ResetPasswordTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string passwordAnswer = string.Empty; // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.ResetPassword(passwordAnswer);
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.GetPassword());
+      target.ResetPassword("wrongAnswer");
+      Assert.AreEqual<String>("pwd1", target.GetPassword());
     }
 
@@ -262,11 +240,12 @@
     [TestMethod()]
     public void GetPasswordTest1() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string passwordAnswer = string.Empty; // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.GetPassword(passwordAnswer);
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      target.PasswordAnswer = "answer";
+      Assert.AreEqual<String>("", target.GetPassword("answer"));
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.GetPassword("answer"));
+      target.ChangePassword("pwd1", "pwd2");
+      Assert.AreEqual<String>("pwd2", target.GetPassword("answer"));
+      Assert.AreEqual<String>("", target.GetPassword("wrong"));
     }
 
@@ -276,10 +255,10 @@
     [TestMethod()]
     public void GetPasswordTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string expected = string.Empty; // TODO: Initialize to an appropriate value
-      string actual;
-      actual = target.GetPassword();
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("INIT", target.GetPassword());
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.GetPassword());
+      target.ChangePassword("pwd1", "pwd2");
+      Assert.AreEqual<String>("pwd2", target.GetPassword());
     }
 
@@ -289,13 +268,10 @@
     [TestMethod()]
     public void ChangePasswordQuestionAndAnswerTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string password = string.Empty; // TODO: Initialize to an appropriate value
-      string newPasswordQuestion = string.Empty; // TODO: Initialize to an appropriate value
-      string newPasswordAnswer = string.Empty; // TODO: Initialize to an appropriate value
-      bool expected = false; // TODO: Initialize to an appropriate value
-      bool actual;
-      actual = target.ChangePasswordQuestionAndAnswer(password, newPasswordQuestion, newPasswordAnswer);
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testquestion", target.PasswordQuestion);
+      Assert.AreEqual<String>("", target.PasswordAnswer);
+      target.ChangePasswordQuestionAndAnswer("INIT", "newquestion", "newanswer");
+      Assert.AreEqual<String>("newquestion", target.PasswordQuestion);
+      Assert.AreEqual<String>("newanswer", target.PasswordAnswer);
     }
 
@@ -305,12 +281,16 @@
     [TestMethod()]
     public void ChangePasswordTest() {
-      HeuristicLabUser target = new HeuristicLabUser(); // TODO: Initialize to an appropriate value
-      string oldPassword = string.Empty; // TODO: Initialize to an appropriate value
-      string newPassword = string.Empty; // TODO: Initialize to an appropriate value
-      bool expected = false; // TODO: Initialize to an appropriate value
-      bool actual;
-      actual = target.ChangePassword(oldPassword, newPassword);
-      Assert.AreEqual(expected, actual);
-      Assert.Inconclusive("Verify the correctness of this test method.");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("INIT", target.Password);
+      target.ChangePassword(target.Password, "pwd1");
+      Assert.AreEqual<String>("pwd1", target.Password);
+      target.ChangePassword("pwd1", "pwd2");
+      Assert.AreEqual<String>("pwd2", target.Password);
+      try {
+        target.ChangePassword("abc", "def");
+        Assert.Fail();
+      }
+      catch (Exception) {
+      }
     }
 
@@ -320,6 +300,12 @@
     [TestMethod()]
     public void HeuristicLabUserConstructorTest() {
-      HeuristicLabUser target = new HeuristicLabUser();
-      Assert.Inconclusive("TODO: Implement code to verify target");
+      HeuristicLabUser target = new HeuristicLabUser("testname", "testemail", "testquestion", "testcomment");
+      Assert.AreEqual<String>("testname", target.UserName);
+      Assert.AreEqual<String>("INIT", target.Password);
+      Assert.AreEqual<DateTime>(System.DateTime.Today, target.LastPasswordChangedDate);
+      Assert.AreEqual<String>("testquestion", target.PasswordQuestion);
+      Assert.AreEqual<String>("", target.PasswordAnswer);
+      Assert.AreEqual<String>("testemail", target.Email);
+      Assert.AreEqual<String>("testcomment", target.Comment);
     }
   }
Index: /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj
===================================================================
--- /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj	(revision 3942)
+++ /branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj	(revision 3943)
@@ -58,4 +58,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="AbstractHeuristicLabTest.cs" />
     <Compile Include="HeuristicLabMembershipProviderTest.cs" />
     <Compile Include="HeuristicLabRoleProviderTest.cs" />
