Gergő Tisza has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/248567

Change subject: Vendorize OAuth library
......................................................................

Vendorize OAuth library

Depends on Iae6d7742cd7ae4c32c5f5a319edeaa01f29b5cfa.

Change-Id: I70a9849a81558b292a7f3545e9f29a09669c0b12
---
M composer.json
D src/OAuth/Client.php
D src/OAuth/ClientConfig.php
D src/OAuth/Consumer.php
D src/OAuth/Exception.php
D src/OAuth/Request.php
D src/OAuth/SignatureMethod.php
D src/OAuth/SignatureMethod/HmacSha1.php
D src/OAuth/SignatureMethod/Plaintext.php
D src/OAuth/SignatureMethod/RsaSha1.php
D src/OAuth/Token.php
D src/OAuth/Util.php
D tests/OAuth/ConsumerTest.php
D tests/OAuth/RequestTest.php
D tests/OAuth/SignatureMethod/HmacSha1Test.php
D tests/OAuth/SignatureMethod/PlaintextTest.php
D tests/OAuth/SignatureMethod/RsaSha1Test.php
D tests/OAuth/TokenTest.php
18 files changed, 3 insertions(+), 2,514 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/slimapp 
refs/changes/67/248567/1

diff --git a/composer.json b/composer.json
index 55d4a14..0037294 100644
--- a/composer.json
+++ b/composer.json
@@ -23,6 +23,9 @@
                "twig/twig": "~1.20",
                "wikimedia/simplei18n": "~1.0"
        },
