aboutsummaryrefslogtreecommitdiff
path: root/models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php
diff options
context:
space:
mode:
Diffstat (limited to 'models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php')
-rw-r--r--models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php166
1 files changed, 166 insertions, 0 deletions
diff --git a/models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php b/models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php
new file mode 100644
index 000000000..1f64948ff
--- /dev/null
+++ b/models/openid-php-openid-782224d/Tests/Auth/OpenID/Nonce.php
@@ -0,0 +1,166 @@
+<?php
+
+/**
+ * Tests for the Nonce implementation.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2006 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/OpenID/Nonce.php';
+
+define('Tests_Auth_OpenID_nonce_re',
+ '/\A\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ/');
+
+class Tests_Auth_OpenID_Nonce extends PHPUnit_Framework_TestSuite {
+ function Tests_Auth_OpenID_Nonce()
+ {
+ $this->addTestSuite('Tests_Auth_OpenID_NonceTests');
+ $this->makeSplitTests();
+ $this->makeCheckTimestampTests();
+ $this->setName('Tests_Auth_OpenID_Nonce');
+ }
+
+ function makeSplitTests()
+ {
+ $cases = array(
+ '',
+ '1970-01-01T00:00:00+1:00',
+ '1969-01-01T00:00:00Z',
+ '1970-00-01T00:00:00Z',
+ '1970.01-01T00:00:00Z',
+ 'Thu Sep 7 13:29:31 PDT 2006',
+ 'monkeys',
+ );
+
+ foreach ($cases as $nonce_str) {
+ $this->_mkSplitTest($nonce_str);
+ }
+ }
+
+ function _mkSplitTest($nonce_str)
+ {
+ $test = new Tests_Auth_OpenID_Nonce_BadSplitCase($nonce_str);
+ $test->setName('BadNonceSplit ' . var_export($nonce_str, true));
+ $this->addTest($test);
+ }
+
+ function makeCheckTimestampTests()
+ {
+ $cases = array(
+ // exact, no allowed skew
+ array('1970-01-01T00:00:00Z', 0, 0, true),
+
+ // exact, large skew
+ array('1970-01-01T00:00:00Z', 1000, 0, true),
+
+ // no allowed skew, one second old
+ array('1970-01-01T00:00:00Z', 0, 1, false),
+
+ // many seconds old, outside of skew
+ array('1970-01-01T00:00:00Z', 10, 50, false),
+
+ // one second old, one second skew allowed
+ array('1970-01-01T00:00:00Z', 1, 1, true),
+
+ // One second in the future, one second skew allowed
+ array('1970-01-01T00:00:02Z', 1, 1, true),
+
+ // two seconds in the future, one second skew allowed
+ array('1970-01-01T00:00:02Z', 1, 0, false),
+
+ // malformed nonce string
+ array('monkeys', 0, 0, false)
+ );
+
+ foreach ($cases as $case) {
+ $this->_mkCheckTest($case);
+ }
+ }
+
+ function _mkCheckTest($case)
+ {
+ list($nonce_str, $skew, $now, $expected) = $case;
+ $test = new Tests_Auth_OpenID_Nonce_TimestampCase(
+ $nonce_str, $skew, $now, $expected);
+ $test->setName('CheckTimestamp ' . var_export($nonce_str, true));
+ $this->addTest($test);
+ }
+}
+
+class Tests_Auth_OpenID_Nonce_TimestampCase extends PHPUnit_Framework_TestCase {
+ function Tests_Auth_OpenID_Nonce_TimestampCase(
+ $nonce_str, $skew, $now, $expected)
+ {
+ $this->nonce_string = $nonce_str;
+ $this->allowed_skew = $skew;
+ $this->now = $now;
+ $this->expected = $expected;
+ }
+
+ function runTest()
+ {
+ $actual = Auth_OpenID_checkTimestamp($this->nonce_string,
+ $this->allowed_skew,
+ $this->now);
+ $this->assertEquals($this->expected, $actual);
+ }
+}
+
+class Tests_Auth_OpenID_NonceTests extends PHPUnit_Framework_TestCase {
+ function test_mkNonce()
+ {
+ $nonce_str = Auth_OpenID_mkNonce();
+ $this->assertTrue(preg_match(Tests_Auth_OpenID_nonce_re, $nonce_str));
+ }
+
+ function test_mkNonce_when()
+ {
+ $nonce_str = Auth_OpenID_mkNonce(0);
+ $this->assertTrue(preg_match(Tests_Auth_OpenID_nonce_re, $nonce_str));
+ $tpart = substr($nonce_str, 0, 20);
+ $this->assertEquals('1970-01-01T00:00:00Z', $tpart);
+ }
+
+ function test_splitNonce()
+ {
+ $s = '1970-01-01T00:00:00Z';
+ $expected_t = 0;
+ $expected_salt = '';
+ list($actual_t, $actual_salt) = Auth_OpenID_splitNonce($s);
+ $this->assertEquals($expected_t, $actual_t);
+ $this->assertEquals($expected_salt, $actual_salt);
+ }
+
+
+ function test_mkSplit()
+ {
+ $t = 42;;
+ $nonce_str = Auth_OpenID_mkNonce($t);
+ $this->assertTrue(preg_match(Tests_Auth_OpenID_nonce_re, $nonce_str));
+ list($et, $salt) = Auth_OpenID_splitNonce($nonce_str);
+ $this->assertEquals(6, strlen($salt));
+ $this->assertEquals($et, $t);
+ }
+}
+
+class Tests_Auth_OpenID_Nonce_BadSplitCase extends PHPUnit_Framework_TestCase {
+ function Tests_Auth_OpenID_Nonce_BadSplitCase($nonce_str)
+ {
+ $this->nonce_str = $nonce_str;
+ }
+
+ function runTest()
+ {
+ $result = Auth_OpenID_splitNonce($this->nonce_str);
+ $this->assertNull($result);
+ }
+}
+
+