diff options
author | Josh Hoyt <josh@janrain.com> | 2006-09-08 00:09:59 +0000 |
---|---|---|
committer | Josh Hoyt <josh@janrain.com> | 2006-09-08 00:09:59 +0000 |
commit | 9588223f3465c362171cdcab5101feca2a3b0412 (patch) | |
tree | 414245917ea3d69bf4ed91f7a9f0d98173779599 | |
parent | 3f1a808ec947162636862c97907d69a726fa62da (diff) | |
download | php-openid-9588223f3465c362171cdcab5101feca2a3b0412.zip php-openid-9588223f3465c362171cdcab5101feca2a3b0412.tar.gz php-openid-9588223f3465c362171cdcab5101feca2a3b0412.tar.bz2 |
[project @ Make all tests pass!]
-rw-r--r-- | Auth/OpenID/Consumer.php | 41 | ||||
-rw-r--r-- | Tests/Auth/OpenID/Consumer.php | 4 | ||||
-rw-r--r-- | Tests/TestDriver.php | 11 |
3 files changed, 28 insertions, 28 deletions
diff --git a/Auth/OpenID/Consumer.php b/Auth/OpenID/Consumer.php index f57a1bd..86a0e0d 100644 --- a/Auth/OpenID/Consumer.php +++ b/Auth/OpenID/Consumer.php @@ -738,40 +738,39 @@ class Auth_OpenID_GenericConsumer { function _checkNonce($server_url, $response) { $nonce = $response->getNonce(); - $parsed_url = parse_url($response->getReturnTo()); - $query_str = @$parsed_url['query']; - $query = array(); - parse_str($query_str, $query); - - $found = false; - - foreach ($query as $k => $v) { - if ($k == 'nonce') { - if ($v != $nonce) { - return new Auth_OpenID_FailureResponse($response, - "Nonce mismatch"); - } else { + if ($nonce === null) { + $parsed_url = parse_url($response->getReturnTo()); + $query_str = @$parsed_url['query']; + $query = array(); + parse_str($query_str, $query); + + $found = false; + + foreach ($query as $k => $v) { + if ($k == 'nonce') { + $server_url = ''; + $nonce = $v; $found = true; break; } } - } - if (!$found) { - return new Auth_OpenID_FailureResponse($response, - sprintf("Nonce missing from return_to: %s", - $response->getReturnTo())); + + if (!$found) { + return new Auth_OpenID_FailureResponse($response, + sprintf("Nonce missing from return_to: %s", + $response->getReturnTo())); + } } list($timestamp, $salt) = Auth_OpenID_splitNonce($nonce); - if (!($timestamp && - $salt)) { + if (!($timestamp && $salt)) { return new Auth_OpenID_FailureResponse($response, 'Malformed nonce'); } - if (!$this->store->useNonce($endpoint->server_url, + if (!$this->store->useNonce($server_url, $timestamp, $salt)) { return new Auth_OpenID_FailureResponse($response, "Nonce missing from store"); diff --git a/Tests/Auth/OpenID/Consumer.php b/Tests/Auth/OpenID/Consumer.php index 2ed6ee4..1e9311c 100644 --- a/Tests/Auth/OpenID/Consumer.php +++ b/Tests/Auth/OpenID/Consumer.php @@ -217,7 +217,7 @@ class Tests_Auth_OpenID_Consumer extends PHPUnit_TestCase { $result = $consumer->complete($query, $result->endpoint); - $this->assertEquals($result->status, Auth_OpenID_SUCCESS); + $this->assertEquals(Auth_OpenID_SUCCESS, $result->status); $this->assertEquals($result->identity_url, $user_url); } @@ -391,7 +391,7 @@ class Tests_Auth_OpenID_Consumer_CheckNonceTest extends _TestIdRes { $ret = $this->consumer->_checkNonce($this->server_url, $this->response); $this->assertEquals($ret->status, Auth_OpenID_FAILURE); $this->assertEquals($ret->identity_url, $this->consumer_id); - $this->assertTrue(strpos($ret->message, 'Nonce mismatch') === 0); + $this->assertTrue(strpos($ret->message, 'Malformed nonce') === 0, $ret->message); } function test_missingNonce() diff --git a/Tests/TestDriver.php b/Tests/TestDriver.php index 621773b..c61086c 100644 --- a/Tests/TestDriver.php +++ b/Tests/TestDriver.php @@ -117,16 +117,17 @@ $_tests = array( 'Consumer', 'CryptUtil', 'DiffieHellman', + 'Discover', 'HMACSHA1', 'KVForm', - 'Util', + 'Nonce', + 'OpenID_Yadis', 'Parse', - 'StoreTest', 'Server', + 'StoreTest', 'TrustRoot', - 'Discover', - 'OpenID_Yadis', - 'URINorm'), + 'URINorm', + 'Util'), ), array( 'dir' => 'Tests/Services/Yadis/', |