Mercurial > hg > rc1
comparison vendor/pear/crypt_gpg/tests/GeneralTest.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
| author | Charlie Root |
|---|---|
| date | Thu, 04 Jan 2018 15:50:29 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1e000243b222 |
|---|---|
| 1 <?php | |
| 2 | |
| 3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ | |
| 4 | |
| 5 /** | |
| 6 * General test cases for the Crypt_GPG package. | |
| 7 * | |
| 8 * These tests require the PHPUnit 3.6 or greater package to be installed. | |
| 9 * PHPUnit is installable using PEAR. See the | |
| 10 * {@link http://www.phpunit.de/manual/3.6/en/installation.html manual} | |
| 11 * for detailed installation instructions. | |
| 12 * | |
| 13 * To run these tests, use: | |
| 14 * <code> | |
| 15 * $ phpunit GeneralTestCase | |
| 16 * </code> | |
| 17 * | |
| 18 * LICENSE: | |
| 19 * | |
| 20 * This library is free software; you can redistribute it and/or modify | |
| 21 * it under the terms of the GNU Lesser General Public License as | |
| 22 * published by the Free Software Foundation; either version 2.1 of the | |
| 23 * License, or (at your option) any later version. | |
| 24 * | |
| 25 * This library is distributed in the hope that it will be useful, | |
| 26 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 28 * Lesser General Public License for more details. | |
| 29 * | |
| 30 * You should have received a copy of the GNU Lesser General Public | |
| 31 * License along with this library; if not, see | |
| 32 * <http://www.gnu.org/licenses/> | |
| 33 * | |
| 34 * @category Encryption | |
| 35 * @package Crypt_GPG | |
| 36 * @author Michael Gauthier <mike@silverorange.com> | |
| 37 * @copyright 2005-2013 silverorange | |
| 38 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
| 39 * @version CVS: $Id$ | |
| 40 * @link http://pear.php.net/package/Crypt_GPG | |
| 41 */ | |
| 42 | |
| 43 /** | |
| 44 * Base test case. | |
| 45 */ | |
| 46 require_once 'TestCase.php'; | |
| 47 | |
| 48 /** | |
| 49 * General tests for Crypt_GPG. | |
| 50 * | |
| 51 * @category Encryption | |
| 52 * @package Crypt_GPG | |
| 53 * @author Michael Gauthier <mike@silverorange.com> | |
| 54 * @copyright 2008-2013 silverorange | |
| 55 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
| 56 * @link http://pear.php.net/package/Crypt_GPG | |
| 57 */ | |
| 58 class GeneralTestCase extends Crypt_GPG_TestCase | |
| 59 { | |
| 60 // {{{ testPublicKeyringFileException() | |
| 61 | |
| 62 /** | |
| 63 * @expectedException Crypt_GPG_FileException | |
| 64 */ | |
| 65 public function testPublicKeyringFileException() | |
| 66 { | |
| 67 $publicKeyringFile = $this->getTempFilename('pubring.gpg'); | |
| 68 new Crypt_GPG( | |
| 69 array( | |
| 70 'publicKeyring' => $publicKeyringFile | |
| 71 ) | |
| 72 ); | |
| 73 } | |
| 74 | |
| 75 // }}} | |
| 76 // {{{ testPrivateKeyringFileException() | |
| 77 | |
| 78 /** | |
| 79 * @expectedException Crypt_GPG_FileException | |
| 80 */ | |
| 81 public function testPrivateKeyringFileException() | |
| 82 { | |
| 83 $privateKeyringFile = $this->getTempFilename('secring.gpg'); | |
| 84 new Crypt_GPG( | |
| 85 array( | |
| 86 'privateKeyring' => $privateKeyringFile | |
| 87 ) | |
| 88 ); | |
| 89 } | |
| 90 | |
| 91 // }}} | |
| 92 // {{{ testTrustDatabaseFileException() | |
| 93 | |
| 94 /** | |
| 95 * @expectedException Crypt_GPG_FileException | |
| 96 */ | |
| 97 public function testTrustDatabaseFileException() | |
| 98 { | |
| 99 $trustDbFile = $this->getTempFilename('secring.gpg'); | |
| 100 new Crypt_GPG( | |
| 101 array( | |
| 102 'trustDb' => $trustDbFile | |
| 103 ) | |
| 104 ); | |
| 105 } | |
| 106 | |
| 107 // }}} | |
| 108 // {{{ testHomedirFileException_NoCreate() | |
| 109 | |
| 110 /** | |
| 111 * @expectedException Crypt_GPG_FileException | |
| 112 * @expectedExceptionMessage cannot be created | |
| 113 */ | |
| 114 public function testHomedirFileException_NoCreate() | |
| 115 { | |
| 116 if (posix_getuid() === 0) { | |
| 117 $this->markTestSkipped('Root can write to any homedir.'); | |
| 118 } | |
| 119 | |
| 120 $nonCreatableDirectory = '//.gnupg'; | |
| 121 new Crypt_GPG(array('homedir' => $nonCreatableDirectory)); | |
| 122 } | |
| 123 | |
| 124 // }}} | |
| 125 // {{{ testHomedirFileException_NoExecute() | |
| 126 | |
| 127 /** | |
| 128 * @expectedException Crypt_GPG_FileException | |
| 129 * @expectedExceptionMessage is not enterable | |
| 130 */ | |
| 131 public function testHomedirFileException_NoExecute() | |
| 132 { | |
| 133 if (posix_getuid() === 0) { | |
| 134 $this->markTestSkipped('Root can do what it wants to any homedir.'); | |
| 135 } | |
| 136 | |
| 137 $nonExecutableDirectory = $this->getTempFilename('home-no-execute'); | |
| 138 mkdir($nonExecutableDirectory); | |
| 139 chmod($nonExecutableDirectory, 0600); // rw- --- --- | |
| 140 | |
| 141 new Crypt_GPG(array('homedir' => $nonExecutableDirectory)); | |
| 142 } | |
| 143 | |
| 144 // }}} | |
| 145 // {{{ testHomedirFileException_NoWrite() | |
| 146 | |
| 147 /** | |
| 148 * @expectedException Crypt_GPG_FileException() | |
| 149 * @expectedExceptionMessage is not writeable | |
| 150 */ | |
| 151 public function testHomedirFileException_NoWrite() | |
| 152 { | |
| 153 if (posix_getuid() === 0) { | |
| 154 $this->markTestSkipped('Root can write to any homedir.'); | |
| 155 } | |
| 156 | |
| 157 $nonWriteableDirectory = $this->getTempFilename('home-no-write'); | |
| 158 mkdir($nonWriteableDirectory); | |
| 159 chmod($nonWriteableDirectory, 0300); // r-x --- --- | |
| 160 | |
| 161 new Crypt_GPG(array('homedir' => $nonWriteableDirectory)); | |
| 162 } | |
| 163 | |
| 164 // }}} | |
| 165 // {{{ testBinaryPEARException() | |
| 166 | |
| 167 /** | |
| 168 * @expectedException PEAR_Exception | |
| 169 */ | |
| 170 public function testBinaryPEARException() | |
| 171 { | |
| 172 new Crypt_GPG(array('binary' => './non-existent-binary')); | |
| 173 } | |
| 174 | |
| 175 // }}} | |
| 176 // {{{ testGPGBinaryPEARException() | |
| 177 | |
| 178 /** | |
| 179 * @expectedException PEAR_Exception | |
| 180 */ | |
| 181 public function testGPGBinaryPEARException() | |
| 182 { | |
| 183 new Crypt_GPG(array('gpgBinary' => './non-existent-binary')); | |
| 184 } | |
| 185 | |
| 186 // }}} | |
| 187 // {{{ testSetEngine() | |
| 188 | |
| 189 public function testSetEngine() | |
| 190 { | |
| 191 $engine = new Crypt_GPG_Engine($this->getOptions()); | |
| 192 $gpg = new Crypt_GPG(); | |
| 193 $gpg->setEngine($engine); | |
| 194 | |
| 195 $homedirConstraint = $this->attribute( | |
| 196 $this->attributeEqualTo( | |
| 197 '_homedir', | |
| 198 __DIR__ . '/' . self::HOMEDIR | |
| 199 ), | |
| 200 'engine' | |
| 201 ); | |
| 202 | |
| 203 $this->assertThat( | |
| 204 $gpg, | |
| 205 $homedirConstraint, | |
| 206 'Engine was not set properly.' | |
| 207 ); | |
| 208 } | |
| 209 | |
| 210 // }}} | |
| 211 | |
| 212 // fluent interface | |
| 213 // {{{ testFluentInterface | |
| 214 | |
| 215 /** | |
| 216 * @group fluent | |
| 217 */ | |
| 218 public function testFluentInterface() | |
| 219 { | |
| 220 $returnedGpg = $this->gpg->setEngine( | |
| 221 new Crypt_GPG_Engine($this->getOptions()) | |
| 222 ); | |
| 223 $this->assertEquals( | |
| 224 $this->gpg, | |
| 225 $returnedGpg, | |
| 226 'Failed asserting fluent interface works for setEngine() method.' | |
| 227 ); | |
| 228 | |
| 229 $returnedGpg = $this->gpg->addDecryptKey( | |
| 230 '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
| 231 'test1' | |
| 232 ); | |
| 233 $this->assertEquals( | |
| 234 $this->gpg, | |
| 235 $returnedGpg, | |
| 236 'Failed asserting fluent interface works for addDecryptKey() ' . | |
| 237 'method.' | |
| 238 ); | |
| 239 | |
| 240 $returnedGpg = $this->gpg->addEncryptKey( | |
| 241 '8D2299D9C5C211128B32BBB0C097D9EC94C06363' | |
| 242 ); | |
| 243 $this->assertEquals( | |
| 244 $this->gpg, | |
| 245 $returnedGpg, | |
| 246 'Failed asserting fluent interface works for addEncryptKey() ' . | |
| 247 'method.' | |
| 248 ); | |
| 249 | |
| 250 $returnedGpg = $this->gpg->addSignKey( | |
| 251 '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
| 252 'test1' | |
| 253 ); | |
| 254 $this->assertEquals( | |
| 255 $this->gpg, | |
| 256 $returnedGpg, | |
| 257 'Failed asserting fluent interface works for addSignKey() ' . | |
| 258 'method.' | |
| 259 ); | |
| 260 | |
| 261 $returnedGpg = $this->gpg->clearDecryptKeys(); | |
| 262 $this->assertEquals( | |
| 263 $this->gpg, | |
| 264 $returnedGpg, | |
| 265 'Failed asserting fluent interface works for clearDecryptKeys() ' . | |
| 266 'method.' | |
| 267 ); | |
| 268 | |
| 269 $returnedGpg = $this->gpg->clearEncryptKeys(); | |
| 270 $this->assertEquals( | |
| 271 $this->gpg, | |
| 272 $returnedGpg, | |
| 273 'Failed asserting fluent interface works for clearEncryptKeys() ' . | |
| 274 'method.' | |
| 275 ); | |
| 276 | |
| 277 $returnedGpg = $this->gpg->clearSignKeys(); | |
| 278 $this->assertEquals( | |
| 279 $this->gpg, | |
| 280 $returnedGpg, | |
| 281 'Failed asserting fluent interface works for clearSignKeys() ' . | |
| 282 'method.' | |
| 283 ); | |
| 284 } | |
| 285 | |
| 286 // }}} | |
| 287 } | |
| 288 | |
| 289 ?> |
