diff vendor/pear/crypt_gpg/tests/KeyTest.php @ 0:1e000243b222

vanilla 1.3.3 distro, I hope
author Charlie Root
date Thu, 04 Jan 2018 15:50:29 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/pear/crypt_gpg/tests/KeyTest.php	Thu Jan 04 15:50:29 2018 -0500
@@ -0,0 +1,606 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Key class test cases for the Crypt_GPG package.
+ *
+ * These tests require the PHPUnit 3.6 or greater package to be installed.
+ * PHPUnit is installable using PEAR. See the
+ * {@link http://www.phpunit.de/manual/3.6/en/installation.html manual}
+ * for detailed installation instructions.
+ *
+ * To run these tests, use:
+ * <code>
+ * $ phpunit KeyTestCase
+ * </code>
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>
+ *
+ * @category  Encryption
+ * @package   Crypt_GPG
+ * @author    Michael Gauthier <mike@silverorange.com>
+ * @copyright 2008-2010 silverorange
+ * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version   CVS: $Id$
+ * @link      http://pear.php.net/package/Crypt_GPG
+ */
+
+/**
+ * Base test case.
+ */
+require_once 'TestCase.php';
+
+/**
+ * Key class.
+ */
+require_once 'Crypt/GPG/Key.php';
+
+/**
+ * User id class.
+ */
+require_once 'Crypt/GPG/UserId.php';
+
+/**
+ * Sub-key class.
+ */
+require_once 'Crypt/GPG/SubKey.php';
+
+/**
+ * Key class tests for Crypt_GPG.
+ *
+ * @category  Encryption
+ * @package   Crypt_GPG
+ * @author    Michael Gauthier <mike@silverorange.com>
+ * @copyright 2008-2010 silverorange
+ * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link      http://pear.php.net/package/Crypt_GPG
+ */
+class KeyTestCase extends Crypt_GPG_TestCase
+{
+    // accessors
+    // {{{ testGetSubKeys()
+
+    /**
+     * @group accessors
+     */
+    public function testGetSubKeys()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $firstSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => 'C097D9EC94C06363',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_DSA,
+            'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363',
+            'length'      => 1024,
+            'creation'    => 1221785805,
+            'expiration'  => 0,
+            'canSign'     => true,
+            'canEncrypt'  => false,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($firstSubKey);
+
+        $secondSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => '9F93F9116728EF12',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC,
+            'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12',
+            'length'      => 2048,
+            'creation'    => 1221785821,
+            'expiration'  => 0,
+            'canSign'     => false,
+            'canEncrypt'  => true,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($secondSubKey);
+
+        $subKeys = $key->getSubKeys();
+        $this->assertTrue(is_array($subKeys),
+            'Failed to assert returned sub-keys is an array.');
+
+        $this->assertEquals(2, count($subKeys),
+            'Failed to assert number of returned sub-keys is the same as ' .
+            'the number of sub-keys added.');
+
+        $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false,
+            'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $subKeys);
+        $this->assertEquals($subKeys[0], $firstSubKey,
+            'Failed to assert the first sub-key is the same as the first ' .
+            'added sub-key.');
+
+        $this->assertArrayHasKey(1, $subKeys);
+        $this->assertEquals($subKeys[1], $secondSubKey,
+            'Failed to assert the second sub-key is the same as the second ' .
+            'added sub-key.');
+    }
+
+    // }}}
+    // {{{ testGetUserIds()
+
+    /**
+     * @group accessors
+     */
+    public function testGetUserIds()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $firstUserId = new Crypt_GPG_UserId(array(
+            'name'    => 'Alice',
+            'comment' => 'shipping',
+            'email'   => 'alice@example.com'
+        ));
+
+        $key->addUserId($firstUserId);
+
+        $secondUserId = new Crypt_GPG_UserId(array(
+            'name'    => 'Bob',
+            'comment' => 'receiving',
+            'email'   => 'bob@example.com'
+        ));
+
+        $key->addUserId($secondUserId);
+
+        $userIds = $key->getUserIds();
+        $this->assertTrue(is_array($userIds),
+            'Failed to assert returned user ids is an array.');
+
+        $this->assertEquals(2, count($userIds),
+            'Failed to assert number of returned user ids is the same as ' .
+            'the number of user ids added.');
+
+        $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false,
+            'Failed to assert all returned user ids are Crypt_GPG_UserId ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $userIds);
+        $this->assertEquals($userIds[0], $firstUserId,
+            'Failed to assert the first user id is the same as the first ' .
+            'added user id.');
+
+        $this->assertArrayHasKey(1, $userIds);
+        $this->assertEquals($userIds[1], $secondUserId,
+            'Failed to assert the second user id is the same as the second ' .
+            'added user id.');
+    }
+
+    // }}}
+    // {{{ testGetPrimaryKey()
+
+    /**
+     * @group accessors
+     */
+    public function testGetPrimaryKey()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $firstSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => 'C097D9EC94C06363',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_DSA,
+            'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363',
+            'length'      => 1024,
+            'creation'    => 1221785805,
+            'expiration'  => 0,
+            'canSign'     => true,
+            'canEncrypt'  => false,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($firstSubKey);
+
+        $secondSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => '9F93F9116728EF12',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC,
+            'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12',
+            'length'      => 2048,
+            'creation'    => 1221785821,
+            'expiration'  => 0,
+            'canSign'     => false,
+            'canEncrypt'  => true,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($secondSubKey);
+
+        $primaryKey = $key->getPrimaryKey();
+
+        $this->assertEquals($firstSubKey, $primaryKey,
+            'Failed to assert the primary key is the same as the first added ' .
+            'sub-key.');
+    }
+
+    // }}}
+    // {{{ testCanSign_none()
+
+    /**
+     * @group accessors
+     */
+    public function testCanSign_none()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => false));
+        $key->addSubKey($subKey);
+
+        $this->assertFalse($key->canSign());
+    }
+
+    // }}}
+    // {{{ testCanSign_one()
+
+    /**
+     * @group accessors
+     */
+    public function testCanSign_one()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => true));
+        $key->addSubKey($subKey);
+
+        $this->assertTrue($key->canSign());
+    }
+
+    // }}}
+    // {{{ testCanSign_all()
+
+    /**
+     * @group accessors
+     */
+    public function testCanSign_all()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => true));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => true));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canSign' => true));
+        $key->addSubKey($subKey);
+
+        $this->assertTrue($key->canSign());
+    }
+
+    // }}}
+    // {{{ testCanEncrypt_none()
+
+    /**
+     * @group accessors
+     */
+    public function testCanEncrypt_none()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false));
+        $key->addSubKey($subKey);
+
+        $this->assertFalse($key->canEncrypt());
+    }
+
+    // }}}
+    // {{{ testCanEncrypt_one()
+
+    /**
+     * @group accessors
+     */
+    public function testCanEncrypt_one()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true));
+        $key->addSubKey($subKey);
+
+        $this->assertTrue($key->canEncrypt());
+    }
+
+    // }}}
+    // {{{ testCanEncrypt_all()
+
+    /**
+     * @group accessors
+     */
+    public function testCanEncrypt_all()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true));
+        $key->addSubKey($subKey);
+
+        $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true));
+        $key->addSubKey($subKey);
+
+        $this->assertTrue($key->canEncrypt());
+    }
+
+    // }}}
+    // {{{ test__toString()
+
+    /**
+     * @group accessors
+     */
+    public function test__toString()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $firstSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => 'C097D9EC94C06363',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_DSA,
+            'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363',
+            'length'      => 1024,
+            'creation'    => 1221785805,
+            'expiration'  => 0,
+            'canSign'     => true,
+            'canEncrypt'  => false,
+            'hasPrivate'  => true
+        ));
+
+        $this->assertSame((string) $key, '');
+
+        $key->addSubKey($firstSubKey);
+
+        $this->assertSame((string) $key, $firstSubKey->getId());
+    }
+
+    // }}}
+
+    // mutators
+    // {{{ testAddSubKey()
+
+    /**
+     * @group mutators
+     */
+    public function testAddSubKey()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $subKeys = $key->getSubKeys();
+        $this->assertTrue(is_array($subKeys),
+            'Failed to assert returned sub-keys is an array.');
+
+        $this->assertEquals(0, count($subKeys),
+            'Failed to assert there are no sub-keys.');
+
+        // add first sub-key
+        $firstSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => 'C097D9EC94C06363',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_DSA,
+            'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363',
+            'length'      => 1024,
+            'creation'    => 1221785805,
+            'expiration'  => 0,
+            'canSign'     => true,
+            'canEncrypt'  => false,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($firstSubKey);
+
+        $subKeys = $key->getSubKeys();
+        $this->assertTrue(is_array($subKeys),
+            'Failed to assert returned sub-keys is an array.');
+
+        $this->assertEquals(1, count($subKeys),
+            'Failed to assert number of returned sub-keys is the same as ' .
+            'the number of sub-keys added.');
+
+        $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false,
+            'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $subKeys);
+        $this->assertEquals($subKeys[0], $firstSubKey,
+            'Failed to assert the first sub-key is the same as the first ' .
+            'added sub-key.');
+
+        // add second sub-key
+        $secondSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => '9F93F9116728EF12',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC,
+            'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12',
+            'length'      => 2048,
+            'creation'    => 1221785821,
+            'expiration'  => 0,
+            'canSign'     => false,
+            'canEncrypt'  => true,
+            'hasPrivate'  => true
+        ));
+
+        $key->addSubKey($secondSubKey);
+
+        $subKeys = $key->getSubKeys();
+        $this->assertTrue(is_array($subKeys),
+            'Failed to assert returned sub-keys is an array.');
+
+        $this->assertEquals(2, count($subKeys),
+            'Failed to assert number of returned sub-keys is the same as ' .
+            'the number of sub-keys added.');
+
+        $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false,
+            'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $subKeys);
+        $this->assertEquals($subKeys[0], $firstSubKey,
+            'Failed to assert the first sub-key is the same as the first ' .
+            'added sub-key.');
+
+        $this->assertArrayHasKey(1, $subKeys);
+        $this->assertEquals($subKeys[1], $secondSubKey,
+            'Failed to assert the second sub-key is the same as the second ' .
+            'added sub-key.');
+    }
+
+    // }}}
+    // {{{ testAddUserId()
+
+    /**
+     * @group mutators
+     */
+    public function testAddUserId()
+    {
+        $key = new Crypt_GPG_Key();
+
+        $userIds = $key->getUserIds();
+        $this->assertTrue(is_array($userIds),
+            'Failed to assert returned user ids is an array.');
+
+        $this->assertEquals(0, count($userIds),
+            'Failed to assert there are no user ids.');
+
+        // add first user id
+        $firstUserId = new Crypt_GPG_UserId(array(
+            'name'    => 'Alice',
+            'comment' => 'shipping',
+            'email'   => 'alice@example.com'
+        ));
+
+        $key->addUserId($firstUserId);
+
+        $userIds = $key->getUserIds();
+        $this->assertTrue(is_array($userIds),
+            'Failed to assert returned user ids is an array.');
+
+        $this->assertEquals(1, count($userIds),
+            'Failed to assert number of returned user ids is the same as ' .
+            'the number of user ids added.');
+
+        $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false,
+            'Failed to assert all returned user ids are Crypt_GPG_UserId ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $userIds);
+        $this->assertEquals($userIds[0], $firstUserId,
+            'Failed to assert the first user id is the same as the first ' .
+            'added user id.');
+
+        // add second user id
+        $secondUserId = new Crypt_GPG_UserId(array(
+            'name'    => 'Bob',
+            'comment' => 'receiving',
+            'email'   => 'bob@example.com'
+        ));
+
+        $key->addUserId($secondUserId);
+
+        $userIds = $key->getUserIds();
+        $this->assertTrue(is_array($userIds),
+            'Failed to assert returned user ids is an array.');
+
+        $this->assertEquals(2, count($userIds),
+            'Failed to assert number of returned user ids is the same as ' .
+            'the number of user ids added.');
+
+        $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false,
+            'Failed to assert all returned user ids are Crypt_GPG_UserId ' .
+            'objects.');
+
+        $this->assertArrayHasKey(0, $userIds);
+        $this->assertEquals($userIds[0], $firstUserId,
+            'Failed to assert the first user id is the same as the first ' .
+            'added user id.');
+
+        $this->assertArrayHasKey(1, $userIds);
+        $this->assertEquals($userIds[1], $secondUserId,
+            'Failed to assert the second user id is the same as the second ' .
+            'added user id.');
+    }
+
+    // }}}
+
+    // fluent interface
+    // {{{ testFluentInterface
+
+    /**
+     * @group fluent
+     */
+    public function testFluentInterface()
+    {
+        $key = new Crypt_GPG_Key();
+
+        // add first sub-key
+        $firstSubKey = new Crypt_GPG_SubKey(array(
+            'id'          => 'C097D9EC94C06363',
+            'algorithm'   => Crypt_GPG_SubKey::ALGORITHM_DSA,
+            'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363',
+            'length'      => 1024,
+            'creation'    => 1221785805,
+            'expiration'  => 0,
+            'canSign'     => true,
+            'canEncrypt'  => false,
+            'hasPrivate'  => true
+        ));
+
+        $returnedKey = $key->addSubKey($firstSubKey);
+
+        $this->assertEquals(
+            $key,
+            $returnedKey,
+            'Failed asserting fluent interface works for addSubKey() method.'
+        );
+
+        $firstUserId = new Crypt_GPG_UserId(array(
+            'name'    => 'Alice',
+            'comment' => 'shipping',
+            'email'   => 'alice@example.com'
+        ));
+
+        $returnedKey = $key->addUserId($firstUserId);
+
+        $this->assertEquals(
+            $key,
+            $returnedKey,
+            'Failed asserting fluent interface works for addUserId() method.'
+        );
+    }
+
+    // }}}
+}
+
+?>