Index: tests/920-utf8.phpt
===================================================================
--- tests/920-utf8.phpt	(revision 302740)
+++ tests/920-utf8.phpt	(working copy)
@@ -12,10 +12,11 @@
 $utf8str = 'une chaîne unicode qui sera transformée lors du second test';
 echo $twitter->statuses->update($utf8str) . "\n";
 
-$twitter  = Services_Twitter_factory('utf8', true, array(
+$twitter  = Services_Twitter_factory('utf8-2', true, array(
     'format'     => 'xml',
     'raw_format' => true
 ));
+$utf8str = 'une chaîne unicode qui sera transformée lors du second test.';
 $isoStr = utf8_decode($utf8str);
 echo $twitter->statuses->update($isoStr);
 
@@ -31,6 +32,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <status>
   %s
-  <text>une cha&#238;ne unicode qui sera transform&#233;e lors du second test</text>
+  <text>une cha&#238;ne unicode qui sera transform&#233;e lors du second test.</text>
   %s
 </status>
Index: tests/setup.php
===================================================================
--- tests/setup.php	(revision 302740)
+++ tests/setup.php	(working copy)
@@ -25,19 +25,25 @@
 require_once 'Services/Twitter.php';
 require_once 'HTTP/Request2/Response.php';
 require_once 'HTTP/Request2/Adapter/Mock.php';
+require_once 'HTTP/OAuth/Consumer.php';
 
 $cfgfile = dirname(__FILE__) . '/tests-config.php';
 if (false === @include_once $cfgfile) {
     // default config
     $config = array(
-        'user'      => 'test_user',
-        'pass'      => 'test_password',
-        'friend'    => 'test_friend',
-        'status_id' => 100000,
-        'live_test' => false,
-        'list_name' => 'test-list',
-        'list_slug' => 'test-list',
-        'list_user' => 100000,
+        'user'                  => 'test_user',
+        'pass'                  => 'test_password',
+        'friend'                => 'test_friend',
+        'status_id'             => 100000,
+        'live_test'             => false,
+        'list_name'             => 'test-list',
+        'list_slug'             => 'test-list',
+        'list_user'             => 100000,
+        'oauth_test'            => true,
+        'consumer_key'          => 'xxxx',
+        'consumer_secret'       => 'xxxx',
+        'access_token'          => 'xxxx',
+        'access_token_secret'   => 'xxxx',
     );
 }
 
@@ -56,7 +62,16 @@
     //$options['raw_format'] = true;
     global $config;
     if ($auth) {
-        $twitter = new Services_Twitter($config['user'], $config['pass'], $options);
+        if ($config['oauth_test']) {
+            $twitter = new Services_Twitter(null, null, $options);
+            $oauth   = new HTTP_OAuth_Consumer($config['consumer_key'],
+                                               $config['consumer_secret'],
+                                               $config['access_token'],
+                                               $config['access_token_secret']);
+            $twitter->setOAuth($oauth);
+        } else {
+            $twitter = new Services_Twitter($config['user'], $config['pass'], $options);
+        }
     } else {
         $twitter = new Services_Twitter(null, null, $options);
     }
Index: tests/900-exceptions.phpt
===================================================================
--- tests/900-exceptions.phpt	(revision 302740)
+++ tests/900-exceptions.phpt	(working copy)
@@ -65,7 +65,11 @@
     Services_Twitter::$uri = 'http://twitter.com';
 } catch (Services_Twitter_Exception $exc) {
     echo $exc . "\n";
-    var_dump($exc->getResponse() instanceof HTTP_Request2_Response);
+    if ($config['oauth_test']) {
+        var_dump($exc->getResponse() instanceof HTTP_OAuth_Consumer_Response);
+    } else {
+        var_dump($exc->getResponse() instanceof HTTP_Request2_Response);
+    }
 }
 
 Services_Twitter::$uri = 'this is a bad url indeed...';
Index: tests/910-options.phpt
===================================================================
--- tests/910-options.phpt	(revision 302740)
+++ tests/910-options.phpt	(working copy)
@@ -1,5 +1,14 @@
 --TEST--
 options
+--SKIPIF--
+<?php
+
+require_once dirname(__FILE__) . '/setup.php';
+if ($config['oauth_test']) {
+    echo "skip";
+}
+
+?>
 --FILE--
 <?php
 
Index: Services/Twitter.php
===================================================================
--- Services/Twitter.php	(revision 302740)
+++ Services/Twitter.php	(working copy)
@@ -376,7 +376,7 @@
             $this->oauth->accept($consumerRequest);
 
             $response = $this->oauth->sendRequest($uri, $params, $method);
-        } catch (HTTP_Request2_Exception $exc) {
+        } catch (HTTP_OAuth_Exception $exc) {
             throw new Services_Twitter_Exception(
                 $exc->getMessage(),
                 $exc, // the original exception cause
@@ -597,6 +597,7 @@
         // check if we have is a search or trends call, in this case the base 
         // uri is different
         if (   $cat == 'search' 
+            || ( $cat == null && (string)$endpoint['name'] == 'search')
             || ( $cat == 'trends'
             && !in_array((string)$endpoint['name'], array('available', 'location')))
         ) {
@@ -681,15 +682,15 @@
                 $routing[array_search(':' . $pName, $routing)] = rawurlencode($arg);
             } else {
                 if ($pName == 'id') {
-                     if (count($routing) > 1) {
-                         $params[$pName] = $arg;
-                         if ($method == 'DELETE') {
-                             $method = "POST";
-                             $params['_method'] = 'DELETE';
-                         }
-                     } else {
-                         $path .= '/' . $arg;
-                     }
+                    if (count($routing) > 1) {
+                        $params[$pName] = $arg;
+                        if ($method == 'DELETE') {
+                            $method = "POST";
+                            $params['_method'] = 'DELETE';
+                        }
+                    } else {
+                        $path .= '/' . $arg;
+                    }
                 } else {
                     if ($pType == 'string' && !$this->isUtf8($arg)) {
                         // iso-8859-1 string that we must convert to unicode
Index: data/api.xml
===================================================================
--- data/api.xml	(revision 302740)
+++ data/api.xml	(working copy)
@@ -408,10 +408,14 @@
         <endpoint name="create" method="POST" auth_required="true">
             <formats>xml,json</formats>
             <param name="id" type="id_or_screenname" required="true"/>
+            <param name="user_id" type="id_or_screenname" required="false"/>
+            <param name="screen_name" type="id_or_screenname" required="false"/>
         </endpoint>
         <endpoint name="destroy" method="POST" auth_required="true">
             <formats>xml,json</formats>
             <param name="id" type="id_or_screenname" required="true"/>
+            <param name="user_id" type="id_or_screenname" required="false"/>
+            <param name="screen_name" type="id_or_screenname" required="false"/>
         </endpoint>
         <endpoint name="exists" method="GET" auth_required="true" min_args="1">
             <formats>xml,json</formats>
@@ -420,9 +424,12 @@
             <param name="screen_name" type="id_or_screenname" required="false"/>
         </endpoint>
         <endpoint name="blocking" method="GET" auth_required="true">
+            <formats>xml,json</formats>
             <param name="page" type="integer" required="false"/>
         </endpoint>
-        <!-- TODO add blocks/blocking/ids but this is not currently possible -->
+        <endpoint name="blocking_ids" method="GET" auth_required="true" routing="/blocks/blocking/ids">
+            <formats>xml,json</formats>
+        </endpoint>
     </category>
 
     <!-- Report spam methods -->

