Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs	(revision 5156)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs	(revision 5402)
@@ -33,4 +33,23 @@
       DT.Job job1 = new DT.Job();
       job1.DateCreated = DateTime.Now;
+
+      DT.Plugin plugin1 = new DT.Plugin();
+      plugin1.Name = "Tests.MyPlugin";
+      plugin1.Version = new Version("1.0.0.0");
+      plugin1.UserId = Guid.Empty;
+      plugin1.IsLocal = true;
+      plugin1.DateCreated = DateTime.Now;
+
+      DT.PluginData pluginData1 = new DT.PluginData();
+      pluginData1.PluginId = plugin1.Id;
+      pluginData1.FileName = "Tests.MyPlugin-1.0.dll";
+      pluginData1.Data = new byte[] { 0, 1, 2, 3, 4, 5 };
+
+      plugin1.Id = dao.AddPlugin(plugin1);
+      pluginData1.PluginId = plugin1.Id;
+      pluginData1.Id = dao.AddPluginData(pluginData1);
+
+      job1.PluginsNeededIds.Add(plugin1.Id);
+
       job1.Id = dao.AddJob(job1);
 
@@ -41,4 +60,5 @@
       Assert.AreEqual(job1.DateCreated.ToString(), job1loaded.DateCreated.ToString());
       Assert.AreEqual(null, job1loaded.DateFinished);
+      Assert.IsTrue(job1.PluginsNeededIds.SequenceEqual(job1loaded.PluginsNeededIds));
       
       dao.DeleteJob(job1.Id);
@@ -73,6 +93,49 @@
       job.Id = dao.AddJob(job);
 
+      // todo
+    }
 
+    [TestMethod]
+    public void TestPluginDao() {
+      IHiveDao dao = ServiceLocator.Instance.HiveDao;
+
+      DT.Plugin plugin1 = new DT.Plugin();
+      plugin1.DateCreated = DateTime.Now;
+      plugin1.IsLocal = false;
+      plugin1.Name = "Tests.MyPlugin";
+      plugin1.Version = new Version("1.0.0.0");
+      plugin1.UserId = Guid.Empty;
+
+      plugin1.Id = dao.AddPlugin(plugin1);
+
+      DT.Plugin plugin1loaded = dao.GetPlugin(plugin1.Id);
+      Assert.AreEqual(plugin1.Id, plugin1loaded.Id);
+      Assert.AreEqual(plugin1.Name, plugin1loaded.Name);
+      Assert.AreEqual(plugin1.Version, plugin1loaded.Version);
+      Assert.AreEqual(plugin1.UserId, plugin1loaded.UserId);
+      Assert.AreEqual(plugin1.DateCreated.ToString(), plugin1loaded.DateCreated.ToString());
+      Assert.AreEqual(plugin1.IsLocal, plugin1loaded.IsLocal);
+
+      DT.PluginData pluginData1 = new DT.PluginData();
+      pluginData1.PluginId = plugin1.Id;
+      pluginData1.FileName = "Tests.MyPlugin-1.0.dll";
+      pluginData1.Data = new byte[] { 0, 1, 2, 3, 4, 5 };
+
+      pluginData1.Id = dao.AddPluginData(pluginData1);
+
+      DT.PluginData pluginData1loaded = dao.GetPluginData(pluginData1.Id);
+      Assert.AreEqual(pluginData1.Id, pluginData1loaded.Id);
+
+      Assert.AreEqual(pluginData1.PluginId, pluginData1loaded.PluginId);
+      Assert.AreEqual(pluginData1.FileName, pluginData1loaded.FileName);
+      Assert.IsTrue(pluginData1.Data.SequenceEqual(pluginData1loaded.Data));
+
+      dao.DeletePluginData(pluginData1.Id);
+      dao.DeletePlugin(plugin1.Id);
+
+      Assert.AreEqual(null, dao.GetPlugin(plugin1.Id));
+      Assert.AreEqual(null, dao.GetPluginData(pluginData1.Id));
     }
+
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/HeuristicLab.Services.Hive.Tests-3.4.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/HeuristicLab.Services.Hive.Tests-3.4.csproj	(revision 5156)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/HeuristicLab.Services.Hive.Tests-3.4.csproj	(revision 5402)
@@ -33,4 +33,36 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Services.Hive.Tests-3.4.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.Services.Hive.Tests-3.4.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="ALGLIB-2.5.0">
