diff --git a/lib/db.php b/lib/db.php
index b9505b88d8274769ec5d58d008a6d50a7d83e142..1e5d12649df0be92dedd794e5408cb7fade84b33 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -87,6 +87,7 @@ class OC_DB {
 							'driver' => 'pdo_sqlite',
 					);
 					$connectionParams['adapter'] = '\OC\DB\AdapterSqlite';
+					$connectionParams['wrapperClass'] = 'OC\DB\Connection';
 					break;
 				case 'mysql':
 					$connectionParams = array(
@@ -99,6 +100,7 @@ class OC_DB {
 							'driver' => 'pdo_mysql',
 					);
 					$connectionParams['adapter'] = '\OC\DB\Adapter';
+					$connectionParams['wrapperClass'] = 'OC\DB\Connection';
 					break;
 				case 'pgsql':
 					$connectionParams = array(
@@ -110,6 +112,7 @@ class OC_DB {
 							'driver' => 'pdo_pgsql',
 					);
 					$connectionParams['adapter'] = '\OC\DB\AdapterPgSql';
+					$connectionParams['wrapperClass'] = 'OC\DB\Connection';
 					break;
 				case 'oci':
 					$connectionParams = array(
@@ -124,6 +127,7 @@ class OC_DB {
 						$connectionParams['port'] = $port;
 					}
 					$connectionParams['adapter'] = '\OC\DB\AdapterOCI8';
+					$connectionParams['wrapperClass'] = 'OC\DB\OracleConnection';
 					$eventManager->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\OracleSessionInit);
 					break;
 				case 'mssql':
@@ -137,11 +141,11 @@ class OC_DB {
 							'driver' => 'pdo_sqlsrv',
 					);
 					$connectionParams['adapter'] = '\OC\DB\AdapterSQLSrv';
+					$connectionParams['wrapperClass'] = 'OC\DB\Connection';
 					break;
 				default:
 					return false;
 			}
-			$connectionParams['wrapperClass'] = 'OC\DB\Connection';
 			$connectionParams['tablePrefix'] = OC_Config::getValue('dbtableprefix', 'oc_' );
 			try {
 				self::$connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config, $eventManager);
diff --git a/lib/db/oracleconnection.php b/lib/db/oracleconnection.php
new file mode 100644
index 0000000000000000000000000000000000000000..e2fc4644f479e62e5e4a7961b8244e039aea75b8
--- /dev/null
+++ b/lib/db/oracleconnection.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\DB;
+
+class OracleConnection extends Connection {
+	/**
+	 * Quote the keys of the array
+	 */
+	private function quoteKeys(array $data) {
+		$return = array();
+		foreach($data as $key => $value) {
+			$return[$this->quoteIdentifier($key)] = $value;
+		}
+		return $return;
+	}
+
+	/*
+	 * {@inheritDoc}
+	 */
+	public function insert($tableName, array $data, array $types = array()) {
+		$tableName = $this->quoteIdentifier($tableName);
+		$data = $this->quoteKeys($data);
+		return parent::insert($tableName, $data, $types);
+	}
+
+	/*
+	 * {@inheritDoc}
+	 */
+	public function update($tableName, array $data, array $identifier, array $types = array()) {
+		$tableName = $this->quoteIdentifier($tableName);
+		$data = $this->quoteKeys($data);
+		$identifier = $this->quoteKeys($identifier);
+		return parent::update($tableName, $data, $identifier, $types);
+	}
+
+	/*
+	 * {@inheritDoc}
+	 */
+	public function delete($tableName, array $identifier) {
+		$tableName = $this->quoteIdentifier($tableName);
+		$identifier = $this->quoteKeys($identifier);
+		return parent::delete($tableName, $identifier);
+	}
+}
diff --git a/lib/legacy/preferences.php b/lib/legacy/preferences.php
new file mode 100644
index 0000000000000000000000000000000000000000..a663db7598b5bf2925c32c5a201aae5819484caa
--- /dev/null
+++ b/lib/legacy/preferences.php
@@ -0,0 +1,146 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Frank Karlitschek
+ * @author Jakob Sack
+ * @copyright 2012 Frank Karlitschek frank@owncloud.org
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library 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 along with this library.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * This class provides an easy way for storing user preferences.
+ */
+OC_Preferences::$object = new \OC\Preferences(OC_DB::getConnection());
+class OC_Preferences{
+	public static $object;
+	/**
+	 * @brief Get all users using the preferences
+	 * @return array with user ids
+	 *
+	 * This function returns a list of all users that have at least one entry
+	 * in the preferences table.
+	 */
+	public static function getUsers() {
+		return self::$object->getUsers();
+	}
+
+	/**
+	 * @brief Get all apps of a user
+	 * @param string $user user
+	 * @return array with app ids
+	 *
+	 * This function returns a list of all apps of the user that have at least
+	 * one entry in the preferences table.
+	 */
+	public static function getApps( $user ) {
+		return self::$object->getApps( $user );
+	}
+
+	/**
+	 * @brief Get the available keys for an app
+	 * @param string $user user
+	 * @param string $app the app we are looking for
+	 * @return array with key names
+	 *
+	 * This function gets all keys of an app of an user. Please note that the
+	 * values are not returned.
+	 */
+	public static function getKeys( $user, $app ) {
+		return self::$object->getKeys( $user, $app );
+	}
+
+	/**
+	 * @brief Gets the preference
+	 * @param string $user user
+	 * @param string $app app
+	 * @param string $key key
+	 * @param string $default = null, default value if the key does not exist
+	 * @return string the value or $default
+	 *
+	 * This function gets a value from the preferences table. If the key does
+	 * not exist the default value will be returned
+	 */
+	public static function getValue( $user, $app, $key, $default = null ) {
+		return self::$object->getValue( $user, $app, $key, $default );
+	}
+
+	/**
+	 * @brief sets a value in the preferences
+	 * @param string $user user
+	 * @param string $app app
+	 * @param string $key key
+	 * @param string $value value
+	 * @return bool
+	 *
+	 * Adds a value to the preferences. If the key did not exist before, it
+	 * will be added automagically.
+	 */
+	public static function setValue( $user, $app, $key, $value ) {
+		self::$object->setValue( $user, $app, $key, $value );
+		return true;
+	}
+
+	/**
+	 * @brief Deletes a key
+	 * @param string $user user
+	 * @param string $app app
+	 * @param string $key key
+	 *
+	 * Deletes a key.
+	 */
+	public static function deleteKey( $user, $app, $key ) {
+		self::$object->deleteKey( $user, $app, $key );
+		return true;
+	}
+
+	/**
+	 * @brief Remove app of user from preferences
+	 * @param string $user user
+	 * @param string $app app
+	 * @return bool
+	 *
+	 * Removes all keys in preferences belonging to the app and the user.
+	 */
+	public static function deleteApp( $user, $app ) {
+		self::$object->deleteApp( $user, $app );
+		return true;
+	}
+
+	/**
+	 * @brief Remove user from preferences
+	 * @param string $user user
+	 * @return bool
+	 *
+	 * Removes all keys in preferences belonging to the user.
+	 */
+	public static function deleteUser( $user ) {
+		self::$object->deleteUser( $user );
+		return true;
+	}
+
+	/**
+	 * @brief Remove app from all users
+	 * @param string $app app
+	 * @return bool
+	 *
+	 * Removes all keys in preferences belonging to the app.
+	 */
+	public static function deleteAppFromAllUsers( $app ) {
+		self::$object->deleteAppFromAllUsers( $app );
+		return true;
+	}
+}
diff --git a/lib/preferences.php b/lib/preferences.php
index 11ca760830edea40b35ead1154e02d516fc92328..359d9a83589923e688f20a3ef92e3fb2a8ed380d 100644
--- a/lib/preferences.php
+++ b/lib/preferences.php
@@ -34,10 +34,21 @@
  *
  */
 
+namespace OC;
+
+use \OC\DB\Connection;
+
+
 /**
  * This class provides an easy way for storing user preferences.
  */
-class OC_Preferences{
+class Preferences {
+	protected $conn;
+
+	public function __construct(Connection $conn) {
+		$this->conn = $conn;
+	}
+
 	/**
 	 * @brief Get all users using the preferences
 	 * @return array with user ids
@@ -45,14 +56,13 @@ class OC_Preferences{
 	 * This function returns a list of all users that have at least one entry
 	 * in the preferences table.
 	 */
-	public static function getUsers() {
-		// No need for more comments
-		$query = OC_DB::prepare( 'SELECT DISTINCT( `userid` ) FROM `*PREFIX*preferences`' );
-		$result = $query->execute();
+	public function getUsers() {
+		$query = 'SELECT DISTINCT `userid` FROM `*PREFIX*preferences`';
+		$result = $this->conn->executeQuery( $query );
 
 		$users = array();
-		while( $row = $result->fetchRow()) {
-			$users[] = $row["userid"];
+		while( $userid = $result->fetchColumn()) {
+			$users[] = $userid;
 		}
 
 		return $users;
@@ -66,14 +76,13 @@ class OC_Preferences{
 	 * This function returns a list of all apps of the user that have at least
 	 * one entry in the preferences table.
 	 */
-	public static function getApps( $user ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'SELECT DISTINCT( `appid` ) FROM `*PREFIX*preferences` WHERE `userid` = ?' );
-		$result = $query->execute( array( $user ));
+	public function getApps( $user ) {
+		$query = 'SELECT DISTINCT `appid` FROM `*PREFIX*preferences` WHERE `userid` = ?';
+		$result = $this->conn->executeQuery( $query, array( $user ) );
 
 		$apps = array();
-		while( $row = $result->fetchRow()) {
-			$apps[] = $row["appid"];
+		while( $appid = $result->fetchColumn()) {
+			$apps[] = $appid;
 		}
 
 		return $apps;
@@ -88,14 +97,13 @@ class OC_Preferences{
 	 * This function gets all keys of an app of an user. Please note that the
 	 * values are not returned.
 	 */
-	public static function getKeys( $user, $app ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'SELECT `configkey` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?' );
-		$result = $query->execute( array( $user, $app ));
+	public function getKeys( $user, $app ) {
+		$query = 'SELECT `configkey` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?';
+		$result = $this->conn->executeQuery( $query, array( $user, $app ));
 
 		$keys = array();
-		while( $row = $result->fetchRow()) {
-			$keys[] = $row["configkey"];
+		while( $key = $result->fetchColumn()) {
+			$keys[] = $key;
 		}
 
 		return $keys;
@@ -112,16 +120,14 @@ class OC_Preferences{
 	 * This function gets a value from the preferences table. If the key does
 	 * not exist the default value will be returned
 	 */
-	public static function getValue( $user, $app, $key, $default = null ) {
+	public function getValue( $user, $app, $key, $default = null ) {
 		// Try to fetch the value, return default if not exists.
-		$query = OC_DB::prepare( 'SELECT `configvalue` FROM `*PREFIX*preferences`'
-			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?' );
-		$result = $query->execute( array( $user, $app, $key ));
-
-		$row = $result->fetchRow();
+		$query = 'SELECT `configvalue` FROM `*PREFIX*preferences`'
+			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
+		$row = $this->conn->fetchAssoc( $query, array( $user, $app, $key ));
 		if($row) {
 			return $row["configvalue"];
-		}else{
+		} else {
 			return $default;
 		}
 	}
@@ -132,29 +138,36 @@ class OC_Preferences{
 	 * @param string $app app
 	 * @param string $key key
 	 * @param string $value value
-	 * @return bool
 	 *
 	 * Adds a value to the preferences. If the key did not exist before, it
 	 * will be added automagically.
 	 */
-	public static function setValue( $user, $app, $key, $value ) {
+	public function setValue( $user, $app, $key, $value ) {
 		// Check if the key does exist
-		$query = OC_DB::prepare( 'SELECT `configvalue` FROM `*PREFIX*preferences`'
-			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?' );
-		$values=$query->execute(array($user, $app, $key))->fetchAll();
-		$exists=(count($values)>0);
+		$query = 'SELECT COUNT(*) FROM `*PREFIX*preferences`'
+			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
+		$count = $this->conn->fetchColumn( $query, array( $user, $app, $key ));
+		$exists = $count > 0;
 
 		if( !$exists ) {
-			$query = OC_DB::prepare( 'INSERT INTO `*PREFIX*preferences`'
-				.' ( `userid`, `appid`, `configkey`, `configvalue` ) VALUES( ?, ?, ?, ? )' );
-			$query->execute( array( $user, $app, $key, $value ));
+			$data = array(
+				'userid' => $user,
+				'appid' => $app,
+				'configkey' => $key,
+				'configvalue' => $value,
+			);
+			$this->conn->insert('*PREFIX*preferences', $data);
+		} else {
+			$data = array(
+				'configvalue' => $value,
+			);
+			$where = array(
+				'userid' => $user,
+				'appid' => $app,
+				'configkey' => $key,
+			);
+			$this->conn->update('*PREFIX*preferences', $data, $where);
 		}
-		else{
-			$query = OC_DB::prepare( 'UPDATE `*PREFIX*preferences` SET `configvalue` = ?'
-				.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?' );
-			$query->execute( array( $value, $user, $app, $key ));
-		}
-		return true;
 	}
 
 	/**
@@ -162,62 +175,58 @@ class OC_Preferences{
 	 * @param string $user user
 	 * @param string $app app
 	 * @param string $key key
-	 * @return bool
 	 *
 	 * Deletes a key.
 	 */
-	public static function deleteKey( $user, $app, $key ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'DELETE FROM `*PREFIX*preferences`'
-			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?' );
-		$query->execute( array( $user, $app, $key ));
-
-		return true;
+	public function deleteKey( $user, $app, $key ) {
+		$where = array(
+			'userid' => $user,
+			'appid' => $app,
+			'configkey' => $key,
+		);
+		$this->conn->delete('*PREFIX*preferences', $where);
 	}
 
 	/**
 	 * @brief Remove app of user from preferences
 	 * @param string $user user
 	 * @param string $app app
-	 * @return bool
 	 *
-	 * Removes all keys in appconfig belonging to the app and the user.
+	 * Removes all keys in preferences belonging to the app and the user.
 	 */
-	public static function deleteApp( $user, $app ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'DELETE FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?' );
-		$query->execute( array( $user, $app ));
-
-		return true;
+	public function deleteApp( $user, $app ) {
+		$where = array(
+			'userid' => $user,
+			'appid' => $app,
+		);
+		$this->conn->delete('*PREFIX*preferences', $where);
 	}
 
 	/**
 	 * @brief Remove user from preferences
 	 * @param string $user user
-	 * @return bool
 	 *
-	 * Removes all keys in appconfig belonging to the user.
+	 * Removes all keys in preferences belonging to the user.
 	 */
-	public static function deleteUser( $user ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'DELETE FROM `*PREFIX*preferences` WHERE `userid` = ?' );
-		$query->execute( array( $user ));
-
-		return true;
+	public function deleteUser( $user ) {
+		$where = array(
+			'userid' => $user,
+		);
+		$this->conn->delete('*PREFIX*preferences', $where);
 	}
 
 	/**
 	 * @brief Remove app from all users
 	 * @param string $app app
-	 * @return bool
 	 *
 	 * Removes all keys in preferences belonging to the app.
 	 */
-	public static function deleteAppFromAllUsers( $app ) {
-		// No need for more comments
-		$query = OC_DB::prepare( 'DELETE FROM `*PREFIX*preferences` WHERE `appid` = ?' );
-		$query->execute( array( $app ));
-
-		return true;
+	public function deleteAppFromAllUsers( $app ) {
+		$where = array(
+			'appid' => $app,
+		);
+		$this->conn->delete('*PREFIX*preferences', $where);
 	}
 }
+
+require_once __DIR__.'/legacy/'.basename(__FILE__);
diff --git a/tests/lib/preferences.php b/tests/lib/preferences.php
index 612cc81926ba8e33302513f89b5dde73d42e2617..68b794e9ea9526d574710d10552978a0c36efc24 100644
--- a/tests/lib/preferences.php
+++ b/tests/lib/preferences.php
@@ -1,6 +1,7 @@
 <?php
 /**
  * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it>
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
  * This file is licensed under the Affero General Public License version 3 or
  * later.
  * See the COPYING-README file.
@@ -124,3 +125,181 @@ class Test_Preferences extends PHPUnit_Framework_TestCase {
 		$this->assertEquals(0, $result->numRows());
 	}
 }
+
+class Test_Preferences_Object extends PHPUnit_Framework_TestCase {
+	public function testGetUsers()
+	{
+		$statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+		$statementMock->expects($this->exactly(2))
+			->method('fetchColumn')
+			->will($this->onConsecutiveCalls('foo', false));
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('executeQuery')
+			->with($this->equalTo('SELECT DISTINCT `userid` FROM `*PREFIX*preferences`'))
+			->will($this->returnValue($statementMock));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$apps = $preferences->getUsers();
+		$this->assertEquals(array('foo'), $apps);
+	}
+
+	public function testGetApps()
+	{
+		$statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+		$statementMock->expects($this->exactly(2))
+			->method('fetchColumn')
+			->will($this->onConsecutiveCalls('foo', false));
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('executeQuery')
+			->with($this->equalTo('SELECT DISTINCT `appid` FROM `*PREFIX*preferences` WHERE `userid` = ?'),
+				$this->equalTo(array('bar')))
+			->will($this->returnValue($statementMock));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$apps = $preferences->getApps('bar');
+		$this->assertEquals(array('foo'), $apps);
+	}
+
+	public function testGetKeys()
+	{
+		$statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+		$statementMock->expects($this->exactly(2))
+			->method('fetchColumn')
+			->will($this->onConsecutiveCalls('foo', false));
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('executeQuery')
+			->with($this->equalTo('SELECT `configkey` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?'),
+				$this->equalTo(array('bar', 'moo')))
+			->will($this->returnValue($statementMock));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$keys = $preferences->getKeys('bar', 'moo');
+		$this->assertEquals(array('foo'), $keys);
+	}
+
+	public function testGetValue()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->exactly(2))
+			->method('fetchAssoc')
+			->with($this->equalTo('SELECT `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?'),
+				$this->equalTo(array('grg', 'bar', 'red')))
+			->will($this->onConsecutiveCalls(array('configvalue'=>'foo'), null));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$value = $preferences->getValue('grg', 'bar', 'red');
+		$this->assertEquals('foo', $value);
+		$value = $preferences->getValue('grg', 'bar', 'red', 'def');
+		$this->assertEquals('def', $value);
+	}
+
+	public function testSetValue()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->exactly(2))
+			->method('fetchColumn')
+			->with($this->equalTo('SELECT COUNT(*) FROM `*PREFIX*preferences`'
+				.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?'),
+				$this->equalTo(array('grg', 'bar', 'foo')))
+			->will($this->onConsecutiveCalls(0, 1));
+		$connectionMock->expects($this->once())
+			->method('insert')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'userid' => 'grg',
+						'appid' => 'bar',
+						'configkey' => 'foo',
+						'configvalue' => 'v1',
+					)
+				));
+		$connectionMock->expects($this->once())
+			->method('update')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'configvalue' => 'v2',
+					)),
+				$this->equalTo(
+					array(
+						'userid' => 'grg',
+						'appid' => 'bar',
+						'configkey' => 'foo',
+					)
+				));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$preferences->setValue('grg', 'bar', 'foo', 'v1');
+		$preferences->setValue('grg', 'bar', 'foo', 'v2');
+	}
+
+	public function testDeleteKey()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('delete')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'userid' => 'grg',
+						'appid' => 'bar',
+						'configkey' => 'foo',
+					)
+				));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$preferences->deleteKey('grg', 'bar', 'foo');
+	}
+
+	public function testDeleteApp()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('delete')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'userid' => 'grg',
+						'appid' => 'bar',
+					)
+				));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$preferences->deleteApp('grg', 'bar');
+	}
+
+	public function testDeleteUser()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('delete')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'userid' => 'grg',
+					)
+				));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$preferences->deleteUser('grg');
+	}
+
+	public function testDeleteAppFromAllUsers()
+	{
+		$connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+		$connectionMock->expects($this->once())
+			->method('delete')
+			->with($this->equalTo('*PREFIX*preferences'),
+				$this->equalTo(
+					array(
+						'appid' => 'bar',
+					)
+				));
+
+		$preferences = new OC\Preferences($connectionMock);
+		$preferences->deleteAppFromAllUsers('bar');
+	}
+}