Mercurial > hg > rc1
comparison vendor/pear/crypt_gpg/tests/EncryptTest.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 * Encryption tests 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 EncryptTestCase | |
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-2008 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 * Tests encryption abilities of Crypt_GPG. | |
50 * | |
51 * @category Encryption | |
52 * @package Crypt_GPG | |
53 * @author Michael Gauthier <mike@silverorange.com> | |
54 * @copyright 2005-2008 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 EncryptTestCase extends Crypt_GPG_TestCase | |
59 { | |
60 public function testHasEncryptKeys() | |
61 { | |
62 $this->assertFalse($this->gpg->hasEncryptKeys()); | |
63 $this->gpg->addEncryptKey('no-passphrase@example.com'); | |
64 $this->assertTrue($this->gpg->hasEncryptKeys()); | |
65 } | |
66 | |
67 // {{{ testEncrypt() | |
68 | |
69 /** | |
70 * @group string | |
71 */ | |
72 public function testEncrypt() | |
73 { | |
74 $data = 'Hello, Alice! Goodbye, Bob!'; | |
75 $keyId = 'first-keypair@example.com'; | |
76 $passphrase = 'test1'; | |
77 | |
78 $this->gpg->addEncryptKey($keyId); | |
79 $encryptedData = $this->gpg->encrypt($data); | |
80 | |
81 $this->gpg->addDecryptKey($keyId, $passphrase); | |
82 $decryptedData = $this->gpg->decrypt($encryptedData); | |
83 | |
84 $this->assertEquals($data, $decryptedData); | |
85 } | |
86 | |
87 // }}} | |
88 // {{{ testEncryptDual() | |
89 | |
90 /** | |
91 * @group string | |
92 */ | |
93 public function testEncryptDual() | |
94 { | |
95 $data = 'Hello, Alice! Goodbye, Bob!'; | |
96 | |
97 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
98 $this->gpg->addEncryptKey('second-keypair@example.com'); | |
99 $encryptedData = $this->gpg->encrypt($data); | |
100 | |
101 // decrypt with first key | |
102 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
103 $decryptedData = $this->gpg->decrypt($encryptedData); | |
104 $this->assertEquals($data, $decryptedData); | |
105 $this->gpg->clearDecryptKeys(); | |
106 | |
107 // decrypt with second key | |
108 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2'); | |
109 $decryptedData = $this->gpg->decrypt($encryptedData); | |
110 $this->gpg->clearDecryptKeys(); | |
111 $this->assertEquals($data, $decryptedData); | |
112 } | |
113 | |
114 // }}} | |
115 // {{{ testEncryptKeyNotFoundException_invalid() | |
116 | |
117 /** | |
118 * @expectedException Crypt_GPG_KeyNotFoundException | |
119 * | |
120 * @group string | |
121 */ | |
122 public function testEncryptNotFoundException_invalid() | |
123 { | |
124 $data = 'Hello, Alice! Goodbye, Bob!'; | |
125 $this->gpg->addEncryptKey('non-existent-key@example.com'); | |
126 $this->gpg->encrypt($data); | |
127 } | |
128 | |
129 // }}} | |
130 // {{{ testEncryptKeyNotFoundException_none() | |
131 | |
132 /** | |
133 * @expectedException Crypt_GPG_KeyNotFoundException | |
134 * | |
135 * @group string | |
136 */ | |
137 public function testEncryptNotFoundException_none() | |
138 { | |
139 $data = 'Hello, Alice! Goodbye, Bob!'; | |
140 $this->gpg->encrypt($data); | |
141 } | |
142 | |
143 // }}} | |
144 // {{{ testEncryptEmpty() | |
145 | |
146 /** | |
147 * @group string | |
148 */ | |
149 public function testEncryptEmpty() | |
150 { | |
151 $data = ''; | |
152 | |
153 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
154 $encryptedData = $this->gpg->encrypt($data); | |
155 | |
156 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
157 $decryptedData = $this->gpg->decrypt($encryptedData); | |
158 | |
159 $this->assertEquals($data, $decryptedData); | |
160 } | |
161 | |
162 // }}} | |
163 | |
164 // file | |
165 // {{{ testEncryptFile() | |
166 | |
167 /** | |
168 * @group file | |
169 */ | |
170 public function testEncryptFile() | |
171 { | |
172 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1'; | |
173 $originalFilename = $this->getDataFilename('testFileMedium.plain'); | |
174 $encryptedFilename = $this->getTempFilename('testEncryptFile.asc'); | |
175 $decryptedFilename = $this->getTempFilename('testEncryptFile.plain'); | |
176 | |
177 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
178 $this->gpg->encryptFile($originalFilename, $encryptedFilename); | |
179 | |
180 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
181 $this->gpg->decryptFile($encryptedFilename, $decryptedFilename); | |
182 | |
183 $md5Sum = $this->getMd5Sum($decryptedFilename); | |
184 $this->assertEquals($expectedMd5Sum, $md5Sum); | |
185 } | |
186 | |
187 // }}} | |
188 // {{{ testEncryptFileDual() | |
189 | |
190 /** | |
191 * @group file | |
192 */ | |
193 public function testEncryptFileDual() | |
194 { | |
195 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1'; | |
196 $originalFilename = $this->getDataFilename('testFileMedium.plain'); | |
197 $encryptedFilename = $this->getTempFilename('testEncryptFile.asc'); | |
198 $decryptedFilename = $this->getTempFilename('testEncryptFile.plain'); | |
199 | |
200 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
201 $this->gpg->addEncryptKey('second-keypair@example.com'); | |
202 $this->gpg->encryptFile($originalFilename, $encryptedFilename); | |
203 | |
204 // decrypt with first key | |
205 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
206 $this->gpg->decryptFile($encryptedFilename, $decryptedFilename); | |
207 $this->gpg->clearDecryptKeys(); | |
208 $md5Sum = $this->getMd5Sum($decryptedFilename); | |
209 $this->assertEquals($expectedMd5Sum, $md5Sum); | |
210 | |
211 // decrypt with second key | |
212 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2'); | |
213 $this->gpg->decryptFile($encryptedFilename, $decryptedFilename); | |
214 $this->gpg->clearDecryptKeys(); | |
215 $md5Sum = $this->getMd5Sum($decryptedFilename); | |
216 $this->assertEquals($expectedMd5Sum, $md5Sum); | |
217 } | |
218 | |
219 // }}} | |
220 // {{{ testEncryptFileToString() | |
221 | |
222 /** | |
223 * @group file | |
224 */ | |
225 public function testEncryptFileToString() | |
226 { | |
227 $expectedData = 'Hello, Alice! Goodbye, Bob!'; | |
228 $originalFilename = $this->getDataFilename('testFileSmall.plain'); | |
229 | |
230 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
231 $encryptedData = $this->gpg->encryptFile($originalFilename); | |
232 | |
233 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
234 $decryptedData = $this->gpg->decrypt($encryptedData); | |
235 | |
236 $this->assertEquals($expectedData, $decryptedData); | |
237 } | |
238 | |
239 // }}} | |
240 // {{{ testEncryptFileFileException_input() | |
241 | |
242 /** | |
243 * @group file | |
244 * | |
245 * @expectedException Crypt_GPG_FileException | |
246 */ | |
247 public function testEncryptFileFileException_input() | |
248 { | |
249 // input file does not exist | |
250 $filename = | |
251 $this->getDataFilename('testEncryptFileFileException_input.plain'); | |
252 | |
253 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
254 $this->gpg->encryptFile($filename); | |
255 } | |
256 | |
257 // }}} | |
258 // {{{ testEncryptFileFileException_output() | |
259 | |
260 /** | |
261 * @group file | |
262 * | |
263 * @expectedException Crypt_GPG_FileException | |
264 */ | |
265 public function testEncryptFileFileException_output() | |
266 { | |
267 // output file does not exist | |
268 $inputFilename = $this->getDataFilename('testFileMedium.plain'); | |
269 $outputFilename = './non-existent' . | |
270 '/testEncryptFileFileException_output.asc'; | |
271 | |
272 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
273 $this->gpg->encryptFile($inputFilename, $outputFilename); | |
274 } | |
275 | |
276 // }}} | |
277 // {{{ testEncryptFileEmpty() | |
278 | |
279 /** | |
280 * @group file | |
281 */ | |
282 public function testEncryptFileEmpty() | |
283 { | |
284 $filename = $this->getDataFilename('testFileEmpty.plain'); | |
285 | |
286 $this->gpg->addEncryptKey('first-keypair@example.com'); | |
287 $encryptedData = $this->gpg->encryptFile($filename); | |
288 | |
289 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1'); | |
290 $decryptedData = $this->gpg->decrypt($encryptedData); | |
291 | |
292 $this->assertEquals('', $decryptedData); | |
293 } | |
294 | |
295 // }}} | |
296 } | |
297 | |
298 ?> |