+       "suggest": {
+               "mediawiki/oauthclient": "~0.1"
+       },
        "autoload": {
                "psr-4": {
                        "Wikimedia\\Slimapp\\": "src/"
diff --git a/src/OAuth/Client.php b/src/OAuth/Client.php
deleted file mode 100644
index 133bfbe..0000000
--- a/src/OAuth/Client.php
+++ /dev/null
@@ -1,358 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * This file is part of Wikimedia Slim application library
- *
- * Wikimedia Slim application library is free software: you can
- * redistribute it and/or modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * Wikimedia Slim application 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with Wikimedia Grants Review application.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * @file
- * @copyright © 2015 Chris Steipp, Wikimedia Foundation and contributors.
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerInterface;
-use Psr\Log\NullLogger;
-use Wikimedia\Slimapp\OAuth\SignatureMethod\HmacSha1;
-use Exception;
-
-/**
- * MediaWiki OAuth client.
- */
-class Client implements LoggerAwareInterface {
-
-       /**
-        * @var LoggerInterface $logger
-        */
-       protected $logger;
-
-       /**
-        * @var ClientConfig $config
-        */
-       private $config;
-
-       /**
-        * Any extra params in the call that need to be signed
-        * @var array $extraParams
-        */
-       private $extraParams = array();
-
-       /**
-        * url, defaults to oob
-        * @var string $callbackUrl
-        */
-       private $callbackUrl = 'oob';
-
-       /**
-        * Track the last random nonce generated by the OAuth lib, used to 
verify
-        * /identity response isn't a replay
-        * @var string $lastNonce
-        */
-       private $lastNonce;
-
-       /**
-        * @param ClientConfig $config
-        * @param LoggerInterface $logger
-        */
-       function __construct(
-               ClientConfig $config,
-               LoggerInterface $logger = null
-       ) {
-               $this->config = $config;
-               $this->logger = $logger ?: new NullLogger();
-       }
-
-       /**
-        * @param LoggerInterface $logger
-        */
-       public function setLogger( LoggerInterface $logger ) {
-               $this->logger = $logger;
-       }
-
-       /**
-        * @param string $url
-        * @param string $key
-        * @param string $secret
-        * @return MediaWiki
-        */
-       public static function newFromKeyAndSecret( $url, $key, $secret ) {
-               $config = new ClientConfig( $url, true, true );
-               $config->setConsumer( new Consumer( $key, $secret ) );
-               return new static( $config );
-       }
-
-       /**
-        * @param string $key
-        * @param string $value
-        */
-       public function setExtraParam( $key, $value ) {
-               $this->extraParams[$key] = $value;
-       }
-
-       /**
-        * @param array $params
-        */
-       public function setExtraParams( array $params ) {
-               $this->extraParams = $params;
-       }
-
-       /**
-        * @param string $url
-        */
-       public function setCallback( $url ) {
-               $this->callbackUrl = $url;
-       }
-
-       /**
-        * First part of 3-legged OAuth, get the request Token.
-        * Redirect your authorizing users to the redirect url, and keep
-        * track of the request token since you need to pass it into complete()
-        *
-        * @return array (redirect, request/temp token)
-        */
-       public function initiate() {
-               $initUrl = $this->config->endpointURL .
-                       '/initiate&format=json&oauth_callback=' .
-                       urlencode( $this->callbackUrl );
-               $data = $this->makeOAuthCall( null, $initUrl );
-               $return = json_decode( $data );
-               if ( $return->oauth_callback_confirmed !== 'true' ) {
-                       throw new Exception( "Callback wasn't confirmed" );
-               }
-               $requestToken = new Token( $return->key, $return->secret );
-               $url = $this->config->redirURL ?:
-                       $this->config->endpointURL . "/authorize&";
-               $url .= 
"oauth_token={$requestToken->key}&oauth_consumer_key={$this->config->consumer->key}";
-               return array( $url, $requestToken );
-       }
-
-       /**
-        * The final leg of the OAuth handshake. Exchange the request Token from
-        * initiate() and the verification code that the user submitted back to 
you
-        * for an access token, which you'll use for all API calls.
-        *
-        * @param Token $requestToken Authorization code sent to the callback 
url
-        * @param string Temp/request token obtained from initiate, or null if 
this
-        *     object was used and the token is already set.
-        * @return Token The access token
-        */
-       public function complete( Token $requestToken, $verifyCode ) {
-               $tokenUrl = $this->config->endpointURL . '/token&format=json';
-               $this->setExtraParam( 'oauth_verifier', $verifyCode );
-               $data = $this->makeOAuthCall( $requestToken, $tokenUrl );
-               $return = json_decode( $data );
-               $accessToken = new Token( $return->key, $return->secret );
-               // Cleanup after ourselves
-               $this->setExtraParams = array();
-               return $accessToken;
-       }
-
-       /**
-        * Optional step. This call the MediaWiki specific /identify method, 
which
-        * returns a signed statement of the authorizing user's identity. Use 
this
-        * if you are authenticating users in your application, and you need to
-        * know their username, groups, rights, etc in MediaWiki.
-        *
-        * @param Token $accessToken Access token from complete()
-        * @return object containing attributes of the user
-        */
-       public function identify( Token $accessToken ) {
-               $identifyUrl = $this->config->endpointURL . '/identify';
-               $data = $this->makeOAuthCall( $accessToken, $identifyUrl );
-               $identity = $this->decodeJWT( $data, 
$this->config->consumer->secret );
-               if ( !$this->validateJWT(
-                       $identity,
-                       $this->config->consumer->key,
-                       $this->config->canonicalServerUrl,
-                       $this->lastNonce
-               ) ) {
-                       throw new Exception( "JWT didn't validate" );
-               }
-               return $identity;
-       }
-
-       /**
-        * Make a signed request to MediaWiki
-        *
-        * @param Token $token additional token to use in signature, besides
-        *     the consumer token. In most cases, this will be the access token 
you
-        *     got from complete(), but we set it to the request token when
-        *     finishing the handshake.
-        * @param string $url URL to call
-        * @param bool $isPost true if this should be a POST request
-        * @param array $postFields POST parameters, only if $isPost is also 
true
-        * @return string Body from the curl request
-        */
-       public function makeOAuthCall(
-               /*Token*/ $token, $url, $isPost = false, array $postFields = 
null
-       ) {
-               $params = array();
-               // Get any params from the url
-               if ( strpos( $url, '?' ) ) {
-                       $parsed = parse_url( $url );
-                       parse_str( $parsed['query'], $params );
-               }
-               $params += $this->extraParams;
-               if ( $isPost && $postFields ) {
-                       $params += $postFields;
-               }
-               $method = $isPost ? 'POST' : 'GET';
-               $req = Request::fromConsumerAndToken(
-                       $this->config->consumer,
-                       $token,
-                       $method,
-                       $url,
-                       $params
-               );
-               $req->signRequest(
-                       new HmacSha1(),
-                       $this->config->consumer,
-                       $token
-               );
-               $this->lastNonce = $req->getParameter( 'oauth_nonce' );
-               return $this->makeCurlCall(
-                       $url,
-                       $req->toHeader(),
-                       $isPost,
-                       $postFields,
-                       $this->config
-               );
-       }
-
-       /**
-        * @param string $url
-        * @param array $headers
-        * @param bool $isPost
-        * @param array $postFields
-        * @return string
-        */
-       private function makeCurlCall(
-               $url, $headers, $isPost, array $postFields = null
-       ) {
-               $ch = curl_init();
-               curl_setopt( $ch, CURLOPT_URL, (string) $url );
-               curl_setopt( $ch, CURLOPT_HEADER, 0 );
-               curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
-               curl_setopt( $ch, CURLOPT_HTTPHEADER, array( $headers ) );
-               if ( $isPost ) {
-                       curl_setopt( $ch, CURLOPT_POST, true );
-                       curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( 
$postFields ) );
-               }
-               if ( $this->config->useSSL ) {
-                       curl_setopt( $ch, CURLOPT_PORT, 443 );
-               }
-               if ( $this->config->verifySSL ) {
-                       curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, true );
-                       curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
-               } else {
-                       curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
-                       curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
-               }
-               $data = curl_exec( $ch );
-               if ( !$data ) {
-                       throw new Exception( 'Curl error: ' . curl_error( $ch ) 
);
-               }
-               return $data;
-       }
-
-       /**
-        * @param string $JWT Json web token
-        * @param string $secret
-        * @return object
-        */
-       private function decodeJWT( $JWT, $secret ) {
-               list( $headb64, $bodyb64, $sigb64 ) = explode( '.', $JWT );
-               $header = json_decode( $this->urlsafeB64Decode( $headb64 ) );
-               $payload = json_decode( $this->urlsafeB64Decode( $bodyb64 ) );
-               $sig = $this->urlsafeB64Decode( $sigb64 );
-               // MediaWiki will only use sha256 hmac (HS256) for now. This 
check
-               // makes sure an attacker doesn't return a JWT with 'none' 
signature
-               // type.
-               $expectSig = hash_hmac(
-                       'sha256', "{$headb64}.{$bodyb64}", $secret, true
-               );
-               if ( $header->alg !== 'HS256' || !$this->compareHash( $sig, 
$expectSig ) ) {
-                       throw new Exception( "Invalid JWT signature from 
/identify." );
-               }
-               return $payload;
-       }
-
-       /**
-        * @param object $identity
-        * @param string $consumerKey
-        * @param string $expectedConnonicalServer
-        * @param string $nonce
-        */
-       protected function validateJWT(
-               $identity, $consumerKey, $expectedConnonicalServer, $nonce
-       ) {
-               // Verify the issuer is who we expect (server sends 
$wgCanonicalServer)
-               if ( $identity->iss !== $expectedConnonicalServer ) {
-                       $this->logger->info(
-                               "Invalid issuer '{$identity->iss}': expected 
'{$expectedConnonicalServer}'" );
-                       return false;
-               }
-               // Verify we are the intended audience
-               if ( $identity->aud !== $consumerKey ) {
-                       $this->logger->info( "Invalid audience 
'{$identity->aud}': expected '{$consumerKey}'" );
-                       return false;
-               }
-               // Verify we are within the time limits of the token. Issued at 
(iat)
-               // should be in the past, Expiration (exp) should be in the 
future.
-               $now = time();
-               if ( $identity->iat > $now || $identity->exp < $now ) {
-                       $this->logger->info(
-                               "Invalid times issued='{$identity->iat}', " .
-                               "expires='{$identity->exp}', now='{$now}'"
-                       );
-                       return false;
-               }
-               // Verify we haven't seen this nonce before, which would 
indicate a replay attack
-               if ( $identity->nonce !== $nonce ) {
-                       $this->logger->info( "Invalid nonce 
'{$identity->nonce}': expected '{$nonce}'" );
-                       return false;
-               }
-               return true;
-       }
-
-       /**
-        * @param string $input
-        * @return string
-        */
-       private function urlsafeB64Decode( $input ) {
-               $remainder = strlen( $input ) % 4;
-               if ( $remainder ) {
-                       $padlen = 4 - $remainder;
-                       $input .= str_repeat( '=', $padlen );
-               }
-               return base64_decode( strtr( $input, '-_', '+/' ) );
-       }
-
-       /**
-        * Constant time comparison
-        * @param string $hash1
-        * @param string $hash2
-        * @return bool
-        */
-       private function compareHash( $hash1, $hash2 ) {
-               $result = strlen( $hash1 ) ^ strlen( $hash2 );
-               $len = min( strlen( $hash1 ), strlen( $hash2 ) ) - 1;
-               for ( $i = 0; $i < $len; $i++ ) {
-                       $result |= ord( $hash1{$i} ) ^ ord( $hash2{$i} );
-               }
-               return $result == 0;
-       }
-}
diff --git a/src/OAuth/ClientConfig.php b/src/OAuth/ClientConfig.php
deleted file mode 100644
index f9f143a..0000000
--- a/src/OAuth/ClientConfig.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * This file is part of Wikimedia Slim application library
- *
- * Wikimedia Slim application library is free software: you can
- * redistribute it and/or modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * Wikimedia Slim application 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with Wikimedia Grants Review application.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * @file
- * @copyright © 2015 Chris Steipp, Wikimedia Foundation and contributors.
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * MediaWiki OAuth client configuration
- */
-class ClientConfig {
-       /**
-        * Url to the OAuth special page
-        * @var string $endpointURL
-        */
-       public $endpointURL;
-
-       /**
-        * Canonical server url, used to check /identify's iss.
-        * A default value will be created based on the provided $endpointURL.
-        * @var string $canonicalServerUrl
-        */
-       public $canonicalServerUrl;
-
-       /**
-        * Url that the user is sent to. Can be different from $endpointURL to
-        * play nice with MobileFrontend, etc.
-        * @var string|null $redirURL
-        */
-       public $redirURL = null;
-
-       /**
-        * Use https when calling the server.
-        * @var bool $useSSL
-        */
-       public $useSSL;
-
-       /**
-        * If you're testing against a server with self-signed certificates, you
-        * can turn this off but don't do this in production.
-        * @var bool $verifySSL
-        */
-       public $verifySSL;
-
-       /**
-        * @var Consumer|null $consumer
-        */
-       public $consumer = null;
-
-       /**
-        * @param string $url OAuth endpoint URL
-        * @param bool $verifySSL
-        */
-       function __construct( $url, $verifySSL = true ) {
-               $this->endpointURL = $url;
-               $this->verifySSL = $verifySSL;
-
-               $parts = parse_url( $url );
-               $this->useSSL = $parts['scheme'] === 'https';
-               $this->canonicalServerUrl = 
"{$parts['scheme']}://{$parts['host']}" .
-                       ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' );
-       }
-
-       /**
-        * @param string $redirURL
-        * @return ClientConfig Self, for method chaining
-        */
-       public function setRedirUrl( $redirURL ) {
-               $this->redirURL = $redirURL;
-               return $this;
-       }
-
-       /**
-        * @param Consumer $consumer
-        * @return ClientConfig Self, for method chaining
-        */
-       public function setConsumer( Consumer $consumer ) {
-               $this->consumer = $consumer;
-               return $this;
-       }
-}
diff --git a/src/OAuth/Consumer.php b/src/OAuth/Consumer.php
deleted file mode 100644
index 54310f5..0000000
--- a/src/OAuth/Consumer.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * Data type that represents the identity of the Consumer via its shared
- * secret with the ServiceProvider.
- */
-class Consumer {
-       /**
-        * @var string $key
-        */
-       public $key;
-
-       /**
-        * @var string $secret
-        */
-       public $secret;
-
-       function __construct( $key, $secret ) {
-               $this->key = $key;
-               $this->secret = $secret;
-       }
-
-       function __toString() {
-               return __CLASS__ . "[key={$this->key},secret={$this->secret}]";
-       }
-}
diff --git a/src/OAuth/Exception.php b/src/OAuth/Exception.php
deleted file mode 100644
index bc09241..0000000
--- a/src/OAuth/Exception.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * Generic exception class
- */
-class Exception extends \Exception {
-       // pass
-}
diff --git a/src/OAuth/Request.php b/src/OAuth/Request.php
deleted file mode 100644
index 00e7a7a..0000000
--- a/src/OAuth/Request.php
+++ /dev/null
@@ -1,337 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * An OAuth request
- */
-class Request {
-       /**
-        * @var array $parameters
-        */
-       protected $parameters;
-
-       /**
-        * @var string $method
-        */
-       protected $method;
-
-       /**
-        * @var string $url
-        */
-       protected $url;
-
-       /**
-        * @var string $version
-        */
-       public static $version = '1.0';
-
-       /**
-        * Used for tests.
-        * @var string $POST_INPUT
-        */
-       public static $POST_INPUT = 'php://input';
-
-       /**
-        * @param string $method
-        * @param string $url
-        * @param array $parameters
-        */
-       function __construct( $method, $url, $parameters = null ) {
-               $parameters = $parameters ?: array();
-               $parameters = array_merge(
-                       Util::parseParameters( parse_url( $url, PHP_URL_QUERY ) 
),
-                       $parameters
-               );
-               $this->parameters = $parameters;
-               $this->method = $method;
-               $this->url = $url;
-       }
-
-
-       /**
-        * Attempt to build up a request from what was passed to the server
-        *
-        * @param string $method
-        * @param string $url
-        * @param array $params
-        * @return Request
-        */
-       public static function fromRequest(
-               $method = null,
-               $url = null,
-               array $params = null
-       ) {
-               $scheme = ( !isset( $_SERVER['HTTPS'] ) || $_SERVER['HTTPS'] != 
'on' ) ?
-                       'http' : 'https';
-               $url = ( $url ?: $scheme ) .
-                       '://' . $_SERVER['SERVER_NAME'] .
-                       ':' .
-                       $_SERVER['SERVER_PORT'] .
-                       $_SERVER['REQUEST_URI'];
-               $method = $method ?: $_SERVER['REQUEST_METHOD'];
-
-               // We weren't handed any params, so let's find the ones relevant
-               // to this request. If you run XML-RPC or similar you should 
use this
-               // to provide your own parsed parameter-list
-               if ( !$params ) {
-                       // Find request headers
-                       $headers = Util::getHeaders();
-
-                       // Parse the query-string to find GET params
-                       $params = Util::parseParameters( 
$_SERVER['QUERY_STRING'] );
-
-                       // It's a POST request of the proper content-type, so 
parse POST
-                       // params and add those overriding any duplicates from 
GET
-                       if ( $method === 'POST' &&
-                               isset( $headers['Content-Type'] ) &&
-                               strstr( $headers['Content-Type'],
-                                       'application/x-www-form-urlencoded'
-                               )
-                       ) {
-                               $post_data = Util::parseParameters(
-                                       file_get_contents( self::$POST_INPUT )
-                               );
-                               $params = array_merge( $params, $post_data );
-                       }
-
-                       // We have a Authorization-header with OAuth data. 
Parse the header
-                       // and add those overriding any duplicates from GET or 
POST
-                       if ( isset( $headers['Authorization'] ) &&
-                               substr( $headers['Authorization'], 0, 6 ) === 
'OAuth '
-                       ) {
-                               $header_params = Util::splitHeader( 
$headers['Authorization'] );
-                               $params = array_merge( $params, $header_params 
);
-                       }
-               }
-
-               return new Request( $method, $url, $params );
-       }
-
-       /**
-        * @param Consumer $consumer
-        * @param Token|null $token
-        * @param string $method
-        * @param string $url
-        * @param array $parameters
-        * @return Request
-        */
-       public static function fromConsumerAndToken(
-               Consumer $consumer,
-               /*Token*/ $token = null,
-               $method,
-               $url,
-               array $parameters = null
-       ) {
-               $parameters = $parameters ?: array();
-               $defaults = array(
-                       'oauth_version' => static::$version,
-                       'oauth_nonce' => md5( microtime() . mt_rand() ),
-                       'oauth_timestamp' => time(),
-                       'oauth_consumer_key' => $consumer->key,
-               );
-               if ( $token ) {
-                       $defaults['oauth_token'] = $token->key;
-               }
-               $parameters = array_merge( $defaults, $parameters );
-
-               return new self( $method, $url, $parameters );
-       }
-
-       public function setParameter( $name, $value, $allow_duplicates = true ) 
{
-               if ( $allow_duplicates && isset( $this->parameters[$name] ) ) {
-                       // We have already added parameter(s) with this name, 
so add to
-                       // the list
-                       if ( is_scalar( $this->parameters[$name] ) ) {
-                               // This is the first duplicate, so transform 
scalar (string)
-                               // into an array so we can add the duplicates
-                               $this->parameters[$name] = array( 
$this->parameters[$name] );
-                       }
-
-                       $this->parameters[$name][] = $value;
-               } else {
-                       $this->parameters[$name] = $value;
-               }
-       }
-
-       /**
-        * @param string $name
-        * @return mixed
-        */
-       public function getParameter( $name ) {
-               return isset( $this->parameters[$name] ) ?
-                       $this->parameters[$name] : null;
-       }
-
-       /**
-        * @return array
-        */
-       public function getParameters() {
-               return $this->parameters;
-       }
-
-       /**
-        * @param string $name
-        */
-       public function unsetParameter( $name ) {
-               unset( $this->parameters[$name] );
-       }
-
-       /**
-        * The request parameters, sorted and concatenated into a normalized 
string.
-        * @return string
-        */
-       public function getSignableParameters() {
-               // Grab all parameters
-               $params = $this->parameters;
-
-               // Remove oauth_signature if present
-               // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be 
excluded.")
-               if ( isset( $params['oauth_signature'] ) ) {
-                       unset( $params['oauth_signature'] );
-               }
-
-               return Util::buildHttpQuery( $params );
-       }
-
-       /**
-        * Returns the base string of this request
-        *
-        * The base string defined as the method, the url
-        * and the parameters (normalized), each urlencoded
-        * and the concated with &.
-        */
-       public function getSignatureBaseString() {
-               $parts = array(
-                       $this->getNormalizedMethod(),
-                       $this->getNormalizedUrl(),
-                       $this->getSignableParameters()
-               );
-
-               $parts = Util::urlencode( $parts );
-
-               return implode( '&', $parts );
-       }
-
-       /**
-        * @return string
-        */
-       public function getNormalizedMethod() {
-               return strtoupper( $this->method );
-       }
-
-       /**
-        * Parses the url and rebuilds it to be scheme://host/path
-        * @return string
-        */
-       public function getNormalizedUrl() {
-               $parts = parse_url( $this->url );
-
-               $scheme = isset( $parts['scheme'] ) ? $parts['scheme'] : 'http';
-               $port = isset( $parts['port'] ) ?
-                       $parts['port'] : ( $scheme === 'https' ? '443' : '80' );
-               $host = isset( $parts['host'] ) ? strtolower( $parts['host'] ) 
: '';
-               $path = isset( $parts['path'] ) ? $parts['path'] : '';
-
-               if ( ( $scheme === 'https' && $port != '443' ) ||
-                       ( $scheme === 'http' && $port != '80' )
-               ) {
-                       $host = "{$host}:{$port}";
-               }
-               return "{$scheme}://{$host}{$path}";
-       }
-
-       /**
-        * Builds a url usable for a GET request
-        */
-       public function toUrl() {
-               $post_data = $this->toPostData();
-               $out = $this->getNormalizedUrl();
-               if ( $post_data ) {
-                       $out .= '?' . $post_data;
-               }
-               return $out;
-       }
-
-       /**
-        * Builds the data one would send in a POST request
-        */
-       public function toPostData() {
-               return Util::buildHttpQuery( $this->parameters );
-       }
-
-       /**
-        * Builds the Authorization: header
-        */
-       public function toHeader( $realm = null ) {
-               $first = true;
-               if ( $realm ) {
-                       $out = 'Authorization: OAuth realm="' .
-                               Util::urlencode( $realm ) . '"';
-                       $first = false;
-               } else {
-                       $out = 'Authorization: OAuth';
-               }
-
-               foreach ( $this->parameters as $k => $v ) {
-                       if ( substr( $k, 0, 5 ) !== 'oauth' ) {
-                               continue;
-                       }
-                       if ( is_array( $v ) ) {
-                               throw new Exception( 'Arrays not supported in 
headers' );
-                       }
-                       $out .= ( $first ) ? ' ' : ',';
-                       $out .= Util::urlencode( $k ) . '="' . Util::urlencode( 
$v ) . '"';
-                       $first = false;
-               }
-               return $out;
-       }
-
-       public function __toString() {
-               return $this->toUrl();
-       }
-
-       public function signRequest( $signature_method, $consumer, $token ) {
-               $this->setParameter(
-                       'oauth_signature_method',
-                       $signature_method->getName(),
-                       false
-               );
-               $signature = $this->buildSignature(
-                       $signature_method, $consumer, $token
-               );
-               $this->setParameter( 'oauth_signature', $signature, false );
-       }
-
-       public function buildSignature( $signature_method, $consumer, $token ) {
-               $signature = $signature_method->buildSignature(
-                       $this, $consumer, $token
-               );
-               return $signature;
-       }
-}
diff --git a/src/OAuth/SignatureMethod.php b/src/OAuth/SignatureMethod.php
deleted file mode 100644
index 1717f91..0000000
--- a/src/OAuth/SignatureMethod.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * A class for implementing a Signature Method
- * See section 9 ("Signing Requests") in the spec
- */
-abstract class SignatureMethod {
-       /**
-        * Needs to return the name of the Signature Method (ie HMAC-SHA1)
-        * @return string
-        */
-       abstract public function getName();
-
-       /**
-        * Build up the signature
-        * NOTE: The output of this function MUST NOT be urlencoded.
-        * the encoding is handled in OAuthRequest when the final
-        * request is serialized
-        * @param Request $request
-        * @param Consumer $consumer
-        * @param Token $token
-        * @return string
-        */
-       abstract public function buildSignature(
-               Request $request,
-               Consumer $consumer,
-               Token $token = null
-       );
-
-       /**
-        * Verifies that a given signature is correct
-        * @param Request $request
-        * @param Consumer $consumer
-        * @param Token|null $token
-        * @param string $signature
-        * @return bool
-        */
-       public function checkSignature(
-               Request $request,
-               Consumer $consumer,
-               /*Token*/ $token,
-               $signature
-       ) {
-               $built = $this->buildSignature( $request, $consumer, $token );
-
-               // Check for zero length, although unlikely here
-               if ( strlen( $built ) === 0 || strlen( $signature ) === 0 ) {
-                       return false;
-               }
-
-               if ( strlen( $built ) !== strlen( $signature ) ) {
-                       return false;
-               }
-
-               // Avoid a timing leak with a (hopefully) time insensitive 
compare
-               $result = 0;
-               $len = strlen( $signature );
-               for ( $i = 0; $i < $len; $i++ ) {
-                       $result |= ord( $built[$i] ) ^ ord( $signature[$i] );
-               }
-
-               return $result == 0;
-       }
-}
diff --git a/src/OAuth/SignatureMethod/HmacSha1.php 
b/src/OAuth/SignatureMethod/HmacSha1.php
deleted file mode 100644
index 43bc0e6..0000000
--- a/src/OAuth/SignatureMethod/HmacSha1.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\SignatureMethod;
-use Wikimedia\Slimapp\OAuth\Token;
-use Wikimedia\Slimapp\OAuth\Util;
-
-/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as
- * defined in [RFC2104] where the Signature Base String is the text and the
- * key is the concatenated values (each first encoded per Parameter Encoding)
- * of the Consumer Secret and Token Secret, separated by an '&' character
- * (ASCII code 38) even if empty.
- *   - Chapter 9.2 ("HMAC-SHA1")
- */
-class HmacSha1 extends SignatureMethod {
-       function getName() {
-               return 'HMAC-SHA1';
-       }
-
-       public function buildSignature(
-               Request $request,
-               Consumer $consumer,
-               Token $token = null
-       ) {
-               $base_string = $request->getSignatureBaseString();
-               $request->base_string = $base_string;
-
-               $key_parts = array(
-                       $consumer->secret,
-                       $token ? $token->secret : ''
-               );
-
-               $key_parts = Util::urlencode( $key_parts );
-               $key = implode( '&', $key_parts );
-
-               return base64_encode( hash_hmac( 'sha1', $base_string, $key, 
true ) );
-       }
-}
diff --git a/src/OAuth/SignatureMethod/Plaintext.php 
b/src/OAuth/SignatureMethod/Plaintext.php
deleted file mode 100644
index 580aa28..0000000
--- a/src/OAuth/SignatureMethod/Plaintext.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\SignatureMethod;
-use Wikimedia\Slimapp\OAuth\Token;
-use Wikimedia\Slimapp\OAuth\Util;
-
-/**
- * The PLAINTEXT method does not provide any security protection and SHOULD
- * only be used over a secure channel such as HTTPS. It does not use the
- * Signature Base String.
- *   - Chapter 9.4 ("PLAINTEXT")
- */
-class Plaintext extends SignatureMethod {
-       public function getName() {
-               return 'PLAINTEXT';
-       }
-
-       /**
-        * oauth_signature is set to the concatenated encoded values of the 
Consumer
-        * Secret and Token Secret, separated by a '&' character (ASCII code 
38),
-        * even if either secret is empty. The result MUST be encoded again.
-        *   - Chapter 9.4.1 ("Generating Signatures")
-        *
-        * Please note that the second encoding MUST NOT happen in the
-        * SignatureMethod, as Request handles this!
-        */
-       public function buildSignature(
-               Request $request,
-               Consumer $consumer,
-               Token $token = null
-       ) {
-               $key_parts = array(
-                       $consumer->secret,
-                       $token ? $token->secret : ''
-               );
-
-               $key_parts = Util::urlencode( $key_parts );
-               $key = implode( '&', $key_parts );
-               $request->base_string = $key;
-
-               return $key;
-       }
-}
diff --git a/src/OAuth/SignatureMethod/RsaSha1.php 
b/src/OAuth/SignatureMethod/RsaSha1.php
deleted file mode 100644
index 03fdfae..0000000
--- a/src/OAuth/SignatureMethod/RsaSha1.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\SignatureMethod;
-use Wikimedia\Slimapp\OAuth\Token;
-use Wikimedia\Slimapp\OAuth\Util;
-
-/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature
- * algorithm as defined in [RFC3447] section 8.2 (more simply known as
- * PKCS#1), using SHA-1 as the hash function for EMSA-PKCS1-v1_5. It is
- * assumed that the Consumer has provided its RSA public key in a verified way
- * to the Service Provider, in a manner which is beyond the scope of this
- * specification.
- *   - Chapter 9.3 ("RSA-SHA1")
- */
-abstract class RsaSha1 extends SignatureMethod {
-       public function getName() {
-               return "RSA-SHA1";
-       }
-
-       // Up to the SP to implement this lookup of keys. Possible ideas are:
-       // (1) do a lookup in a table of trusted certs keyed off of consumer
-       // (2) fetch via http using a url provided by the requester
-       // (3) some sort of specific discovery code based on request
-       // Either way should return a string representation of the certificate
-       abstract protected function fetchPublicCert( Request $request );
-
-       // Up to the SP to implement this lookup of keys. Possible ideas are:
-       // (1) do a lookup in a table of trusted certs keyed off of consumer
-       // Either way should return a string representation of the certificate
-       abstract protected function fetchPrivateCert( Request $request );
-
-       public function buildSignature(
-               Request $request,
-               Consumer $consumer,
-               Token $token = null
-       ) {
-               $base_string = $request->getSignatureBaseString();
-               $request->base_string = $base_string;
-
-               // Fetch the private key cert based on the request
-               $cert = $this->fetchPrivateCert( $request );
-
-               // Pull the private key ID from the certificate
-               $privatekeyid = openssl_get_privatekey( $cert );
-
-               // Sign using the key
-               $ok = openssl_sign( $base_string, $signature, $privatekeyid );
-
-               // Release the key resource
-               openssl_free_key( $privatekeyid );
-
-               return base64_encode( $signature );
-       }
-
-       public function checkSignature(
-               Request $request,
-               Consumer $consumer,
-               /*Token*/ $token,
-               $signature
-       ) {
-               $decoded_sig = base64_decode( $signature );
-
-               $base_string = $request->getSignatureBaseString();
-
-               // Fetch the public key cert based on the request
-               $cert = $this->fetchPublicCert( $request );
-
-               // Pull the public key ID from the certificate
-               $publickeyid = openssl_get_publickey( $cert );
-
-               // Check the computed signature against the one passed in the 
query
-               $ok = openssl_verify( $base_string, $decoded_sig, $publickeyid 
);
-
-               // Release the key resource
-               openssl_free_key( $publickeyid );
-
-               return $ok == 1;
-       }
-}
diff --git a/src/OAuth/Token.php b/src/OAuth/Token.php
deleted file mode 100644
index 438955d..0000000
--- a/src/OAuth/Token.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * Data type that represents an End User via either and access or requst
- * token.
- */
-class Token {
-       /**
-        * @var string $key
-        */
-       public $key;
-
-       /**
-        * @var string $secret
-        */
-       public $secret;
-
-       /**
-        * @param string key The token
-        * @param string secret The token secret
-        */
-       function __construct( $key, $secret ) {
-               $this->key = $key;
-               $this->secret = $secret;
-       }
-
-       /**
-        * Generate the basic string serialization of a token that a server
-        * would respond to request_token and access_token calls with
-        *
-        * @return string
-        */
-       function toString() {
-               return 'oauth_token=' . Util::urlencode( $this->key ) .
-                       '&oauth_token_secret=' . Util::urlencode( $this->secret 
);
-       }
-
-       function __toString() {
-               return $this->toString();
-       }
-}
diff --git a/src/OAuth/Util.php b/src/OAuth/Util.php
deleted file mode 100644
index f8047a8..0000000
--- a/src/OAuth/Util.php
+++ /dev/null
@@ -1,215 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-class Util {
-
-       /**
-        * @param string $input
-        * @return string
-        */
-       public static function urlencode( $input ) {
-               if ( is_array( $input ) ) {
-                       return array_map( __METHOD__, $input );
-
-               } elseif ( is_scalar( $input ) ) {
-                       return rawurlencode( $input );
-
-               } else {
-                       return '';
-               }
-       }
-
-       /**
-        * @param string $string
-        * @return string
-        */
-       public static function urldecode( $string ) {
-               return urldecode( $string );
-       }
-
-       /**
-        * Utility function for turning the Authorization: header into 
parameters,
-        * has to do some unescaping Can filter out any non-oauth parameters if
-        * needed (default behaviour)
-        *
-        * @param string $header
-        * @param bool $oauthOnly
-        * @return array
-        */
-       public static function splitHeader( $header, $oauthOnly = true ) {
-               $re = '/(' . ( $oauthOnly ? 'oauth_' : '' ) .
-                       '[a-z_-]*)=(:?"([^"]*)"|([^,]*))/';
-               $params = array();
-               if ( preg_match_all( $re, $header, $m ) ) {
-                       foreach ( $m[1] as $i => $h ) {
-                               $params[$h] = static::urldecode(
-                                       empty( $m[3][$i] ) ? $m[4][$i] : 
$m[3][$i]
-                               );
-                       }
-                       if ( isset( $params['realm'] ) ) {
-                               unset( $params['realm'] );
-                       }
-               }
-               return $params;
-       }
-
-       /**
-        * @return array
-        */
-       public static function getHeaders() {
-               if ( function_exists( 'apache_request_headers' ) ) {
-                       // we need this to get the actual Authorization: header
-                       // because apache tends to tell us it doesn't exist
-                       $headers = apache_request_headers();
-
-                       // sanitize the output of apache_request_headers because
-                       // we always want the keys to be Cased-Like-This and 
arh()
-                       // returns the headers in the same case as they are in 
the
-                       // request
-                       $out = array();
-                       foreach ( $headers as $key => $value ) {
-                               $key = str_replace(
-                                       ' ', '-',
-                                       ucwords( strtolower( str_replace( '-', 
' ', $key ) ) )
-                               );
-                               $out[$key] = $value;
-                       }
-               } else {
-                       // otherwise we don't have apache and are just going to 
have to
-                       // hope that $_SERVER actually contains what we need
-                       $out = array();
-                       if ( isset( $_SERVER['CONTENT_TYPE'] ) ) {
-                               $out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
-                       }
-                       if ( isset( $_ENV['CONTENT_TYPE'] ) ) {
-                               $out['Content-Type'] = $_ENV['CONTENT_TYPE'];
-                       }
-
-                       foreach ( $_SERVER as $key => $value ) {
-                               if ( substr( $key, 0, 5 )  == 'HTTP_' ) {
-                                       // this is chaos, basically it is just 
there to capitalize
-                                       // the first letter of every word that 
is not an initial
-                                       // HTTP and strip HTTP_ prefix
-                                       // Code from przemek
-                                       $key = str_replace(
-                                               ' ', '-',
-                                               ucwords( strtolower(
-                                                       str_replace( '_', ' ', 
substr( $key, 5 ) )
-                                               ) )
-                                       );
-                                       $out[$key] = $value;
-                               }
-                       }
-               }
-               return $out;
-       }
-
-       /**
-        * This function takes a input like a=b&a=c&d=e and returns the parsed
-        * parameters like this array('a' => array('b','c'), 'd' => 'e')
-        *
-        * @param string $input
-        * @return array
-        */
-       public static function parseParameters( $input ) {
-               if ( !isset( $input ) || !$input ) {
-                       return array();
-               }
-
-               $pairs = explode( '&', $input );
-
-               $parsed = array();
-               foreach ( $pairs as $pair ) {
-                       $split = explode( '=', $pair, 2 );
-                       $parameter = static::urldecode( $split[0] );
-                       $value = isset( $split[1] ) ? static::urldecode( 
$split[1] ) : '';
-
-                       if ( isset( $parsed[$parameter] ) ) {
-                               // We have already recieved parameter(s) with 
this name, so
-                               // add to the list of parameters with this name
-
-                               if ( is_scalar( $parsed[$parameter] ) ) {
-                                       // This is the first duplicate, so 
transform scalar
-                                       // (string) into an array so we can add 
the duplicates
-                                       $parsed[$parameter] = array( 
$parsed[$parameter] );
-                               }
-
-                               $parsed[$parameter][] = $value;
-                       } else {
-                               $parsed[$parameter] = $value;
-                       }
-               }
-               return $parsed;
-       }
-
-       /**
-        * @param array $params
-        * @return string
-        */
-       public static function buildHttpQuery( array $params ) {
-               if ( !$params ) {
-                       return '';
-               }
-
-               // Urlencode both keys and values
-               $keys = static::urlencode( array_keys( $params ) );
-               $values = static::urlencode( array_values( $params ) );
-               $params = array_combine( $keys, $values );
-
-               // Parameters are sorted by name, using lexicographical byte 
value
-               // ordering. Ref: Spec: 9.1.1 (1)
-               uksort( $params, 'strcmp' );
-
-               $pairs = array();
-               foreach ( $params as $parameter => $value ) {
-                       if ( is_array( $value ) ) {
-                               // If two or more parameters share the same 
name, they are
-                               // sorted by their value
-                               // Ref: Spec: 9.1.1 (1)
-                               sort( $value, SORT_STRING );
-                               foreach ( $value as $duplicate_value ) {
-                                       $pairs[] = 
"{$parameter}={$duplicate_value}";
-                               }
-                       } else {
-                               $pairs[] = "{$parameter}={$value}";
-                       }
-               }
-               // For each parameter, the name is separated from the 
corresponding
-               // value by an '=' character (ASCII code 61)
-               // Each name-value pair is separated by an '&' character (ASCII 
code 38)
-               return implode( '&', $pairs );
-       }
-
-       /**
-        * Disallow construction of utility class.
-        */
-       private function __construct() {
-               // no-op
-       }
-}
diff --git a/tests/OAuth/ConsumerTest.php b/tests/OAuth/ConsumerTest.php
deleted file mode 100644
index 8e6c0f8..0000000
--- a/tests/OAuth/ConsumerTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\Consumer
- */
-class ConsumerTest extends \PHPUnit_Framework_TestCase {
-       public function testConvertToString() {
-               $consumer = new Consumer( 'key', 'secret' );
-               $this->assertEquals(
-                       
'Wikimedia\Slimapp\OAuth\Consumer[key=key,secret=secret]',
-                       (string) $consumer
-               );
-       }
-}
diff --git a/tests/OAuth/RequestTest.php b/tests/OAuth/RequestTest.php
deleted file mode 100644
index 144ccd6..0000000
--- a/tests/OAuth/RequestTest.php
+++ /dev/null
@@ -1,524 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-use Wikimedia\Slimapp\OAuth\SignatureMethod\HmacSha1;
-use Wikimedia\Slimapp\OAuth\SignatureMethod\Plaintext;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\Request
- */
-class RequestTest extends \PHPUnit_Framework_TestCase {
-
-       public function testCanGetSingleParameter() {
-               $request = new Request( '', '', array( 'test'=>'foo' ) );
-               $this->assertEquals( 'foo', $request->getParameter( 'test' ),
-                       'Failed to read back parameter'
-                );
-
-               $request = new Request(
-                       '', '', array( 'test' => array( 'foo', 'bar' ) )
-                );
-               $this->assertEquals( array( 'foo', 'bar' ),
-                       $request->getParameter( 'test' ), 'Failed to read back 
parameter' );
-
-               $request = new Request(
-                       '', '', array( 'test' => 'foo', 'bar' => 'baz' )
-                );
-               $this->assertEquals( 'foo', $request->getParameter( 'test' ),
-                       'Failed to read back parameter'
-                );
-               $this->assertEquals( 'baz', $request->getParameter( 'bar' ),
-                       'Failed to read back parameter'
-                );
-       }
-
-       public function testGetAllParameters() {
-               // Yes, a awesomely boring test.. But if this doesn't work, the 
other
-               // tests is unreliable
-               $request = new Request( '', '', array( 'test' => 'foo' ) );
-               $this->assertEquals( array( 'test'=>'foo' ), 
$request->getParameters(),
-                       'Failed to read back parameters'
-                );
-
-               $request = new Request(
-                       '', '', array( 'test' => 'foo', 'bar' => 'baz' )
-                );
-               $this->assertEquals( array( 'test' => 'foo', 'bar' => 'baz' ),
-                       $request->getParameters(), 'Failed to read back 
parameters' );
-
-               $request = new Request(
-                       '', '', array( 'test' => array( 'foo', 'bar' ) )
-                );
-               $this->assertEquals( array( 'test' => array( 'foo', 'bar' ) ),
-                       $request->getParameters(), 'Failed to read back 
parameters' );
-       }
-
-       public function testSetParameters() {
-               $request = new Request( '', '' );
-               $this->assertEquals( null, $request->getParameter( 'test' ),
-                       'Failed to assert that non-existing parameter is null' 
);
-
-               $request->setParameter( 'test', 'foo' );
-               $this->assertEquals( 'foo', $request->getParameter( 'test' ),
-                       'Failed to set single-entry parameter' );
-
-               $request->setParameter( 'test', 'bar' );
-               $this->assertEquals( array( 'foo', 'bar' ),
-                       $request->getParameter( 'test' ),
-                       'Failed to set single-entry parameter'
-                );
-
-               $request->setParameter( 'test', 'bar', false );
-               $this->assertEquals( 'bar', $request->getParameter( 'test' ),
-                       'Failed to set single-entry parameter'
-                );
-       }
-
-       public function testUnsetParameter() {
-               $request = new Request( '', '' );
-               $this->assertEquals( null, $request->getParameter( 'test' ) );
-
-               $request->setParameter( 'test', 'foo' );
-               $this->assertEquals( 'foo', $request->getParameter( 'test' ) );
-
-               $request->unsetParameter( 'test' );
-               $this->assertEquals( null, $request->getParameter( 'test' ),
-                       'Failed to unset parameter'
-                );
-       }
-
-       public function testCreateRequestFromConsumerAndToken() {
-               $cons = new Consumer( 'key', 'kd94hf93k423kf44' );
-               $token = new Token( 'token', 'pfkkdhi9sl3r4s00' );
-
-               $request = Request::fromConsumerAndToken(
-                       $cons, $token, 'POST', 'http://example.com'
-                );
-               $this->assertEquals( 'POST', $request->getNormalizedMethod() );
-               $this->assertEquals( 'http://example.com', 
$request->getNormalizedUrl() );
-               $this->assertEquals( '1.0', $request->getParameter( 
'oauth_version' ) );
-               $this->assertEquals( $cons->key, $request->getParameter( 
'oauth_consumer_key' ) );
-               $this->assertEquals( $token->key, $request->getParameter( 
'oauth_token' ) );
-               $this->assertEquals( time(), $request->getParameter( 
'oauth_timestamp' ) );
-               $this->assertRegExp( '/[0-9a-f]{32}/', $request->getParameter( 
'oauth_nonce' ) );
-               // We don't know what the nonce will be, except it'll be md5 
and hence
-               // 32 hexa digits
-
-               $request = Request::fromConsumerAndToken( $cons, $token, 'POST',
-                       'http://example.com', array( 'oauth_nonce'=>'foo' ) );
-               $this->assertEquals( 'foo', $request->getParameter( 
'oauth_nonce' ) );
-
-               $request = Request::fromConsumerAndToken( $cons, null, 'POST',
-                       'http://example.com', array( 'oauth_nonce'=>'foo' ) );
-               $this->assertNull( $request->getParameter( 'oauth_token' ) );
-
-               // Test that parameters given in the $http_url instead of in the
-               // $parameters-parameter will still be picked up
-               $request = Request::fromConsumerAndToken( $cons, $token, 'POST',
-                       'http://example.com/?foo=bar' );
-               $this->assertEquals( 'http://example.com/', 
$request->getNormalizedUrl() );
-               $this->assertEquals( 'bar', $request->getParameter( 'foo' ) );
-       }
-
-       public function testBuildRequestFromPost() {
-               static::buildRequest(
-                       'POST', 'http://testbed/test', 'foo=bar&baz=blargh' );
-               $this->assertEquals( array( 'foo'=>'bar','baz'=>'blargh' ),
-                       Request::fromRequest()->getParameters(),
-                       'Failed to parse POST parameters' );
-       }
-
-       public function testBuildRequestFromGet() {
-               static::buildRequest( 'GET', 
'http://testbed/test?foo=bar&baz=blargh' );
-               $this->assertEquals( array( 'foo'=>'bar','baz'=>'blargh' ),
-                       Request::fromRequest()->getParameters(),
-                       'Failed to parse GET parameters' );
-       }
-
-       public function testBuildRequestFromHeader() {
-               $test_header = 'OAuth 
realm="",oauth_foo=bar,oauth_baz="bla,rgh"';
-               static::buildRequest( 'POST', 'http://testbed/test', '', 
$test_header );
-               $this->assertEquals(
-                       array( 'oauth_foo'=>'bar','oauth_baz'=>'bla,rgh' ),
-                       Request::fromRequest()->getParameters(),
-                       'Failed to split auth-header correctly' );
-       }
-
-       public function testHasProperParameterPriority() {
-               $test_header = 'OAuth realm="",oauth_foo=header';
-               static::buildRequest( 'POST', 
'http://testbed/test?oauth_foo=get',
-                       'oauth_foo=post', $test_header );
-               $this->assertEquals( 'header',
-                       Request::fromRequest()->getParameter( 'oauth_foo' ),
-                       'Loaded parameters in with the wrong priorities' );
-
-               static::buildRequest( 'POST', 
'http://testbed/test?oauth_foo=get',
-                       'oauth_foo=post' );
-               $this->assertEquals( 'post',
-                       Request::fromRequest()->getParameter( 'oauth_foo' ),
-                       'Loaded parameters in with the wrong priorities' );
-
-               static::buildRequest( 'POST', 
'http://testbed/test?oauth_foo=get' );
-               $this->assertEquals( 'get',
-                       Request::fromRequest()->getParameter( 'oauth_foo' ),
-                       'Loaded parameters in with the wrong priorities' );
-       }
-
-       public function testNormalizeHttpMethod() {
-               static::buildRequest( 'POST', 'http://testbed/test' );
-               $this->assertEquals( 'POST',
-                       Request::fromRequest()->getNormalizedMethod(),
-                       'Failed to normalize HTTP method: POST' );
-
-               static::buildRequest( 'post', 'http://testbed/test' );
-               $this->assertEquals( 'POST',
-                       Request::fromRequest()->getNormalizedMethod(),
-                       'Failed to normalize HTTP method: post' );
-
-               static::buildRequest( 'GET', 'http://testbed/test' );
-               $this->assertEquals( 'GET',
-                       Request::fromRequest()->getNormalizedMethod(),
-                       'Failed to normalize HTTP method: GET' );
-
-               static::buildRequest( 'PUT', 'http://testbed/test' );
-               $this->assertEquals( 'PUT',
-                       Request::fromRequest()->getNormalizedMethod(),
-                       'Failed to normalize HTTP method: PUT' );
-       }
-
-       public function testNormalizeParameters() {
-               // This is mostly repeats of OAuthUtilTest::testParseParameters
-               // & OAuthUtilTest::TestBuildHttpQuery
-
-               // Tests taken from
-               // http://wiki.oauth.net/TestCases ( "Normalize Request 
Parameters" )
-               static::buildRequest( 'POST', 'http://testbed/test', 'name' );
-               $this->assertEquals( 'name=',
-                       Request::fromRequest()->getSignableParameters() );
-
-               static::buildRequest( 'POST', 'http://testbed/test', 'a=b' );
-               $this->assertEquals( 'a=b',
-                       Request::fromRequest()->getSignableParameters() );
-
-               static::buildRequest( 'POST', 'http://testbed/test', 'a=b&c=d' 
);
-               $this->assertEquals( 'a=b&c=d',
-                       Request::fromRequest()->getSignableParameters() );
-
-               static::buildRequest( 'POST', 'http://testbed/test', 
'a=x%21y&a=x+y' );
-               $this->assertEquals( 'a=x%20y&a=x%21y',
-                       Request::fromRequest()->getSignableParameters() );
-
-               static::buildRequest( 'POST', 'http://testbed/test', 
'x%21y=a&x=a' );
-               $this->assertEquals( 'x=a&x%21y=a',
-                       Request::fromRequest()->getSignableParameters() );
-
-               static::buildRequest( 'POST',
-                       'http://testbed/test', 'a=1&c=hi 
there&f=25&f=50&f=a&z=p&z=t' );
-               $this->assertEquals( 'a=1&c=hi%20there&f=25&f=50&f=a&z=p&z=t',
-                       Request::fromRequest()->getSignableParameters() );
-       }
-
-       public function testNormalizeHttpUrl() {
-               static::buildRequest( 'POST', 'http://example.com' );
-               $this->assertEquals( 'http://example.com',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               static::buildRequest( 'POST', 'https://example.com' );
-               $this->assertEquals( 'https://example.com',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               // Tests that http on !80 and https on !443 keeps the port
-               static::buildRequest( 'POST', 'http://example.com:8080' );
-               $this->assertEquals( 'http://example.com:8080',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               static::buildRequest( 'POST', 'https://example.com:80' );
-               $this->assertEquals( 'https://example.com:80',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               static::buildRequest( 'POST', 'http://example.com:443' );
-               $this->assertEquals( 'http://example.com:443',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               static::buildRequest( 'POST', 'http://Example.COM' );
-               $this->assertEquals( 'http://example.com',
-                       Request::fromRequest()->getNormalizedUrl() );
-
-               // Emulate silly behavior by some clients, where there Host 
header
-               // includes the port
-               static::buildRequest( 'POST', 'http://example.com' );
-               $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_HOST'] . ':' .
-                       $_SERVER['SERVER_PORT'];
-               $this->assertEquals( 'http://example.com',
-                       Request::fromRequest()->getNormalizedUrl() );
-       }
-
-       public function testBuildPostData() {
-               static::buildRequest( 'POST', 'http://example.com' );
-               $this->assertEquals( '', Request::fromRequest()->toPostData() );
-
-               static::buildRequest( 'POST', 'http://example.com', 'foo=bar' );
-               $this->assertEquals( 'foo=bar', 
Request::fromRequest()->toPostData() );
-
-               static::buildRequest( 'GET', 'http://example.com?foo=bar' );
-               $this->assertEquals( 'foo=bar', 
Request::fromRequest()->toPostData() );
-       }
-
-       public function testBuildUrl() {
-               static::buildRequest( 'POST', 'http://example.com' );
-               $this->assertEquals( 'http://example.com',
-                       Request::fromRequest()->toUrl() );
-
-               static::buildRequest( 'POST', 'http://example.com', 'foo=bar' );
-               $this->assertEquals( 'http://example.com?foo=bar',
-                       Request::fromRequest()->toUrl() );
-
-               static::buildRequest( 'GET', 'http://example.com?foo=bar' );
-               $this->assertEquals( 'http://example.com?foo=bar',
-                       Request::fromRequest()->toUrl() );
-       }
-
-       public function testConvertToString() {
-               static::buildRequest( 'POST', 'http://example.com' );
-               $this->assertEquals( 'http://example.com',
-                       (string)Request::fromRequest() );
-
-               static::buildRequest( 'POST', 'http://example.com', 'foo=bar' );
-               $this->assertEquals( 'http://example.com?foo=bar',
-                       (string)Request::fromRequest() );
-
-               static::buildRequest( 'GET', 'http://example.com?foo=bar' );
-               $this->assertEquals( 'http://example.com?foo=bar',
-                       (string)Request::fromRequest() );
-       }
-
-       public function testBuildHeader() {
-               static::buildRequest( 'POST', 'http://example.com' );
-               $this->assertEquals( 'Authorization: OAuth',
-                       Request::fromRequest()->toHeader() );
-               $this->assertEquals( 'Authorization: OAuth realm="test"',
-                       Request::fromRequest()->toHeader( 'test' ) );
-
-               static::buildRequest( 'POST', 'http://example.com', 'foo=bar' );
-               $this->assertEquals( 'Authorization: OAuth',
-                       Request::fromRequest()->toHeader() );
-               $this->assertEquals( 'Authorization: OAuth realm="test"',
-                       Request::fromRequest()->toHeader( 'test' ) );
-
-               static::buildRequest( 'POST', 'http://example.com', 
'oauth_test=foo' );
-               $this->assertEquals( 'Authorization: OAuth oauth_test="foo"',
-                       Request::fromRequest()->toHeader() );
-               $this->assertEquals(
-                       'Authorization: OAuth realm="test",oauth_test="foo"',
-                       Request::fromRequest()->toHeader( 'test' ) );
-
-               // Is headers supposted to be Urlencoded. More to the point:
-               // Should it be baz = bla,rgh or baz = bla%2Crgh ??
-               // - morten.fangel
-               static::buildRequest( 'POST', 'http://example.com',
-                       '', 'OAuth realm="",oauth_foo=bar,oauth_baz="bla,rgh"' 
);
-               $this->assertEquals(
-                       'Authorization: OAuth 
oauth_foo="bar",oauth_baz="bla%2Crgh"',
-                       Request::fromRequest()->toHeader() );
-               $this->assertEquals(
-                       'Authorization: OAuth 
realm="test",oauth_foo="bar",oauth_baz="bla%2Crgh"',
-                       Request::fromRequest()->toHeader( 'test' ) );
-       }
-
-       public function testWontBuildHeaderWithArrayInput() {
-               $this->setExpectedException( 
'Wikimedia\Slimapp\OAuth\Exception' );
-               static::buildRequest( 'POST', 'http://example.com',
-                       'oauth_foo=bar&oauth_foo=baz' );
-               Request::fromRequest()->toHeader();
-       }
-
-       public function testBuildBaseString() {
-               static::buildRequest( 'POST', 'http://testbed/test', 'n=v' );
-               $this->assertEquals(
-                       'POST&http%3A%2F%2Ftestbed%2Ftest&n%3Dv',
-                       Request::fromRequest()->getSignatureBaseString()
-                );
-
-               static::buildRequest( 'POST', 'http://testbed/test', 'n=v&n=v2' 
);
-               $this->assertEquals( 
'POST&http%3A%2F%2Ftestbed%2Ftest&n%3Dv%26n%3Dv2',
-                       Request::fromRequest()->getSignatureBaseString() );
-
-               static::buildRequest( 'GET', 'http://example.com?n=v' );
-               $this->assertEquals( 'GET&http%3A%2F%2Fexample.com&n%3Dv',
-                       Request::fromRequest()->getSignatureBaseString() );
-
-               $params = 
'oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03'
-                       . '&oauth_timestamp=1191242090'
-                       . '&oauth_nonce=hsu94j3884jdopsl'
-                       . 
'&oauth_signature_method=PLAINTEXT&oauth_signature=ignored';
-               static::buildRequest( 'POST', 
'https://photos.example.net/request_token', $params );
-               $this->assertEquals(
-                       
'POST&https%3A%2F%2Fphotos.example.net%2Frequest_token&oauth_'
-                       . 
'consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dhsu94j3884j'
-                       . 
'dopsl%26oauth_signature_method%3DPLAINTEXT%26oauth_timestam'
-                       . 'p%3D1191242090%26oauth_version%3D1.0',
-                       Request::fromRequest()->getSignatureBaseString() );
-
-               $params = 'file=vacation.jpg&size=original&oauth_version=1.0';
-               $params .= '&oauth_consumer_key=dpf43f3p2l4k3l03';
-               $params .= 
'&oauth_token=nnch734d00sl2jdk&oauth_timestamp=1191242096';
-               $params .= '&oauth_nonce=kllo9940pd9333jh';
-               $params .= 
'&oauth_signature=ignored&oauth_signature_method=HMAC-SHA1';
-               static::buildRequest( 'GET', 
'http://photos.example.net/photos?'.$params );
-               $this->assertEquals(
-                       
'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation'
-                       . 
'.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%'
-                       . 
'3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26o'
-                       . 
'auth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jd'
-                       . 'k%26oauth_version%3D1.0%26size%3Doriginal',
-                       Request::fromRequest()->getSignatureBaseString() );
-       }
-
-       public function testBuildSignature() {
-               $params = 'file=vacation.jpg&size=original&oauth_version=1.0'
-                       . '&oauth_consumer_key=dpf43f3p2l4k3l03'
-                       . '&oauth_token=nnch734d00sl2jdk'
-                       . 
'&oauth_timestamp=1191242096&oauth_nonce=kllo9940pd9333jh'
-                       . 
'&oauth_signature=ignored&oauth_signature_method=HMAC-SHA1';
-               static::buildRequest( 'GET', 
'http://photos.example.net/photos?'.$params );
-               $r = Request::fromRequest();
-
-               $cons = new Consumer( 'key', 'kd94hf93k423kf44' );
-               $token = new Token( 'token', 'pfkkdhi9sl3r4s00' );
-
-               $hmac = new HmacSha1();
-               $plaintext = new Plaintext();
-
-               $this->assertEquals( 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=',
-                       $r->buildSignature( $hmac, $cons, $token ) );
-
-               $this->assertEquals( 'kd94hf93k423kf44&pfkkdhi9sl3r4s00',
-                       $r->buildSignature( $plaintext, $cons, $token ) );
-       }
-
-       public function testSign() {
-               $params = 'file=vacation.jpg&size=original&oauth_version=1.0'
-                       . '&oauth_consumer_key=dpf43f3p2l4k3l03'
-                       . '&oauth_token=nnch734d00sl2jdk'
-                       . 
'&oauth_timestamp=1191242096&oauth_nonce=kllo9940pd9333jh'
-                       . 
'&oauth_signature=__ignored__&oauth_signature_method=HMAC-SHA1';
-               static::buildRequest( 'GET',
-                       'http://photos.example.net/photos?'.$params );
-               $r = Request::fromRequest();
-
-               $cons = new Consumer( 'key', 'kd94hf93k423kf44' );
-               $token = new Token( 'token', 'pfkkdhi9sl3r4s00' );
-
-               $hmac = new HmacSha1();
-               $plaintext = new Plaintext();
-
-               // We need to test both what the parameter is, and how the 
serialized
-               // request is..
-
-               $r->signRequest( $hmac, $cons, $token );
-               $this->assertEquals( 'HMAC-SHA1',
-                       $r->getParameter( 'oauth_signature_method' ) );
-               $this->assertEquals( 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=',
-                       $r->getParameter( 'oauth_signature' ) );
-               $expectedPostdata = 'file=vacation.jpg'
-                       . '&oauth_consumer_key=dpf43f3p2l4k3l03'
-                       . '&oauth_nonce=kllo9940pd9333jh'
-                       . 
'&oauth_signature=tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D'
-                       . '&oauth_signature_method=HMAC-SHA1'
-                       . 
'&oauth_timestamp=1191242096&oauth_token=nnch734d00sl2jdk'
-                       . '&oauth_version=1.0&size=original';
-               $this->assertEquals( $expectedPostdata, $r->toPostData() );
-
-               $r->signRequest( $plaintext, $cons, $token );
-               $this->assertEquals( 'PLAINTEXT',
-                       $r->getParameter( 'oauth_signature_method' ) );
-               $this->assertEquals( 'kd94hf93k423kf44&pfkkdhi9sl3r4s00',
-                       $r->getParameter( 'oauth_signature' ) );
-               $expectedPostdata = 'file=vacation.jpg'
-                       . '&oauth_consumer_key=dpf43f3p2l4k3l03'
-                       . '&oauth_nonce=kllo9940pd9333jh&'
-                       . 'oauth_signature=kd94hf93k423kf44%26pfkkdhi9sl3r4s00'
-                       . '&oauth_signature_method=PLAINTEXT'
-                       . 
'&oauth_timestamp=1191242096&oauth_token=nnch734d00sl2jdk'
-                       . '&oauth_version=1.0&size=original';
-               $this->assertEquals( $expectedPostdata, $r->toPostData() );
-
-       }
-
-       /**
-        * Populates $_{SERVER,GET,POST} and whatever environment-variables 
needed
-        * to test everything.
-        *
-        * @param string $method GET or POST
-        * @param string $uri What URI is the request to ( eg 
http://example.com/foo?bar=baz )
-        * @param string $post_data What should the post-data be
-        * @param string $auth_header What to set the Authorization header to
-        */
-       public static function buildRequest(
-               $method, $uri, $post_data = '', $auth_header = ''
-        ) {
-               $_SERVER = array();
-               $_POST = array();
-               $_GET = array();
-
-               $method = strtoupper( $method );
-
-               $parts = parse_url( $uri );
-
-               $scheme = $parts['scheme'];
-               $port   = isset( $parts['port'] ) && $parts['port'] ?
-                       $parts['port'] : ( $scheme === 'https' ? '443' : '80' );
-               $host   = $parts['host'];
-               $path   = isset( $parts['path'] )  ? $parts['path']  : null;
-               $query  = isset( $parts['query'] ) ? $parts['query'] : null;
-
-               if ( $scheme == 'https' ) {
-                       $_SERVER['HTTPS'] = 'on';
-               }
-
-               $_SERVER['REQUEST_METHOD'] = $method;
-               $_SERVER['HTTP_HOST'] = $host;
-               $_SERVER['SERVER_NAME'] = $host;
-               $_SERVER['SERVER_PORT'] = $port;
-               $_SERVER['SCRIPT_NAME'] = $path;
-               $_SERVER['REQUEST_URI'] = $path . '?' . $query;
-               $_SERVER['QUERY_STRING'] = $query . '';
-               parse_str( $query, $_GET );
-
-               if ( $method == 'POST' ) {
-                       $_SERVER['HTTP_CONTENT_TYPE'] = 
'application/x-www-form-urlencoded';
-                       $_POST = parse_str( $post_data );
-                       Request::$POST_INPUT = 
'data:application/x-www-form-urlencoded,'.$post_data;
-               }
-
-               if ( $auth_header != '' ) {
-                       $_SERVER['HTTP_AUTHORIZATION'] = $auth_header;
-               }
-       }
-}
diff --git a/tests/OAuth/SignatureMethod/HmacSha1Test.php 
b/tests/OAuth/SignatureMethod/HmacSha1Test.php
deleted file mode 100644
index a9e9f22..0000000
--- a/tests/OAuth/SignatureMethod/HmacSha1Test.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\Token;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\SignatureMethod\HmacSha1
- */
-class HmacSha1Test extends \PHPUnit_Framework_TestCase {
-       private $method;
-
-       public function setUp() {
-               $this->method = new HmacSha1();
-       }
-
-       public function testIdentifyAsHmacSha1() {
-               $this->assertEquals( 'HMAC-SHA1', $this->method->getName() );
-       }
-
-       public function testBuildSignature() {
-               // Tests taken from http://wiki.oauth.net/TestCases section 9.2 
( "HMAC-SHA1" )
-               $request = $this->mockRequest( 'bs' );
-               $consumer = new Consumer( '__unused__', 'cs' );
-               $token = null;
-               $this->assertEquals( 'egQqG5AJep5sJ7anhXju1unge2I=',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-
-               $request  = $this->mockRequest( 'bs' );
-               $consumer = new Consumer( '__unused__', 'cs' );
-               $token    = new Token( '__unused__', 'ts' );
-               $this->assertEquals( 'VZVjXceV7JgPq/dOTnNmEfO0Fv8=',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-
-               $request  = $this->mockRequest(
-                       
'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26'
-                       . 'oauth_consumer_key%3Ddpf43f3p2l4k3l03%26'
-                       . 'oauth_nonce%3Dkllo9940pd9333jh%26'
-                       . 'oauth_signature_method%3DHMAC-SHA1%26'
-                       . 'oauth_timestamp%3D1191242096%26'
-                       . 'oauth_token%3Dnnch734d00sl2jdk%26'
-                       . 'oauth_version%3D1.0%26size%3Doriginal' );
-               $consumer = new Consumer( '__unused__', 'kd94hf93k423kf44' );
-               $token    = new Token( '__unused__', 'pfkkdhi9sl3r4s00' );
-               $this->assertEquals( 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-       }
-
-       public function testVerifySignature() {
-               // Tests taken from http://wiki.oauth.net/TestCases section 9.2
-               // ( "HMAC-SHA1" )
-               $request   = $this->mockRequest( 'bs' );
-               $consumer  = new Consumer( '__unused__', 'cs' );
-               $token     = null;
-               $signature = 'egQqG5AJep5sJ7anhXju1unge2I=';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               $request   = $this->mockRequest( 'bs' );
-               $consumer  = new Consumer( '__unused__', 'cs' );
-               $token     = new Token( '__unused__', 'ts' );
-               $signature = 'VZVjXceV7JgPq/dOTnNmEfO0Fv8=';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               $request   = $this->mockRequest(
-                       
'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26'
-                       . 'oauth_consumer_key%3Ddpf43f3p2l4k3l03%26'
-                       . 'oauth_nonce%3Dkllo9940pd9333jh%26'
-                       . 'oauth_signature_method%3DHMAC-SHA1%26'
-                       . 'oauth_timestamp%3D1191242096%26'
-                       . 'oauth_token%3Dnnch734d00sl2jdk%26'
-                       . 'oauth_version%3D1.0%26size%3Doriginal' );
-               $consumer  = new Consumer( '__unused__', 'kd94hf93k423kf44' );
-               $token     = new Token( '__unused__', 'pfkkdhi9sl3r4s00' );
-               $signature = 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-       }
-
-       protected function mockRequest( $baseStr ) {
-               $stub = $this->getMockBuilder( 
'Wikimedia\Slimapp\OAuth\request' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-               $stub->method( 'getSignatureBaseString' )
-                       ->willReturn( $baseStr );
-               return $stub;
-       }
-}
diff --git a/tests/OAuth/SignatureMethod/PlaintextTest.php 
b/tests/OAuth/SignatureMethod/PlaintextTest.php
deleted file mode 100644
index 137b6a7..0000000
--- a/tests/OAuth/SignatureMethod/PlaintextTest.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\Token;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\SignatureMethod\Plaintext
- */
-class PlaintextTest extends \PHPUnit_Framework_TestCase {
-       private $method;
-
-       public function setUp() {
-               $this->method = new Plaintext();
-       }
-
-       public function testIdentifyAsPlaintext() {
-               $this->assertEquals( 'PLAINTEXT', $this->method->getName() );
-       }
-
-       public function testBuildSignature() {
-               // Tests based on from http://wiki.oauth.net/TestCases section 
9.2 ( "HMAC-SHA1" )
-               $request  = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'cs' );
-               $token = null;
-               $this->assertEquals( 'cs&', $this->method->buildSignature( 
$request, $consumer, $token ) );
-
-               $request  = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'cs' );
-               $token    = new Token( '__unused__', 'ts' );
-               $this->assertEquals( 'cs&ts', $this->method->buildSignature( 
$request, $consumer, $token ) );
-
-               $request  = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'kd94hf93k423kf44' );
-               $token    = new Token( '__unused__', 'pfkkdhi9sl3r4s00' );
-               $this->assertEquals( 'kd94hf93k423kf44&pfkkdhi9sl3r4s00',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-
-               // Tests taken from Chapter 9.4.1 ( "Generating Signature" ) 
from the spec
-               $request  = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'djr9rjt0jd78jf88' );
-               $token    = new Token( '__unused__', 'jjd999tj88uiths3' );
-               $this->assertEquals( 'djr9rjt0jd78jf88&jjd999tj88uiths3',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-
-               $request  = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'djr9rjt0jd78jf88' );
-               $token    = new Token( '__unused__', 'jjd99$tj88uiths3' );
-               $this->assertEquals( 'djr9rjt0jd78jf88&jjd99%24tj88uiths3',
-                       $this->method->buildSignature( $request, $consumer, 
$token ) );
-       }
-
-       public function testVerifySignature() {
-               // Tests based on from http://wiki.oauth.net/TestCases section 
9.2 ( "HMAC-SHA1" )
-               $request = $this->mockRequest( '__unused__' );
-               $consumer = new Consumer( '__unused__', 'cs' );
-               $token = null;
-               $signature = 'cs&';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               $request   = $this->mockRequest( '__unused__' );
-               $consumer  = new Consumer( '__unused__', 'cs' );
-               $token     = new Token( '__unused__', 'ts' );
-               $signature = 'cs&ts';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               $request   = $this->mockRequest( '__unused__' );
-               $consumer  = new Consumer( '__unused__', 'kd94hf93k423kf44' );
-               $token     = new Token( '__unused__', 'pfkkdhi9sl3r4s00' );
-               $signature = 'kd94hf93k423kf44&pfkkdhi9sl3r4s00';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               // Tests taken from Chapter 9.4.1 ( "Generating Signature" ) 
from the
-               // spec
-               $request   = $this->mockRequest( '__unused__' );
-               $consumer  = new Consumer( '__unused__', 'djr9rjt0jd78jf88' );
-               $token     = new Token( '__unused__', 'jjd999tj88uiths3' );
-               $signature = 'djr9rjt0jd78jf88&jjd999tj88uiths3';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-
-               $request   = $this->mockRequest( '__unused__' );
-               $consumer  = new Consumer( '__unused__', 'djr9rjt0jd78jf88' );
-               $token     = new Token( '__unused__', 'jjd99$tj88uiths3' );
-               $signature = 'djr9rjt0jd78jf88&jjd99%24tj88uiths3';
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature ) );
-       }
-
-       protected function mockRequest( $baseStr ) {
-               $stub = $this->getMockBuilder( 
'Wikimedia\Slimapp\OAuth\request' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-               $stub->method( 'getSignatureBaseString' )
-                       ->willReturn( $baseStr );
-               return $stub;
-       }
-}
diff --git a/tests/OAuth/SignatureMethod/RsaSha1Test.php 
b/tests/OAuth/SignatureMethod/RsaSha1Test.php
deleted file mode 100644
index c1da1ba..0000000
--- a/tests/OAuth/SignatureMethod/RsaSha1Test.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth\SignatureMethod;
-
-use Wikimedia\Slimapp\OAuth\Consumer;
-use Wikimedia\Slimapp\OAuth\Request;
-use Wikimedia\Slimapp\OAuth\Token;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\SignatureMethod\RsaSha1
- */
-class RsaSha1Test extends \PHPUnit_Framework_TestCase {
-       private $method;
-
-       public function setUp() {
-               $cert = <<<EOD
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
-A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
-7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
-hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
-X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
-uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
-rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
-zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
-qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
-WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
-cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
-3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
-AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
-Lw03eHTNQghS0A==
------END PRIVATE KEY-----
-EOD;
-               $pubcert = <<<EOD
------BEGIN CERTIFICATE-----
-MIIBpjCCAQ+gAwIBAgIBATANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDDA5UZXN0
-IFByaW5jaXBhbDAeFw03MDAxMDEwODAwMDBaFw0zODEyMzEwODAwMDBaMBkxFzAV
-BgNVBAMMDlRlc3QgUHJpbmNpcGFsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-gQC0YjCwIfYoprq/FQO6lb3asXrxLlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlY
-zypSRjVxwxrsuRcP3e641SdASwfrmzyvIgP08N4S0IFzEURkV1wp/IpH7kH41Etb
-mUmrXSwfNZsnQRE5SYSOhh+LcK2wyQkdgcMv11l4KoBkcwIDAQABMA0GCSqGSIb3
-DQEBBQUAA4GBAGZLPEuJ5SiJ2ryq+CmEGOXfvlTtEL2nuGtr9PewxkgnOjZpUy+d
-4TvuXJbNQc8f4AMWL/tO9w0Fk80rWKp9ea8/df4qMq5qlFWlx6yOLQxumNOmECKb
-WpkUQDIDJEoFUzKMVuJf4KO/FJ345+BNLGgbJ6WujreoM1X/gYfdnJ/J
------END CERTIFICATE-----
-EOD;
-
-               $this->method = $this->getMockBuilder(
-                       'Wikimedia\Slimapp\OAuth\SignatureMethod\RsaSha1' )
-                       ->setMethods( array( 'fetchPrivateCert', 
'fetchPublicCert' ) )
-                       ->getMock();
-
-               $this->method->method( 'fetchPrivateCert' )
-                       ->willReturn( $cert );
-               $this->method->method( 'fetchPublicCert' )
-                       ->willReturn( $pubcert );
-       }
-
-       public function testIdentifyAsRsaSha1() {
-               $this->assertEquals( 'RSA-SHA1', $this->method->getName() );
-       }
-
-       public function testBuildSignature() {
-               if ( !function_exists( 'openssl_get_privatekey' ) ) {
-                       $this->markTestSkipped(
-                               'OpenSSL not available, can\'t test RSA-SHA1 
functionality'
-                       );
-               }
-
-               // Tests taken from http://wiki.oauth.net/TestCases section 9.3
-               // ("RSA-SHA1")
-               $request = $this->mockRequest(
-                       // @codingStandardsIgnoreStart Line exceeds 100 
characters
-                       
'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacaction.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3D13917289812797014437%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1196666512%26oauth_version%3D1.0%26size%3Doriginal'
-                       // @codingStandardsIgnoreEnd
-               );
-               $consumer = new Consumer( 'dpf43f3p2l4k3l03', '__unused__' );
-               $token = null;
-               // @codingStandardsIgnoreStart Line exceeds 100 characters
-               $signature = 
'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=';
-               // @codingStandardsIgnoreEnd
-               $this->assertEquals( $signature,
-                       $this->method->buildSignature( $request, $consumer, 
$token )
-               );
-       }
-
-       public function testVerifySignature() {
-               if ( !function_exists( 'openssl_get_privatekey' ) ) {
-                       $this->markTestSkipped(
-                               'OpenSSL not available, can\'t test RSA-SHA1 
functionality'
-                       );
-               }
-
-               // Tests taken from http://wiki.oauth.net/TestCases section 9.3
-               // ("RSA-SHA1")
-               $request = $this->mockRequest(
-                       // @codingStandardsIgnoreStart Line exceeds 100 
characters
-                       
'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacaction.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3D13917289812797014437%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1196666512%26oauth_version%3D1.0%26size%3Doriginal'
-                       // @codingStandardsIgnoreEnd
-               );
-               $consumer = new Consumer( 'dpf43f3p2l4k3l03', '__unused__' );
-               $token = null;
-               // @codingStandardsIgnoreStart Line exceeds 100 characters
-               $signature = 
'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=';
-               // @codingStandardsIgnoreEnd
-               $this->assertTrue( $this->method->checkSignature(
-                       $request, $consumer, $token, $signature
-               ) );
-       }
-
-       protected function mockRequest( $baseStr ) {
-               $stub = $this->getMockBuilder( 
'Wikimedia\Slimapp\OAuth\request' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-               $stub->method( 'getSignatureBaseString' )
-                       ->willReturn( $baseStr );
-               return $stub;
-       }
-}
diff --git a/tests/OAuth/TokenTest.php b/tests/OAuth/TokenTest.php
deleted file mode 100644
index eecde55..0000000
--- a/tests/OAuth/TokenTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * @section LICENSE
- * Copyright (c) 2007 Andy Smith
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to
- * whom the Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * @file
- */
-
-namespace Wikimedia\Slimapp\OAuth;
-
-/**
- * @coversDefaultClass \Wikimedia\Slimapp\OAuth\Token
- */
-class TokenTest extends \PHPUnit_Framework_TestCase {
-       public function testSerialize() {
-               $token = new Token( 'token', 'secret' );
-               $this->assertEquals(
-                       'oauth_token=token&oauth_token_secret=secret', 
$token->toString()
-               );
-
-               $token = new Token( 'token&', 'secret%' );
-               $this->assertEquals(
-                       'oauth_token=token%26&oauth_token_secret=secret%25',
-                       $token->toString()
-               );
-       }
-       public function testConvertToString() {
-               $token = new Token( 'token', 'secret' );
-               $this->assertEquals(
-                       'oauth_token=token&oauth_token_secret=secret', 
(string)$token
-               );
-
-               $token = new Token( 'token&', 'secret%' );
-               $this->assertEquals(
-                       'oauth_token=token%26&oauth_token_secret=secret%25',
-                       (string)$token
-               );
-       }
-}

-- 
To view, visit https://gerrit.wikimedia.org/r/248567
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I70a9849a81558b292a7f3545e9f29a09669c0b12
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/slimapp
Gerrit-Branch: master
Gerrit-Owner: Gergő Tisza <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to