diff --git a/libs/middletier/MockClientAPITest.cpp b/libs/middletier/MockClientAPITest.cpp
deleted file mode 100644
index d57a60d3de8b58d70ea66c3d82b47f79a8240ed9..0000000000000000000000000000000000000000
--- a/libs/middletier/MockClientAPITest.cpp
+++ /dev/null
@@ -1,1686 +0,0 @@
-#include "TestingMockMiddleTierAdmin.hpp"
-
-#include <gtest/gtest.h>
-
-namespace unitTests {
-
-class cta_client_MockMiddleTierAdminTest: public ::testing::Test {
-protected:
-
-  virtual void SetUp() {
-  }
-
-  virtual void TearDown() {
-  }
-};
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createAdminUser_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  }
-
-  const uint16_t adminUser1Uid = 1234;
-  const uint16_t adminUser1Gid = 5678;
-  const UserIdentity adminUser1(adminUser1Uid, adminUser1Gid);
-  ASSERT_NO_THROW(api.createAdminUser(requester, adminUser1));
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_EQ(1, adminUsers.size());
-
-    ASSERT_EQ(adminUser1Uid, adminUsers.front().uid);
-    ASSERT_EQ(adminUser1Gid, adminUsers.front().gid);
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createAdminUser_already_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  }
-
-  const uint16_t adminUser1Uid = 1234;
-  const uint16_t adminUser1Gid = 5678;
-  const UserIdentity adminUser1(adminUser1Uid, adminUser1Gid);
-  ASSERT_NO_THROW(api.createAdminUser(requester, adminUser1));
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_EQ(1, adminUsers.size());
-
-    ASSERT_EQ(adminUser1Uid, adminUsers.front().uid);
-    ASSERT_EQ(adminUser1Gid, adminUsers.front().gid);
-  }
-
-  ASSERT_THROW(api.createAdminUser(requester, adminUser1), std::exception);
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_EQ(1, adminUsers.size());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteAdminUser_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  }
-
-  const uint16_t adminUser1Uid = 1234;
-  const uint16_t adminUser1Gid = 5678;
-  const UserIdentity adminUser1(adminUser1Uid, adminUser1Gid);
-  ASSERT_NO_THROW(api.createAdminUser(requester, adminUser1));
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_EQ(1, adminUsers.size());
-
-    ASSERT_EQ(adminUser1Uid, adminUsers.front().uid);
-    ASSERT_EQ(adminUser1Gid, adminUsers.front().gid);
-  }
-
-  ASSERT_NO_THROW(api.deleteAdminUser(requester, adminUser1));
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteAdminUser_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  } 
-  
-  const uint16_t adminUser1Uid = 1234;
-  const uint16_t adminUser1Gid = 5678;
-  const UserIdentity adminUser1(adminUser1Uid, adminUser1Gid);
-  ASSERT_THROW(api.deleteAdminUser(requester, adminUser1), std::exception);
-
-  {
-    std::list<UserIdentity> adminUsers;
-    ASSERT_NO_THROW(adminUsers = api.getAdminUsers(requester));
-    ASSERT_TRUE(adminUsers.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createAdminHost_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_TRUE(adminHosts.empty());
-  }
-
-  const std::string adminHost1 = "adminHost1";
-  ASSERT_NO_THROW(api.createAdminHost(requester, adminHost1));
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_EQ(1, adminHosts.size());
-
-    ASSERT_EQ(adminHost1, adminHosts.front());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteAdminHost_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_TRUE(adminHosts.empty());
-  }
-
-  const std::string adminHost1 = "adminHost1";
-  ASSERT_NO_THROW(api.createAdminHost(requester, adminHost1));
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_EQ(1, adminHosts.size());
-
-    ASSERT_EQ(adminHost1, adminHosts.front());
-  }
-
-  ASSERT_NO_THROW(api.deleteAdminHost(requester, adminHost1));
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_TRUE(adminHosts.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteAdminHost_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_TRUE(adminHosts.empty());
-  }
-
-  const std::string adminHost1 = "adminHost1";
-  ASSERT_THROW(api.deleteAdminHost(requester, adminHost1), std::exception);
-
-  {
-    std::list<std::string> adminHosts;
-    ASSERT_NO_THROW(adminHosts = api.getAdminHosts(requester));
-    ASSERT_TRUE(adminHosts.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createStorageClass_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string name = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, name, nbCopies, comment));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(name, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createStorageClass_already_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string name = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, name, nbCopies, comment));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(name, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-  
-  ASSERT_THROW(api.createStorageClass(requester, name, nbCopies, comment),
-    std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createStorageClass_lexicographical_order) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  ASSERT_NO_THROW(api.createStorageClass(requester, "d", 1, "Comment d"));
-  ASSERT_NO_THROW(api.createStorageClass(requester, "b", 1, "Comment b"));
-  ASSERT_NO_THROW(api.createStorageClass(requester, "a", 1, "Comment a"));
-  ASSERT_NO_THROW(api.createStorageClass(requester, "c", 1, "Comment c"));
-  
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(4, storageClasses.size());
-
-    ASSERT_EQ(std::string("a"), storageClasses.front().getName());
-    storageClasses.pop_front();
-    ASSERT_EQ(std::string("b"), storageClasses.front().getName());
-    storageClasses.pop_front();
-    ASSERT_EQ(std::string("c"), storageClasses.front().getName());
-    storageClasses.pop_front();
-    ASSERT_EQ(std::string("d"), storageClasses.front().getName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteStorageClass_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string name = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, name, nbCopies, comment));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-  
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(name, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-
-    ASSERT_NO_THROW(api.deleteStorageClass(requester, name));
-  }
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  deleteStorageClass_in_use_by_directory) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName, nbCopies,
-    comment));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(storageClassName, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-
-  ASSERT_NO_THROW(api.setDirectoryStorageClass(requester, "/",
-    storageClassName));
-
-  ASSERT_THROW(api.deleteStorageClass(requester, storageClassName),
-    std::exception);
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(storageClassName, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-
-  ASSERT_NO_THROW(api.clearDirectoryStorageClass(requester, "/"));
-
-  ASSERT_NO_THROW(api.deleteStorageClass(requester, storageClassName));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteStorageClass_in_use_by_route) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName, nbCopies,
-    comment));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(storageClassName, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_EQ(1, tapePools.size());
-
-    TapePool tapePool;
-    ASSERT_NO_THROW(tapePool = tapePools.front());
-    ASSERT_EQ(tapePoolName, tapePool.getName());
-  }
-
-  const uint8_t copyNb = 1;
-  ASSERT_NO_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-
-  ASSERT_THROW(api.deleteStorageClass(requester, storageClassName),
-    std::exception);
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_EQ(1, storageClasses.size());
-
-    StorageClass storageClass;
-    ASSERT_NO_THROW(storageClass = storageClasses.front());
-    ASSERT_EQ(storageClassName, storageClass.getName());
-    ASSERT_EQ(nbCopies, storageClass.getNbCopies());
-  }
-
-  ASSERT_NO_THROW(api.deleteMigrationRoute(requester, storageClassName,
-    copyNb));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  ASSERT_NO_THROW(api.deleteStorageClass(requester, storageClassName));
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteStorageClass_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-
-  const std::string name = "TestStorageClass";
-  ASSERT_THROW(api.deleteStorageClass(requester, name), std::exception);
-
-  {
-    std::list<StorageClass> storageClasses;
-    ASSERT_NO_THROW(storageClasses = api.getStorageClasses(requester));
-    ASSERT_TRUE(storageClasses.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createTapePool_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives, 
-    nbPartialTapes, comment));
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_EQ(1, tapePools.size());
-
-    TapePool tapePool;
-    ASSERT_NO_THROW(tapePool = tapePools.front());
-    ASSERT_EQ(tapePoolName, tapePool.getName());
-    ASSERT_EQ(comment, tapePool.getComment());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createTapePool_already_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives, 
-    nbPartialTapes, comment));
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_EQ(1, tapePools.size());
-
-    TapePool tapePool;
-    ASSERT_NO_THROW(tapePool = tapePools.front());
-    ASSERT_EQ(tapePoolName, tapePool.getName());
-    ASSERT_EQ(comment, tapePool.getComment());
-  }
-  
-  ASSERT_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createTapePool_lexicographical_order) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-
-  ASSERT_NO_THROW(api.createTapePool(requester, "d", nbDrives, nbPartialTapes,
-    "Comment d"));
-  ASSERT_NO_THROW(api.createTapePool(requester, "b", nbDrives, nbPartialTapes,
-    "Comment b"));
-  ASSERT_NO_THROW(api.createTapePool(requester, "a", nbDrives, nbPartialTapes,
-    "Comment a"));
-  ASSERT_NO_THROW(api.createTapePool(requester, "c", nbDrives, nbPartialTapes,
-    "Comment c"));
-  
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_EQ(4, tapePools.size());
-
-    ASSERT_EQ(std::string("a"), tapePools.front().getName());
-    tapePools.pop_front();
-    ASSERT_EQ(std::string("b"), tapePools.front().getName());
-    tapePools.pop_front();
-    ASSERT_EQ(std::string("c"), tapePools.front().getName());
-    tapePools.pop_front();
-    ASSERT_EQ(std::string("d"), tapePools.front().getName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteTapePool_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_EQ(1, tapePools.size());
-  
-    TapePool tapePool;
-    ASSERT_NO_THROW(tapePool = tapePools.front());
-    ASSERT_EQ(tapePoolName, tapePool.getName());
-    ASSERT_EQ(comment, tapePool.getComment());
-
-    ASSERT_NO_THROW(api.deleteTapePool(requester, tapePoolName));
-  }
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteTapePool_in_use) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const std::string comment = "Comment";
-  {
-    const uint8_t nbCopies = 2;
-    ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-      nbCopies, comment));
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  const uint8_t copyNb = 1;
-  ASSERT_NO_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-
-  ASSERT_THROW(api.deleteTapePool(requester, tapePoolName), std::exception);
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteTapePool_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-
-  const std::string name = "TestTapePool";
-  ASSERT_THROW(api.deleteTapePool(requester, name), std::exception);
-
-  {
-    std::list<TapePool> tapePools;
-    ASSERT_NO_THROW(tapePools = api.getTapePools(requester));
-    ASSERT_TRUE(tapePools.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createMigrationRoute_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const std::string comment = "Comment";
-  {
-    const uint8_t nbCopies = 2;
-    ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-      nbCopies, comment));
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  const uint8_t copyNb = 1;
-  ASSERT_NO_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createMigrationRoute_already_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const std::string comment = "Comment";
-  {
-    const uint8_t nbCopies = 2;
-    ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-      nbCopies, comment));
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  const uint8_t copyNb = 1;
-  ASSERT_NO_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-
-  ASSERT_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteMigrationRoute_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const std::string comment = "Comment";
-  {
-    const uint8_t nbCopies = 2;
-    ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-      nbCopies, comment));
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  const uint8_t copyNb = 1;
-  ASSERT_NO_THROW(api.createMigrationRoute(requester, storageClassName,
-    copyNb, tapePoolName, comment));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_EQ(1, migrationRoutes.size());
-
-    MigrationRoute migrationRoute;
-    ASSERT_NO_THROW(migrationRoute = migrationRoutes.front());
-    ASSERT_EQ(storageClassName, migrationRoute.getStorageClassName());
-    ASSERT_EQ(copyNb, migrationRoute.getCopyNb());
-    ASSERT_EQ(tapePoolName, migrationRoute.getTapePoolName());
-  }
-
-  ASSERT_NO_THROW(api.deleteMigrationRoute(requester, storageClassName,
-    copyNb));
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteMigrationRoute_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<MigrationRoute> migrationRoutes;
-    ASSERT_NO_THROW(migrationRoutes = api.getMigrationRoutes(requester));
-    ASSERT_TRUE(migrationRoutes.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const std::string comment = "Comment";
-  {
-    const uint8_t nbCopies = 2;
-    ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-      nbCopies, comment));
-  }
-
-  const std::string tapePoolName = "TestTapePool";
-  const uint16_t nbDrives = 1;
-  const uint16_t nbPartialTapes = 1;
-  ASSERT_NO_THROW(api.createTapePool(requester, tapePoolName, nbDrives,
-    nbPartialTapes, comment));
-
-  const uint8_t copyNb = 1;
-  ASSERT_THROW(api.deleteMigrationRoute(requester, tapePoolName, copyNb),
-    std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  getDirectoryContents_root_dir_is_empty) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/";
-
-  DirectoryIterator itor;
-  ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-  ASSERT_FALSE(itor.hasMore());
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createDirectory_empty_string) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "";
-
-  ASSERT_THROW(api.createDirectory(requester, dirPath), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createDirectory_consecutive_slashes) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "//";
-
-  ASSERT_THROW(api.createDirectory(requester, dirPath), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createDirectory_invalid_chars) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/grandparent/?parent";
-  
-  ASSERT_THROW(api.createDirectory(requester, dirPath), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createDirectory_top_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/grandparent";
-  
-  ASSERT_NO_THROW(api.createDirectory(requester, dirPath));
-
-  DirectoryIterator itor;
-
-  ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-  ASSERT_TRUE(itor.hasMore());
-
-  DirectoryEntry entry;
-
-  ASSERT_NO_THROW(entry = itor.next());
-
-  ASSERT_EQ(std::string("grandparent"), entry.getName());
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createDirectory_second_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  ASSERT_TRUE(api.getDirectoryStorageClass(requester, "/").empty());
-
-  {
-    const std::string topLevelDirPath = "/grandparent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, topLevelDirPath));
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  ASSERT_TRUE(api.getDirectoryStorageClass(requester, "/grandparent").empty());
-
-  {
-    const std::string secondLevelDirPath = "/grandparent/parent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, secondLevelDirPath));
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/grandparent"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("parent"), entry.getName());
-  }
-
-  ASSERT_TRUE(api.getDirectoryStorageClass(requester,
-    "/grandparent/parent").empty());
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createDirectory_inherit_storage_class) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  ASSERT_TRUE(api.getDirectoryStorageClass(requester, "/").empty());
-
-  {
-    const std::string name = "TestStorageClass";
-    const uint8_t nbCopies = 2;
-    const std::string comment = "Comment";
-    ASSERT_NO_THROW(api.createStorageClass(requester, name, nbCopies, comment));
-  }
-
-  {
-    const std::string topLevelDirPath = "/grandparent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, topLevelDirPath));
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-
-    ASSERT_TRUE(api.getDirectoryStorageClass(requester, "/grandparent").empty());
-
-    ASSERT_NO_THROW(api.setDirectoryStorageClass(requester, "/grandparent",
-      "TestStorageClass"));
-  }
-
-  ASSERT_EQ(std::string("TestStorageClass"),
-    api.getDirectoryStorageClass(requester, "/grandparent"));
-
-  {
-    const std::string secondLevelDirPath = "/grandparent/parent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, secondLevelDirPath));
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/grandparent"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("parent"), entry.getName());
-  }
-
-  ASSERT_EQ(std::string("TestStorageClass"),
-    api.getDirectoryStorageClass(requester, "/grandparent/parent"));
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteDirectory_root) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/";
-
-  ASSERT_THROW(api.deleteDirectory(requester, "/"), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteDirectory_existing_top_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/grandparent";
-  
-  ASSERT_NO_THROW(api.createDirectory(requester, dirPath));
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  ASSERT_NO_THROW(api.deleteDirectory(requester, "/grandparent"));
-
-  {
-    DirectoryIterator itor;
-  
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-  
-    ASSERT_FALSE(itor.hasMore());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  deleteDirectory_non_empty_top_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    const std::string topLevelDirPath = "/grandparent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, topLevelDirPath));
-
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  {
-    const std::string secondLevelDirPath = "/grandparent/parent";
-
-    ASSERT_NO_THROW(api.createDirectory(requester, secondLevelDirPath));
-
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("grandparent"), entry.getName());
-  }
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/grandparent"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("parent"), entry.getName());
-  }
-
-  ASSERT_THROW(api.deleteDirectory(requester, "/grandparent"), std::exception);
-
-  {
-    DirectoryIterator itor;
-
-    ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/grandparent"));
-
-    ASSERT_TRUE(itor.hasMore());
-
-    DirectoryEntry entry;
-
-    ASSERT_NO_THROW(entry = itor.next());
-
-    ASSERT_EQ(std::string("parent"), entry.getName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  deleteDirectory_non_existing_top_level) {
-  using namespace cta;
-  
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  ASSERT_THROW(api.deleteDirectory(requester, "/grandparent"), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, setDirectoryStorageClass_top_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/grandparent";
-
-  ASSERT_NO_THROW(api.createDirectory(requester, dirPath));
-
-  DirectoryIterator itor;
-
-  ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-  ASSERT_TRUE(itor.hasMore());
-
-  DirectoryEntry entry;
-
-  ASSERT_NO_THROW(entry = itor.next());
-
-  ASSERT_EQ(std::string("grandparent"), entry.getName());
-
-  {
-    std::string name;
-    ASSERT_NO_THROW(name = api.getDirectoryStorageClass(requester, dirPath));
-    ASSERT_TRUE(name.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-    const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-    nbCopies, comment));
-
-  ASSERT_NO_THROW(api.setDirectoryStorageClass(requester, dirPath,
-    storageClassName));
-
-  {
-    std::string name;
-    ASSERT_NO_THROW(name = api.getDirectoryStorageClass(requester, dirPath));
-    ASSERT_EQ(storageClassName, name);
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  clearDirectoryStorageClass_top_level) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-  const std::string dirPath = "/grandparent";
-
-  ASSERT_NO_THROW(api.createDirectory(requester, dirPath));
-
-  DirectoryIterator itor;
-
-  ASSERT_NO_THROW(itor = api.getDirectoryContents(requester, "/"));
-
-  ASSERT_TRUE(itor.hasMore());
-
-  DirectoryEntry entry;
-
-  ASSERT_NO_THROW(entry = itor.next());
-
-  ASSERT_EQ(std::string("grandparent"), entry.getName());
-
-  {
-    std::string name;
-    ASSERT_NO_THROW(name = api.getDirectoryStorageClass(requester, dirPath));
-    ASSERT_TRUE(name.empty());
-  }
-
-  const std::string storageClassName = "TestStorageClass";
-  const uint8_t nbCopies = 2;
-  const std::string comment = "Comment";
-  ASSERT_NO_THROW(api.createStorageClass(requester, storageClassName,
-    nbCopies, comment));
-
-  ASSERT_NO_THROW(api.setDirectoryStorageClass(requester, dirPath,
-    storageClassName));
-
-  {
-    std::string name;
-    ASSERT_NO_THROW(name = api.getDirectoryStorageClass(requester, dirPath));
-    ASSERT_EQ(storageClassName, name);
-  }
-
-  ASSERT_THROW(api.deleteStorageClass(requester, storageClassName),
-    std::exception);
-
-  ASSERT_NO_THROW(api.clearDirectoryStorageClass(requester, dirPath));
-
-  {
-    std::string name;
-    ASSERT_NO_THROW(name = api.getDirectoryStorageClass(requester, dirPath));
-    ASSERT_TRUE(name.empty());
-  }
-
-  ASSERT_NO_THROW(api.deleteStorageClass(requester, storageClassName));
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_emptyString) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s;
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(s, trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_noSlashes) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("NO_SLASHES");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(s, trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_oneLeftSlash) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("/VALUE");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_twoLeftSlashes) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("//VALUE");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_oneRightSlash) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("VALUE/");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, trimSlashes_twoRightSlashes) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("VALUE//");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  trimSlashes_oneLeftAndOneRightSlash) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("/VALUE/");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  trimSlashes_twoLeftAndTwoRightSlashes) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string s("//VALUE//");
-  const std::string trimmedString = api.trimSlashes(s);
-  ASSERT_EQ(std::string("VALUE"), trimmedString);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, getEnclosingDirPath_empty_string) {
-  using namespace cta;
-    
-  TestingMockMiddleTierAdmin api;
-  const std::string dirPath = "";
-
-  ASSERT_THROW(api.getEnclosingDirPath(dirPath), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, getEnclosingDirPath_root) {
-  using namespace cta;
-    
-  TestingMockMiddleTierAdmin api;
-  const std::string dirPath = "/";
-
-  std::string enclosingDirPath;
-  ASSERT_THROW(enclosingDirPath = api.getEnclosingDirPath(dirPath),
-    std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, getEnclosingDirPath_grandparent) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string dirPath = "/grandparent";
-    
-  std::string enclosingDirPath;
-  ASSERT_NO_THROW(enclosingDirPath = api.getEnclosingDirPath(dirPath));
-  ASSERT_EQ(std::string("/"), enclosingDirPath);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  getEnclosingDirPath_grandparent_parent) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string dirPath = "/grandparent/parent";
-
-  std::string enclosingDirPath;
-  ASSERT_NO_THROW(enclosingDirPath = api.getEnclosingDirPath(dirPath));
-  ASSERT_EQ(std::string("/grandparent/"), enclosingDirPath);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  getEnclosingDirPath_grandparent_parent_child) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const std::string dirPath = "/grandparent/parent/child";
-
-  std::string enclosingDirPath;
-  ASSERT_NO_THROW(enclosingDirPath = api.getEnclosingDirPath(dirPath));
-  ASSERT_EQ(std::string("/grandparent/parent/"), enclosingDirPath);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, splitString_goodDay) {
-  using namespace cta;
-  const std::string line("col0 col1 col2 col3 col4 col5 col6 col7");
-  std::vector<std::string> columns;
-
-  TestingMockMiddleTierAdmin api;
-
-  ASSERT_NO_THROW(api.splitString(line, ' ', columns));
-  ASSERT_EQ((std::vector<std::string>::size_type)8, columns.size());
-  ASSERT_EQ(std::string("col0"), columns[0]);
-  ASSERT_EQ(std::string("col1"), columns[1]);
-  ASSERT_EQ(std::string("col2"), columns[2]);
-  ASSERT_EQ(std::string("col3"), columns[3]);
-  ASSERT_EQ(std::string("col4"), columns[4]);
-  ASSERT_EQ(std::string("col5"), columns[5]);
-  ASSERT_EQ(std::string("col6"), columns[6]);
-  ASSERT_EQ(std::string("col7"), columns[7]);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, splitString_emptyString) {
-  using namespace cta;
-  const std::string emptyString;
-  std::vector<std::string> columns;
-
-  TestingMockMiddleTierAdmin api;
-
-  ASSERT_NO_THROW(api.splitString(emptyString, ' ', columns));
-  ASSERT_EQ((std::vector<std::string>::size_type)0, columns.size());
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, splitString_noSeparatorInString) {
-  using namespace cta;
-  const std::string stringContainingNoSeparator =
-    "stringContainingNoSeparator";
-  std::vector<std::string> columns;
-
-  TestingMockMiddleTierAdmin api;
-
-  ASSERT_NO_THROW(api.splitString(stringContainingNoSeparator, ' ', columns));
-  ASSERT_EQ((std::vector<std::string>::size_type)1, columns.size());
-  ASSERT_EQ(stringContainingNoSeparator, columns[0]);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, createLogicalLibrary_new) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-
-  const std::string libraryName = "TestLogicalLibrary";
-  const std::string libraryComment = "Comment";
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, libraryName,
-    libraryComment));
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_EQ(1, libraries.size());
-
-    LogicalLibrary LogicalLibrary;
-    ASSERT_NO_THROW(LogicalLibrary = libraries.front());
-    ASSERT_EQ(libraryName, LogicalLibrary.getName());
-    ASSERT_EQ(libraryComment, LogicalLibrary.getComment());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createLogicalLibrary_already_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-
-  const std::string libraryName = "TestLogicalLibrary";
-  const std::string libraryComment = "Comment";
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, libraryName,
-    libraryComment));
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_EQ(1, libraries.size());
-
-    LogicalLibrary LogicalLibrary;
-    ASSERT_NO_THROW(LogicalLibrary = libraries.front());
-    ASSERT_EQ(libraryName, LogicalLibrary.getName());
-    ASSERT_EQ(libraryComment, LogicalLibrary.getComment());
-  }
-  
-  ASSERT_THROW(api.createLogicalLibrary(requester, libraryName,
-    libraryComment), std::exception);
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest,
-  createLogicalLibrary_lexicographical_order) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, "d", "Comment d"));
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, "b", "Comment b"));
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, "a", "Comment a"));
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, "c", "Comment c"));
-  
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_EQ(4, libraries.size());
-
-    ASSERT_EQ(std::string("a"), libraries.front().getName());
-    libraries.pop_front();
-    ASSERT_EQ(std::string("b"), libraries.front().getName());
-    libraries.pop_front();
-    ASSERT_EQ(std::string("c"), libraries.front().getName());
-    libraries.pop_front();
-    ASSERT_EQ(std::string("d"), libraries.front().getName());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteLogicalLibrary_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-
-  const std::string libraryName = "TestLogicalLibrary";
-  const std::string libraryComment = "Comment";
-  ASSERT_NO_THROW(api.createLogicalLibrary(requester, libraryName,
-    libraryComment));
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_EQ(1, libraries.size());
-  
-    LogicalLibrary logicalLibrary;
-    ASSERT_NO_THROW(logicalLibrary = libraries.front());
-    ASSERT_EQ(libraryName, logicalLibrary.getName());
-    ASSERT_EQ(libraryComment, logicalLibrary.getComment());
-
-    ASSERT_NO_THROW(api.deleteLogicalLibrary(requester, libraryName));
-  }
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-}
-
-TEST_F(cta_client_MockMiddleTierAdminTest, deleteLogicalLibrary_non_existing) {
-  using namespace cta;
-
-  TestingMockMiddleTierAdmin api;
-  const SecurityIdentity requester;
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-
-  const std::string libraryName = "TestLogicalLibrary";
-  ASSERT_THROW(api.deleteLogicalLibrary(requester, libraryName),
-    std::exception);
-
-  {
-    std::list<LogicalLibrary> libraries;
-    ASSERT_NO_THROW(libraries = api.getLogicalLibraries(requester));
-    ASSERT_TRUE(libraries.empty());
-  }
-}
-
-} // namespace unitTests