diff --git a/apps/files_sharing/api/server2server.php b/apps/federatedfilesharing/lib/RequestHandler.php
similarity index 98%
rename from apps/files_sharing/api/server2server.php
rename to apps/federatedfilesharing/lib/RequestHandler.php
index 034ec5105e4145f46254cd94ce155fe2b436ba6a..65925c3823c159d1662cf1795715dd5bb81867c0 100644
--- a/apps/files_sharing/api/server2server.php
+++ b/apps/federatedfilesharing/lib/RequestHandler.php
@@ -23,14 +23,21 @@
  *
  */
 
-namespace OCA\Files_Sharing\API;
+namespace OCA\FederatedFileSharing;
 
 use OCA\FederatedFileSharing\DiscoveryManager;
 use OCA\FederatedFileSharing\FederatedShareProvider;
 use OCA\Files_Sharing\Activity;
 use OCP\Files\NotFoundException;
 
-class Server2Server {
+/**
+ * Class RequestHandler
+ * 
+ * handles OCS Request to the federated share API
+ *
+ * @package OCA\FederatedFileSharing\API
+ */
+class RequestHandler {
 
 	/** @var FederatedShareProvider */
 	private $federatedShareProvider;
diff --git a/apps/files_sharing/tests/server2server.php b/apps/federatedfilesharing/tests/RequestHandlerTest.php
similarity index 94%
rename from apps/files_sharing/tests/server2server.php
rename to apps/federatedfilesharing/tests/RequestHandlerTest.php
index 1c8b5ed7a17ccdf40c4dd353f3c4d050c04aa626..ef0074dc03907f4b569b0218d6cb5c74450f9ae3 100644
--- a/apps/files_sharing/tests/server2server.php
+++ b/apps/federatedfilesharing/tests/RequestHandlerTest.php
@@ -23,14 +23,19 @@
  *
  */
 
-use OCA\Files_Sharing\Tests\TestCase;
+namespace OCA\FederatedFileSharing\Tests;
+
+use OC\Files\Filesystem;
+use OCA\FederatedFileSharing\DiscoveryManager;
+use OCA\FederatedFileSharing\RequestHandler;
 
 /**
- * Class Test_Files_Sharing_Api
+ * Class RequestHandlerTest
  *
+ * @package OCA\FederatedFileSharing\Tests
  * @group DB
  */
-class Test_Files_Sharing_S2S_OCS_API extends TestCase {
+class RequestHandlerTest extends TestCase {
 
 	const TEST_FOLDER_NAME = '/folder_share_api_test';
 
@@ -69,7 +74,7 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase {
 
 		$this->registerHttpHelper($httpHelperMock);
 
-		$this->s2s = new \OCA\Files_Sharing\API\Server2Server($this->federatedShareProvider);
+		$this->s2s = new RequestHandler($this->federatedShareProvider);
 
 		$this->connection = \OC::$server->getDatabaseConnection();
 	}
@@ -194,14 +199,14 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase {
 	function testDeleteUser($toDelete, $expected, $remainingUsers) {
 		$this->createDummyS2SShares();
 
-		$discoveryManager = new \OCA\FederatedFileSharing\DiscoveryManager(
+		$discoveryManager = new DiscoveryManager(
 			\OC::$server->getMemCacheFactory(),
 			\OC::$server->getHTTPClientService()
 		);
-		$manager = new OCA\Files_Sharing\External\Manager(
+		$manager = new \OCA\Files_Sharing\External\Manager(
 			\OC::$server->getDatabaseConnection(),
-			\OC\Files\Filesystem::getMountManager(),
-			\OC\Files\Filesystem::getLoader(),
+			Filesystem::getMountManager(),
+			Filesystem::getLoader(),
 			\OC::$server->getHTTPHelper(),
 			\OC::$server->getNotificationManager(),
 			$discoveryManager,
diff --git a/apps/federatedfilesharing/tests/TestCase.php b/apps/federatedfilesharing/tests/TestCase.php
new file mode 100644
index 0000000000000000000000000000000000000000..1e2e02394c4b8d442af46ba8ea71dcb1e0c1a870
--- /dev/null
+++ b/apps/federatedfilesharing/tests/TestCase.php
@@ -0,0 +1,133 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ * @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\FederatedFileSharing\Tests;
+
+use OC\Files\Filesystem;
+use OCA\Files\Share;
+use OCA\Files_Sharing\Appinfo\Application;
+
+/**
+ * Class Test_Files_Sharing_Base
+ *
+ * @group DB
+ *
+ * Base class for sharing tests.
+ */
+abstract class TestCase extends \Test\TestCase {
+
+	const TEST_FILES_SHARING_API_USER1 = "test-share-user1";
+	const TEST_FILES_SHARING_API_USER2 = "test-share-user2";
+
+	public static function setUpBeforeClass() {
+		parent::setUpBeforeClass();
+
+		// reset backend
+		\OC_User::clearBackends();
+		\OC_Group::clearBackends();
+
+		// create users
+		$backend = new \Test\Util\User\Dummy();
+		\OC_User::useBackend($backend);
+		$backend->createUser(self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER1);
+		$backend->createUser(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER2);
+	}
+
+	protected function setUp() {
+		parent::setUp();
+
+		//login as user1
+		self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+	}
+
+	public static function tearDownAfterClass() {
+		// cleanup users
+		$user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER1);
+		if ($user !== null) {
+			$user->delete();
+		}
+		$user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER2);
+		if ($user !== null) {
+			$user->delete();
+		}
+
+		\OC_Util::tearDownFS();
+		\OC_User::setUserId('');
+		Filesystem::tearDown();
+
+		// reset backend
+		\OC_User::clearBackends();
+		\OC_User::useBackend('database');
+		\OC_Group::clearBackends();
+		\OC_Group::useBackend(new \OC_Group_Database());
+
+		parent::tearDownAfterClass();
+	}
+
+	/**
+	 * @param string $user
+	 * @param bool $create
+	 * @param bool $password
+	 */
+	protected static function loginHelper($user, $create = false, $password = false) {
+
+		if ($password === false) {
+			$password = $user;
+		}
+
+		if ($create) {
+			\OC::$server->getUserManager()->createUser($user, $password);
+			\OC_Group::createGroup('group');
+			\OC_Group::addToGroup($user, 'group');
+		}
+
+		self::resetStorage();
+
+		\OC_Util::tearDownFS();
+		\OC::$server->getUserSession()->setUser(null);
+		\OC\Files\Filesystem::tearDown();
+		\OC::$server->getUserSession()->login($user, $password);
+		\OC::$server->getUserFolder($user);
+
+		\OC_Util::setupFS($user);
+	}
+
+	/**
+	 * reset init status for the share storage
+	 */
+	protected static function resetStorage() {
+		$storage = new \ReflectionClass('\OC\Files\Storage\Shared');
+		$isInitialized = $storage->getProperty('initialized');
+		$isInitialized->setAccessible(true);
+		$isInitialized->setValue($storage, false);
+		$isInitialized->setAccessible(false);
+	}
+
+}
diff --git a/ocs/routes.php b/ocs/routes.php
index af9c3e74137a3029c7550598826c3f35bcf4827c..24af2460881025935824cfd5fc2b62305cb2bdca 100644
--- a/ocs/routes.php
+++ b/ocs/routes.php
@@ -100,7 +100,7 @@ API::register(
 // Server-to-Server Sharing
 if (\OC::$server->getAppManager()->isEnabledForUser('files_sharing')) {
 	$federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing');
-	$s2s = new \OCA\Files_Sharing\API\Server2Server($federatedSharingApp->getFederatedShareProvider());
+	$s2s = new OCA\FederatedFileSharing\RequestHandler($federatedSharingApp->getFederatedShareProvider());
 	API::register('post',
 		'/cloud/shares',
 		array($s2s, 'createShare'),