Mercurial > hg > rc1
comparison 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 |
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 * Key class 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 KeyTestCase | |
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 2008-2010 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 * Key class. | |
50 */ | |
51 require_once 'Crypt/GPG/Key.php'; | |
52 | |
53 /** | |
54 * User id class. | |
55 */ | |
56 require_once 'Crypt/GPG/UserId.php'; | |
57 | |
58 /** | |
59 * Sub-key class. | |
60 */ | |
61 require_once 'Crypt/GPG/SubKey.php'; | |
62 | |
63 /** | |
64 * Key class tests for Crypt_GPG. | |
65 * | |
66 * @category Encryption | |
67 * @package Crypt_GPG | |
68 * @author Michael Gauthier <mike@silverorange.com> | |
69 * @copyright 2008-2010 silverorange | |
70 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
71 * @link http://pear.php.net/package/Crypt_GPG | |
72 */ | |
73 class KeyTestCase extends Crypt_GPG_TestCase | |
74 { | |
75 // accessors | |
76 // {{{ testGetSubKeys() | |
77 | |
78 /** | |
79 * @group accessors | |
80 */ | |
81 public function testGetSubKeys() | |
82 { | |
83 $key = new Crypt_GPG_Key(); | |
84 | |
85 $firstSubKey = new Crypt_GPG_SubKey(array( | |
86 'id' => 'C097D9EC94C06363', | |
87 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_DSA, | |
88 'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
89 'length' => 1024, | |
90 'creation' => 1221785805, | |
91 'expiration' => 0, | |
92 'canSign' => true, | |
93 'canEncrypt' => false, | |
94 'hasPrivate' => true | |
95 )); | |
96 | |
97 $key->addSubKey($firstSubKey); | |
98 | |
99 $secondSubKey = new Crypt_GPG_SubKey(array( | |
100 'id' => '9F93F9116728EF12', | |
101 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC, | |
102 'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12', | |
103 'length' => 2048, | |
104 'creation' => 1221785821, | |
105 'expiration' => 0, | |
106 'canSign' => false, | |
107 'canEncrypt' => true, | |
108 'hasPrivate' => true | |
109 )); | |
110 | |
111 $key->addSubKey($secondSubKey); | |
112 | |
113 $subKeys = $key->getSubKeys(); | |
114 $this->assertTrue(is_array($subKeys), | |
115 'Failed to assert returned sub-keys is an array.'); | |
116 | |
117 $this->assertEquals(2, count($subKeys), | |
118 'Failed to assert number of returned sub-keys is the same as ' . | |
119 'the number of sub-keys added.'); | |
120 | |
121 $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false, | |
122 'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' . | |
123 'objects.'); | |
124 | |
125 $this->assertArrayHasKey(0, $subKeys); | |
126 $this->assertEquals($subKeys[0], $firstSubKey, | |
127 'Failed to assert the first sub-key is the same as the first ' . | |
128 'added sub-key.'); | |
129 | |
130 $this->assertArrayHasKey(1, $subKeys); | |
131 $this->assertEquals($subKeys[1], $secondSubKey, | |
132 'Failed to assert the second sub-key is the same as the second ' . | |
133 'added sub-key.'); | |
134 } | |
135 | |
136 // }}} | |
137 // {{{ testGetUserIds() | |
138 | |
139 /** | |
140 * @group accessors | |
141 */ | |
142 public function testGetUserIds() | |
143 { | |
144 $key = new Crypt_GPG_Key(); | |
145 | |
146 $firstUserId = new Crypt_GPG_UserId(array( | |
147 'name' => 'Alice', | |
148 'comment' => 'shipping', | |
149 'email' => 'alice@example.com' | |
150 )); | |
151 | |
152 $key->addUserId($firstUserId); | |
153 | |
154 $secondUserId = new Crypt_GPG_UserId(array( | |
155 'name' => 'Bob', | |
156 'comment' => 'receiving', | |
157 'email' => 'bob@example.com' | |
158 )); | |
159 | |
160 $key->addUserId($secondUserId); | |
161 | |
162 $userIds = $key->getUserIds(); | |
163 $this->assertTrue(is_array($userIds), | |
164 'Failed to assert returned user ids is an array.'); | |
165 | |
166 $this->assertEquals(2, count($userIds), | |
167 'Failed to assert number of returned user ids is the same as ' . | |
168 'the number of user ids added.'); | |
169 | |
170 $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false, | |
171 'Failed to assert all returned user ids are Crypt_GPG_UserId ' . | |
172 'objects.'); | |
173 | |
174 $this->assertArrayHasKey(0, $userIds); | |
175 $this->assertEquals($userIds[0], $firstUserId, | |
176 'Failed to assert the first user id is the same as the first ' . | |
177 'added user id.'); | |
178 | |
179 $this->assertArrayHasKey(1, $userIds); | |
180 $this->assertEquals($userIds[1], $secondUserId, | |
181 'Failed to assert the second user id is the same as the second ' . | |
182 'added user id.'); | |
183 } | |
184 | |
185 // }}} | |
186 // {{{ testGetPrimaryKey() | |
187 | |
188 /** | |
189 * @group accessors | |
190 */ | |
191 public function testGetPrimaryKey() | |
192 { | |
193 $key = new Crypt_GPG_Key(); | |
194 | |
195 $firstSubKey = new Crypt_GPG_SubKey(array( | |
196 'id' => 'C097D9EC94C06363', | |
197 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_DSA, | |
198 'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
199 'length' => 1024, | |
200 'creation' => 1221785805, | |
201 'expiration' => 0, | |
202 'canSign' => true, | |
203 'canEncrypt' => false, | |
204 'hasPrivate' => true | |
205 )); | |
206 | |
207 $key->addSubKey($firstSubKey); | |
208 | |
209 $secondSubKey = new Crypt_GPG_SubKey(array( | |
210 'id' => '9F93F9116728EF12', | |
211 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC, | |
212 'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12', | |
213 'length' => 2048, | |
214 'creation' => 1221785821, | |
215 'expiration' => 0, | |
216 'canSign' => false, | |
217 'canEncrypt' => true, | |
218 'hasPrivate' => true | |
219 )); | |
220 | |
221 $key->addSubKey($secondSubKey); | |
222 | |
223 $primaryKey = $key->getPrimaryKey(); | |
224 | |
225 $this->assertEquals($firstSubKey, $primaryKey, | |
226 'Failed to assert the primary key is the same as the first added ' . | |
227 'sub-key.'); | |
228 } | |
229 | |
230 // }}} | |
231 // {{{ testCanSign_none() | |
232 | |
233 /** | |
234 * @group accessors | |
235 */ | |
236 public function testCanSign_none() | |
237 { | |
238 $key = new Crypt_GPG_Key(); | |
239 | |
240 $subKey = new Crypt_GPG_SubKey(array('canSign' => false)); | |
241 $key->addSubKey($subKey); | |
242 | |
243 $subKey = new Crypt_GPG_SubKey(array('canSign' => false)); | |
244 $key->addSubKey($subKey); | |
245 | |
246 $subKey = new Crypt_GPG_SubKey(array('canSign' => false)); | |
247 $key->addSubKey($subKey); | |
248 | |
249 $this->assertFalse($key->canSign()); | |
250 } | |
251 | |
252 // }}} | |
253 // {{{ testCanSign_one() | |
254 | |
255 /** | |
256 * @group accessors | |
257 */ | |
258 public function testCanSign_one() | |
259 { | |
260 $key = new Crypt_GPG_Key(); | |
261 | |
262 $subKey = new Crypt_GPG_SubKey(array('canSign' => false)); | |
263 $key->addSubKey($subKey); | |
264 | |
265 $subKey = new Crypt_GPG_SubKey(array('canSign' => false)); | |
266 $key->addSubKey($subKey); | |
267 | |
268 $subKey = new Crypt_GPG_SubKey(array('canSign' => true)); | |
269 $key->addSubKey($subKey); | |
270 | |
271 $this->assertTrue($key->canSign()); | |
272 } | |
273 | |
274 // }}} | |
275 // {{{ testCanSign_all() | |
276 | |
277 /** | |
278 * @group accessors | |
279 */ | |
280 public function testCanSign_all() | |
281 { | |
282 $key = new Crypt_GPG_Key(); | |
283 | |
284 $subKey = new Crypt_GPG_SubKey(array('canSign' => true)); | |
285 $key->addSubKey($subKey); | |
286 | |
287 $subKey = new Crypt_GPG_SubKey(array('canSign' => true)); | |
288 $key->addSubKey($subKey); | |
289 | |
290 $subKey = new Crypt_GPG_SubKey(array('canSign' => true)); | |
291 $key->addSubKey($subKey); | |
292 | |
293 $this->assertTrue($key->canSign()); | |
294 } | |
295 | |
296 // }}} | |
297 // {{{ testCanEncrypt_none() | |
298 | |
299 /** | |
300 * @group accessors | |
301 */ | |
302 public function testCanEncrypt_none() | |
303 { | |
304 $key = new Crypt_GPG_Key(); | |
305 | |
306 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false)); | |
307 $key->addSubKey($subKey); | |
308 | |
309 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false)); | |
310 $key->addSubKey($subKey); | |
311 | |
312 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false)); | |
313 $key->addSubKey($subKey); | |
314 | |
315 $this->assertFalse($key->canEncrypt()); | |
316 } | |
317 | |
318 // }}} | |
319 // {{{ testCanEncrypt_one() | |
320 | |
321 /** | |
322 * @group accessors | |
323 */ | |
324 public function testCanEncrypt_one() | |
325 { | |
326 $key = new Crypt_GPG_Key(); | |
327 | |
328 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false)); | |
329 $key->addSubKey($subKey); | |
330 | |
331 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => false)); | |
332 $key->addSubKey($subKey); | |
333 | |
334 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true)); | |
335 $key->addSubKey($subKey); | |
336 | |
337 $this->assertTrue($key->canEncrypt()); | |
338 } | |
339 | |
340 // }}} | |
341 // {{{ testCanEncrypt_all() | |
342 | |
343 /** | |
344 * @group accessors | |
345 */ | |
346 public function testCanEncrypt_all() | |
347 { | |
348 $key = new Crypt_GPG_Key(); | |
349 | |
350 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true)); | |
351 $key->addSubKey($subKey); | |
352 | |
353 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true)); | |
354 $key->addSubKey($subKey); | |
355 | |
356 $subKey = new Crypt_GPG_SubKey(array('canEncrypt' => true)); | |
357 $key->addSubKey($subKey); | |
358 | |
359 $this->assertTrue($key->canEncrypt()); | |
360 } | |
361 | |
362 // }}} | |
363 // {{{ test__toString() | |
364 | |
365 /** | |
366 * @group accessors | |
367 */ | |
368 public function test__toString() | |
369 { | |
370 $key = new Crypt_GPG_Key(); | |
371 | |
372 $firstSubKey = new Crypt_GPG_SubKey(array( | |
373 'id' => 'C097D9EC94C06363', | |
374 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_DSA, | |
375 'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
376 'length' => 1024, | |
377 'creation' => 1221785805, | |
378 'expiration' => 0, | |
379 'canSign' => true, | |
380 'canEncrypt' => false, | |
381 'hasPrivate' => true | |
382 )); | |
383 | |
384 $this->assertSame((string) $key, ''); | |
385 | |
386 $key->addSubKey($firstSubKey); | |
387 | |
388 $this->assertSame((string) $key, $firstSubKey->getId()); | |
389 } | |
390 | |
391 // }}} | |
392 | |
393 // mutators | |
394 // {{{ testAddSubKey() | |
395 | |
396 /** | |
397 * @group mutators | |
398 */ | |
399 public function testAddSubKey() | |
400 { | |
401 $key = new Crypt_GPG_Key(); | |
402 | |
403 $subKeys = $key->getSubKeys(); | |
404 $this->assertTrue(is_array($subKeys), | |
405 'Failed to assert returned sub-keys is an array.'); | |
406 | |
407 $this->assertEquals(0, count($subKeys), | |
408 'Failed to assert there are no sub-keys.'); | |
409 | |
410 // add first sub-key | |
411 $firstSubKey = new Crypt_GPG_SubKey(array( | |
412 'id' => 'C097D9EC94C06363', | |
413 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_DSA, | |
414 'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
415 'length' => 1024, | |
416 'creation' => 1221785805, | |
417 'expiration' => 0, | |
418 'canSign' => true, | |
419 'canEncrypt' => false, | |
420 'hasPrivate' => true | |
421 )); | |
422 | |
423 $key->addSubKey($firstSubKey); | |
424 | |
425 $subKeys = $key->getSubKeys(); | |
426 $this->assertTrue(is_array($subKeys), | |
427 'Failed to assert returned sub-keys is an array.'); | |
428 | |
429 $this->assertEquals(1, count($subKeys), | |
430 'Failed to assert number of returned sub-keys is the same as ' . | |
431 'the number of sub-keys added.'); | |
432 | |
433 $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false, | |
434 'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' . | |
435 'objects.'); | |
436 | |
437 $this->assertArrayHasKey(0, $subKeys); | |
438 $this->assertEquals($subKeys[0], $firstSubKey, | |
439 'Failed to assert the first sub-key is the same as the first ' . | |
440 'added sub-key.'); | |
441 | |
442 // add second sub-key | |
443 $secondSubKey = new Crypt_GPG_SubKey(array( | |
444 'id' => '9F93F9116728EF12', | |
445 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC, | |
446 'fingerprint' => 'C9C65B3BBF040E40D0EA27B79F93F9116728EF12', | |
447 'length' => 2048, | |
448 'creation' => 1221785821, | |
449 'expiration' => 0, | |
450 'canSign' => false, | |
451 'canEncrypt' => true, | |
452 'hasPrivate' => true | |
453 )); | |
454 | |
455 $key->addSubKey($secondSubKey); | |
456 | |
457 $subKeys = $key->getSubKeys(); | |
458 $this->assertTrue(is_array($subKeys), | |
459 'Failed to assert returned sub-keys is an array.'); | |
460 | |
461 $this->assertEquals(2, count($subKeys), | |
462 'Failed to assert number of returned sub-keys is the same as ' . | |
463 'the number of sub-keys added.'); | |
464 | |
465 $this->assertContainsOnly('Crypt_GPG_SubKey', $subKeys, false, | |
466 'Failed to assert all returned sub-keys are Crypt_GPG_SubKey ' . | |
467 'objects.'); | |
468 | |
469 $this->assertArrayHasKey(0, $subKeys); | |
470 $this->assertEquals($subKeys[0], $firstSubKey, | |
471 'Failed to assert the first sub-key is the same as the first ' . | |
472 'added sub-key.'); | |
473 | |
474 $this->assertArrayHasKey(1, $subKeys); | |
475 $this->assertEquals($subKeys[1], $secondSubKey, | |
476 'Failed to assert the second sub-key is the same as the second ' . | |
477 'added sub-key.'); | |
478 } | |
479 | |
480 // }}} | |
481 // {{{ testAddUserId() | |
482 | |
483 /** | |
484 * @group mutators | |
485 */ | |
486 public function testAddUserId() | |
487 { | |
488 $key = new Crypt_GPG_Key(); | |
489 | |
490 $userIds = $key->getUserIds(); | |
491 $this->assertTrue(is_array($userIds), | |
492 'Failed to assert returned user ids is an array.'); | |
493 | |
494 $this->assertEquals(0, count($userIds), | |
495 'Failed to assert there are no user ids.'); | |
496 | |
497 // add first user id | |
498 $firstUserId = new Crypt_GPG_UserId(array( | |
499 'name' => 'Alice', | |
500 'comment' => 'shipping', | |
501 'email' => 'alice@example.com' | |
502 )); | |
503 | |
504 $key->addUserId($firstUserId); | |
505 | |
506 $userIds = $key->getUserIds(); | |
507 $this->assertTrue(is_array($userIds), | |
508 'Failed to assert returned user ids is an array.'); | |
509 | |
510 $this->assertEquals(1, count($userIds), | |
511 'Failed to assert number of returned user ids is the same as ' . | |
512 'the number of user ids added.'); | |
513 | |
514 $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false, | |
515 'Failed to assert all returned user ids are Crypt_GPG_UserId ' . | |
516 'objects.'); | |
517 | |
518 $this->assertArrayHasKey(0, $userIds); | |
519 $this->assertEquals($userIds[0], $firstUserId, | |
520 'Failed to assert the first user id is the same as the first ' . | |
521 'added user id.'); | |
522 | |
523 // add second user id | |
524 $secondUserId = new Crypt_GPG_UserId(array( | |
525 'name' => 'Bob', | |
526 'comment' => 'receiving', | |
527 'email' => 'bob@example.com' | |
528 )); | |
529 | |
530 $key->addUserId($secondUserId); | |
531 | |
532 $userIds = $key->getUserIds(); | |
533 $this->assertTrue(is_array($userIds), | |
534 'Failed to assert returned user ids is an array.'); | |
535 | |
536 $this->assertEquals(2, count($userIds), | |
537 'Failed to assert number of returned user ids is the same as ' . | |
538 'the number of user ids added.'); | |
539 | |
540 $this->assertContainsOnly('Crypt_GPG_UserId', $userIds, false, | |
541 'Failed to assert all returned user ids are Crypt_GPG_UserId ' . | |
542 'objects.'); | |
543 | |
544 $this->assertArrayHasKey(0, $userIds); | |
545 $this->assertEquals($userIds[0], $firstUserId, | |
546 'Failed to assert the first user id is the same as the first ' . | |
547 'added user id.'); | |
548 | |
549 $this->assertArrayHasKey(1, $userIds); | |
550 $this->assertEquals($userIds[1], $secondUserId, | |
551 'Failed to assert the second user id is the same as the second ' . | |
552 'added user id.'); | |
553 } | |
554 | |
555 // }}} | |
556 | |
557 // fluent interface | |
558 // {{{ testFluentInterface | |
559 | |
560 /** | |
561 * @group fluent | |
562 */ | |
563 public function testFluentInterface() | |
564 { | |
565 $key = new Crypt_GPG_Key(); | |
566 | |
567 // add first sub-key | |
568 $firstSubKey = new Crypt_GPG_SubKey(array( | |
569 'id' => 'C097D9EC94C06363', | |
570 'algorithm' => Crypt_GPG_SubKey::ALGORITHM_DSA, | |
571 'fingerprint' => '8D2299D9C5C211128B32BBB0C097D9EC94C06363', | |
572 'length' => 1024, | |
573 'creation' => 1221785805, | |
574 'expiration' => 0, | |
575 'canSign' => true, | |
576 'canEncrypt' => false, | |
577 'hasPrivate' => true | |
578 )); | |
579 | |
580 $returnedKey = $key->addSubKey($firstSubKey); | |
581 | |
582 $this->assertEquals( | |
583 $key, | |
584 $returnedKey, | |
585 'Failed asserting fluent interface works for addSubKey() method.' | |
586 ); | |
587 | |
588 $firstUserId = new Crypt_GPG_UserId(array( | |
589 'name' => 'Alice', | |
590 'comment' => 'shipping', | |
591 'email' => 'alice@example.com' | |
592 )); | |
593 | |
594 $returnedKey = $key->addUserId($firstUserId); | |
595 | |
596 $this->assertEquals( | |
597 $key, | |
598 $returnedKey, | |
599 'Failed asserting fluent interface works for addUserId() method.' | |
600 ); | |
601 } | |
602 | |
603 // }}} | |
604 } | |
605 | |
606 ?> |