Mercurial > hg > rc1
diff vendor/pear/crypt_gpg/tests/ExportPrivateKeyTest.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/ExportPrivateKeyTest.php Thu Jan 04 15:50:29 2018 -0500 @@ -0,0 +1,143 @@ +<?php + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/** + * Private key export tests 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 ExportPrivateKeyTestCase + * </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 2005-2008 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'; + +/** + * Tests key export abilities of Crypt_GPG. + * + * @category Encryption + * @package Crypt_GPG + * @author Michael Gauthier <mike@silverorange.com> + * @copyright 2005-2008 silverorange + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @link http://pear.php.net/package/Crypt_GPG + */ +class ExportPrivateKeyTestCase extends Crypt_GPG_TestCase +{ + // {{{ testExportPrivateKey() + + /** + * @group export + */ + public function testExportPrivateKey() + { + $keyId = 'no-passphrase@example.com'; + + // We can't expect the key data to be identical as the one + // at the creation time, so we only check if it's valid format + $expectedKeyData = "-----END PGP PRIVATE KEY BLOCK-----"; + + // Note: This operation expects passphrase in GnuPG 2.1 < 2.1.15 + // because of https://bugs.gnupg.org/gnupg/issue2070. + + $keyData = $this->gpg->exportPrivateKey($keyId); + + $this->assertContains($expectedKeyData, $keyData); + } + + // }}} + // {{{ testExportPrivateKey_with_good_pass() + + /** + * @group export + */ + public function testExportPrivateKey_with_good_pass() + { + if (version_compare($this->gpg->getVersion(), '2.1.0', 'lt')) { + $this->markTestSkipped('GnuPG >= 2.1 requires passphrase to export private key.'); + } + + $keyId = 'first-keypair@example.com'; + + // This operation requires passphrase in GnuPG 2.1 + $this->gpg->addPassphrase('94C06363', 'test1'); + + $keyData = $this->gpg->exportPrivateKey($keyId); + + // Here we're really testing only the passphrase handling in GnuPG 2.1 + $this->assertContains('PGP PRIVATE KEY', $keyData); + } + + // }}} + // {{{ testExportPrivateKey_with_bad_pass() + + /** + * @expectedException Crypt_GPG_BadPassphraseException + * + * @group export + */ + public function testExportPrivateKey_with_bad_pass() + { + if (version_compare($this->gpg->getVersion(), '2.1.0', 'lt')) { + $this->markTestSkipped('GnuPG >= 2.1 requires passphrase to export private key.'); + } + + $keyId = 'first-keypair@example.com'; + + // This operation requires passphrase in GnuPG 2.1 + $this->gpg->addPassphrase('94C06363', 'bad'); + + $keyData = $this->gpg->exportPrivateKey($keyId); + } + + // }}} + // {{{ testExportPrivateKeyNotFoundException() + + /** + * @expectedException Crypt_GPG_KeyNotFoundException + * + * @group export + */ + public function testExportPrivateKeyNotFoundException() + { + $keyId = 'non-existent-key@example.com'; + $this->gpg->exportPrivateKey($keyId); + } + + // }}} +} + +?>