3
* Gallery - a web based photo album viewer and editor
4
* Copyright (C) 2000-2007 Bharat Mediratta
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or (at
9
* your option) any later version.
11
* This program is distributed in the hope that it will be useful, but
12
* WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
21
GalleryCoreApi::requireOnce('modules/password/classes/PasswordHelper.class');
24
* PasswordOption tests - adding and removing passwords on items and albums.
25
* Also tests PasswordInterface.
29
* @author Alan Harder <alan.harder@sun.com>
30
* @author Jess Martin <jmartin@cs.unc.edu>
31
* @version $Revision: 15513 $
33
class PasswordOptionTest extends ItemEditOptionTestCase {
35
function PasswordOptionTest($methodName) {
36
$this->ItemEditOptionTestCase($methodName, 'password', 'PasswordOption');
42
list ($ret, $this->_coreParams) =
43
GalleryCoreApi::fetchAllPluginParameters('module', 'core');
45
print $ret->getAsHtml();
46
return $this->failWithStatus($ret);
48
list ($ret, $this->_topAlbum, $this->_topItems) =
49
$this->_createSubAlbumWithItems($this->_getRootId(), true);
51
print $ret->getAsHtml();
52
return $this->failWithStatus($ret);
54
$this->_markForCleanup($this->_topAlbum);
56
list ($ret, $this->_subAlbum, $this->_subItems) =
57
$this->_createSubAlbumWithItems($this->_topAlbum->getId());
59
print $ret->getAsHtml();
60
return $this->failWithStatus($ret);
63
list ($ret, $this->_hidden) = GalleryCoreApi::newFactoryInstance('HiddenInterface_1_0');
65
print $ret->getAsHtml();
66
return $this->failWithStatus($ret);
70
function _createSubAlbumWithItems($parentId, $top=false) {
71
list ($ret, $album) = $this->_createRandomAlbum($parentId);
73
return array($ret, null, null);
77
/* Setup permissions */
78
$albumId = $album->getId();
79
$ret = GalleryCoreApi::removeItemPermissions($albumId);
81
return array($ret, null, null);
83
$ret = GalleryCoreApi::addGroupPermission(
84
$albumId, $this->_coreParams['id.adminGroup'], 'core.all');
86
return array($ret, null, null);
88
$ret = GalleryCoreApi::addUserPermission(
89
$albumId, $this->_coreParams['id.anonymousUser'], 'core.edit');
91
return array($ret, null, null);
93
$ret = GalleryCoreApi::addUserPermission(
94
$albumId, $this->_coreParams['id.anonymousUser'], 'core.changePermissions');
96
return array($ret, null, null);
98
$ret = GalleryCoreApi::addGroupPermission(
99
$albumId, $this->_coreParams['id.everybodyGroup'], 'core.viewAll');
101
return array($ret, null, null);
104
/* No public viewSource permission in subalbum */
105
$ret = GalleryCoreApi::removeGroupPermission(
106
$album->getId(), $this->_coreParams['id.everybodyGroup'], 'core.viewSource');
108
return array($ret, null, null);
113
for ($i = 0; $i < 3; $i++) {
114
list ($ret, $items[$i]) = $this->_createRandomDataItem($album->getId());
116
return array($ret, null, null);
120
return array(null, $album, $items);
123
function _fetchViewPermissions($itemId) {
124
list ($ret, $permissions) = GalleryCoreApi::fetchAllPermissionsForItem($itemId, true);
126
$this->failWithStatus($ret);
129
foreach ($permissions as $permission) {
130
if (strncmp($permission['permission'], 'core.view', 9)) {
133
if (isset($permission['entityId'])) {
134
$result['entity-' . $permission['entityId']][] = $permission['permission'];
135
} else if (isset($permission['userId'])) {
136
$result['user-' . $permission['userId']][] = $permission['permission'];
137
} else if (isset($permission['groupId']) &&
138
$permission['groupId'] != $this->_coreParams['id.adminGroup']) {
139
$result['group-' . $permission['groupId']][] = $permission['permission'];
143
foreach (array_keys($result) as $key) {
149
function _assertPassword(&$item, $protectedBy, $messagePrefix,
150
$viewSource=true, $parentProtect=0, $hidden=0, $password=null) {
151
list ($ret, $item) = $item->refresh();
155
$itemId = $item->getId();
156
$everybodyId = 'group-' . $this->_coreParams['id.everybodyGroup'];
158
GalleryCoreApi::getPluginParameter('module', 'password', 'password', $itemId);
162
$this->assertEquals($itemId == $protectedBy, !empty($hash),
163
$messagePrefix . ' has password');
165
$this->assert(GalleryUtilities::isCorrectPassword($password, $hash), 'hashed password');
167
$this->assertEquals($itemId == $protectedBy,
168
$item->hasOnLoadHandler('Password'), $messagePrefix . ' onLoadHander');
170
$result = $this->_fetchViewPermissions($itemId);
172
if ($parentProtect) {
173
$expected['entity-' . $parentProtect] = array('core.view');
175
$expected[ $protectedBy ? 'entity-' . $protectedBy : $everybodyId ] =
176
$viewSource ? ($hidden ? array('core.viewResizes', 'core.viewSource')
177
: array('core.viewAll'))
178
: ($hidden ? array('core.viewResizes')
179
: array('core.view', 'core.viewResizes'));
180
if ($itemId == $protectedBy && !$parentProtect) {
181
$expected[$everybodyId] = array('core.view');
183
$this->assertEquals($expected, $result, $messagePrefix . ' permissions');
186
function _moveItem(&$item, $newParentId) {
187
list ($ret, $lockIds[]) = GalleryCoreApi::acquireWriteLock($item->getId());
191
list ($ret, $lockIds[]) =
192
GalleryCoreApi::acquireReadLock(array($item->getParentId(), $newParentId));
196
$ret = $item->move($newParentId);
198
GalleryCoreApi::releaseLocks($lockIds);
201
$ret = $item->save();
203
GalleryCoreApi::releaseLocks($lockIds);
206
$ret = GalleryCoreApi::releaseLocks($lockIds);
214
function testPasswordMismatch() {
215
$form['PasswordOption']['password1'] = 'abc';
216
$form['PasswordOption']['password2'] = 'abd';
217
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1]);
218
$this->assertEquals(array(array('form[error][PasswordOption][mismatch]'), array()),
221
$ret = $this->_assertPassword($this->_topItems[1], false, 'item:');
223
return $this->failWithStatus($ret);
227
function testPasswordItem() {
228
GalleryUtilities::putRequestVariable('form[PasswordOption][password1]', 'abc');
229
GalleryUtilities::putRequestVariable('form[PasswordOption][password2]', 'abc');
230
$form = GalleryUtilities::getFormVariables('form');
231
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1]);
232
$this->assertEquals(array(array(), array()), $result);
234
$ret = $this->_assertPassword($this->_topItems[1], $this->_topItems[1]->getId(),
237
return $this->failWithStatus($ret);
240
$result = $this->_handleRequestAfterEdit($form, $this->_subItems[1]);
241
$this->assertEquals(array(array(), array()), $result);
243
$ret = $this->_assertPassword($this->_subItems[1], $this->_subItems[1]->getId(),
244
'viewResizes item:', false, 0, 0, 'abc');
246
return $this->failWithStatus($ret);
249
GalleryDataCache::reset();
250
$form['PasswordOption'] = array('remove' => 1);
251
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1]);
252
$this->assertEquals(array(array(), array()), $result);
254
$ret = $this->_assertPassword($this->_topItems[1], false, 'unpw viewSource:');
256
return $this->failWithStatus($ret);
259
$result = $this->_handleRequestAfterEdit($form, $this->_subItems[1]);
260
$this->assertEquals(array(array(), array()), $result);
262
$ret = $this->_assertPassword($this->_subItems[1], false, 'unpw viewResizes:', false);
264
return $this->failWithStatus($ret);
268
function testPermission() {
269
$ret = GalleryCoreApi::removeUserPermission($this->_topItems[1]->getId(),
270
$this->_coreParams['id.anonymousUser'], 'core.changePermissions');
272
return $this->failWithStatus($ret);
275
$this->_becomeGuestUser();
277
/* Permissions ok for topItems[0] */
278
$form['PasswordOption']['password1'] = $form['PasswordOption']['password2'] = 'abc';
279
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[0]);
280
$this->assertEquals(array(array(), array()), $result);
282
$ret = $this->_assertPassword($this->_topItems[0], $this->_topItems[0]->getId(), 'item0:');
284
return $this->failWithStatus($ret);
287
/* No core.changePermissions permission for topItems[1] */
288
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1],
289
ERROR_PERMISSION_DENIED);
291
$ret = $this->_assertPassword($this->_topItems[1], false, 'item1:');
293
return $this->failWithStatus($ret);
297
function testPasswordAlbum() {
299
$mockAdapter = new MockTemplateAdapter();
300
$gallery->_templateAdapter =& $mockAdapter;
302
$albumId = $this->_topAlbum->getId();
303
GalleryUtilities::putRequestVariable('form[PasswordOption][password1]', 'ab"d>');
304
GalleryUtilities::putRequestVariable('form[PasswordOption][password2]', 'ab"d>');
305
$form = GalleryUtilities::getFormVariables('form');
306
$result = $this->_handleRequestAfterEdit($form, $this->_topAlbum);
307
$this->assertEquals(array(array(), array()), $result);
309
$ret = $this->_assertPassword($this->_topAlbum, $albumId, 'pw album:', true, 0, 0, 'ab"d>');
311
return $this->failWithStatus($ret);
313
$ret = $this->_assertPassword($this->_subAlbum, $albumId, 'pw subalbum:', false);
315
return $this->failWithStatus($ret);
317
for ($i = 0; $i < 3; $i++) {
318
$ret = $this->_assertPassword($this->_topItems[$i], $albumId, "pw item$i:");
320
return $this->failWithStatus($ret);
322
$ret = $this->_assertPassword($this->_subItems[$i], $albumId, "pw subitem$i:", false);
324
return $this->failWithStatus($ret);
327
$progress = $mockAdapter->getProgressBarDump();
328
$this->assert(count($progress) > 3, 'progress bar: ' . print_r($progress, true));
329
$mockAdapter = new MockTemplateAdapter();
330
$gallery->_templateAdapter =& $mockAdapter;
332
GalleryDataCache::reset();
333
$form['PasswordOption']['remove'] = 1;
334
$result = $this->_handleRequestAfterEdit($form, $this->_topAlbum);
335
$this->assertEquals(array(array(), array()), $result);
337
$ret = $this->_assertPassword($this->_topAlbum, false, 'unpw album:');
339
return $this->failWithStatus($ret);
341
$ret = $this->_assertPassword($this->_subAlbum, false, 'unpw subalbum:', false);
343
return $this->failWithStatus($ret);
345
for ($i = 0; $i < 3; $i++) {
346
$ret = $this->_assertPassword($this->_topItems[$i], false, "unpw item$i:");
348
return $this->failWithStatus($ret);
350
$ret = $this->_assertPassword($this->_subItems[$i], false, "unpw subitem$i:", false);
352
return $this->failWithStatus($ret);
355
$progress = $mockAdapter->getProgressBarDump();
356
$this->assert(count($progress) > 3, 'progress bar: ' . print_r($progress, true));
359
function testPasswordAlbumWithPasswordItem() {
361
$mockAdapter = new MockTemplateAdapter();
362
$gallery->_templateAdapter =& $mockAdapter;
364
$ret = PasswordHelper::setPassword($this->_subItems[0], 'abc');
366
return $this->failWithStatus($ret);
368
GalleryDataCache::reset();
369
$ret = $this->_assertPassword($this->_subItems[0], $this->_subItems[0]->getId(),
372
return $this->failWithStatus($ret);
375
$form['PasswordOption']['password1'] = $form['PasswordOption']['password2'] = 'xyz';
376
$result = $this->_handleRequestAfterEdit($form, $this->_subAlbum);
377
$this->assertEquals(array(array(), array()), $result);
379
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(),
382
return $this->failWithStatus($ret);
384
for ($i = 0; $i < 3; $i++) {
385
$ret = $this->_assertPassword($this->_subItems[$i],
386
$i ? $this->_subAlbum->getId() : $this->_subItems[0]->getId(),
387
"pw item$i:", false, $i ? 0 : $this->_subAlbum->getId());
389
return $this->failWithStatus($ret);
393
GalleryDataCache::reset();
394
$form['PasswordOption']['remove'] = 1;
395
$result = $this->_handleRequestAfterEdit($form, $this->_subAlbum);
396
$this->assertEquals(array(array(), array()), $result);
398
$ret = $this->_assertPassword($this->_subAlbum, false, 'unpw album:', false);
400
return $this->failWithStatus($ret);
402
for ($i = 0; $i < 3; $i++) {
403
$ret = $this->_assertPassword($this->_subItems[$i],
404
$i ? false : $this->_subItems[0]->getId(), "item$i:", false);
406
return $this->failWithStatus($ret);
411
function testPasswordAlbumWithPasswordAlbum() {
413
$mockAdapter = new MockTemplateAdapter();
414
$gallery->_templateAdapter =& $mockAdapter;
416
$ret = PasswordHelper::setPassword($this->_subAlbum, 'abc');
418
return $this->failWithStatus($ret);
420
GalleryDataCache::reset();
421
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'setup:', false);
423
return $this->failWithStatus($ret);
426
$form['PasswordOption']['password1'] = $form['PasswordOption']['password2'] = '123';
427
$result = $this->_handleRequestAfterEdit($form, $this->_topAlbum);
428
$this->assertEquals(array(array(), array()), $result);
430
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'pw album:');
432
return $this->failWithStatus($ret);
434
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(),
435
'pw subalbum:', false, $this->_topAlbum->getId());
437
return $this->failWithStatus($ret);
439
for ($i = 0; $i < 3; $i++) {
440
$ret = $this->_assertPassword($this->_topItems[$i], $this->_topAlbum->getId(),
443
return $this->failWithStatus($ret);
445
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
446
"pw subitem$i:", false);
448
return $this->failWithStatus($ret);
452
GalleryDataCache::reset();
453
$form['PasswordOption']['remove'] = 1;
454
$result = $this->_handleRequestAfterEdit($form, $this->_topAlbum);
455
$this->assertEquals(array(array(), array()), $result);
457
$ret = $this->_assertPassword($this->_topAlbum, false, 'unpw album:');
459
return $this->failWithStatus($ret);
461
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(),
464
return $this->failWithStatus($ret);
466
for ($i = 0; $i < 3; $i++) {
467
$ret = $this->_assertPassword($this->_topItems[$i], false, "unpw item$i:");
469
return $this->failWithStatus($ret);
471
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
472
"subitem$i:", false);
474
return $this->failWithStatus($ret);
479
function testPasswordItemInPasswordAlbum() {
480
$ret = PasswordHelper::setPassword($this->_topAlbum, 'abc');
482
return $this->failWithStatus($ret);
484
GalleryDataCache::reset();
485
$ret = $this->_assertPassword($this->_topItems[1], $this->_topAlbum->getId(), 'setup:');
487
return $this->failWithStatus($ret);
490
$form['PasswordOption']['password1'] = $form['PasswordOption']['password2'] = 'ab!';
491
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1]);
492
$this->assertEquals(array(array(), array()), $result);
494
$ret = $this->_assertPassword($this->_topItems[1], $this->_topItems[1]->getId(),
495
'item:', true, $this->_topAlbum->getId());
497
return $this->failWithStatus($ret);
500
GalleryDataCache::reset();
501
$form = array('PasswordOption' => array('remove' => 1));
502
$result = $this->_handleRequestAfterEdit($form, $this->_topItems[1]);
503
$this->assertEquals(array(array(), array()), $result);
505
$ret = $this->_assertPassword($this->_topItems[1], $this->_topAlbum->getId(), 'unpw:');
507
return $this->failWithStatus($ret);
511
function testPasswordAlbumInPasswordAlbum() {
513
$mockAdapter = new MockTemplateAdapter();
514
$gallery->_templateAdapter =& $mockAdapter;
516
$ret = PasswordHelper::setPassword($this->_topAlbum, 'abc');
518
return $this->failWithStatus($ret);
520
GalleryDataCache::reset();
521
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(), 'setup:', false);
523
return $this->failWithStatus($ret);
526
$form['PasswordOption']['password1'] = $form['PasswordOption']['password2'] = '123';
527
$result = $this->_handleRequestAfterEdit($form, $this->_subAlbum);
528
$this->assertEquals(array(array(), array()), $result);
530
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'pw album:');
532
return $this->failWithStatus($ret);
534
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'pw subalbum:',
535
false, $this->_topAlbum->getId());
537
return $this->failWithStatus($ret);
539
for ($i = 0; $i < 3; $i++) {
540
$ret = $this->_assertPassword($this->_topItems[$i], $this->_topAlbum->getId(),
543
return $this->failWithStatus($ret);
545
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
546
"pw subitem$i:", false);
548
return $this->failWithStatus($ret);
552
GalleryDataCache::reset();
553
$form['PasswordOption']['remove'] = 1;
554
$result = $this->_handleRequestAfterEdit($form, $this->_subAlbum);
555
$this->assertEquals(array(array(), array()), $result);
557
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'unpw album:');
559
return $this->failWithStatus($ret);
561
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(),
562
'unpw subalbum:', false);
564
return $this->failWithStatus($ret);
566
for ($i = 0; $i < 3; $i++) {
567
$ret = $this->_assertPassword($this->_topItems[$i], $this->_topAlbum->getId(),
570
return $this->failWithStatus($ret);
572
$ret = $this->_assertPassword($this->_subItems[$i], $this->_topAlbum->getId(),
573
"unpw subitem$i:", false);
575
return $this->failWithStatus($ret);
580
function testAddItemToPasswordAlbum() {
581
$ret = PasswordHelper::setPassword($this->_topAlbum, '123');
583
return $this->failWithStatus($ret);
585
GalleryDataCache::reset();
586
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'setup:');
588
return $this->failWithStatus($ret);
591
list ($ret, $item) = $this->_createRandomDataItem($this->_topAlbum->getId());
593
return $this->failWithStatus($ret);
595
$ret = $this->_assertPassword($item, $this->_topAlbum->getId(), 'item:');
597
return $this->failWithStatus($ret);
600
list ($ret, $item) = $this->_createRandomDataItem($this->_subAlbum->getId());
602
return $this->failWithStatus($ret);
604
$ret = $this->_assertPassword($item, $this->_topAlbum->getId(), 'deep item:', false);
606
return $this->failWithStatus($ret);
610
function testMoveItemIntoPasswordAlbum() {
611
$ret = PasswordHelper::setPassword($this->_subAlbum, 'p{|w');
613
return $this->failWithStatus($ret);
615
GalleryDataCache::reset();
616
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'setup:', false);
618
return $this->failWithStatus($ret);
621
$ret = $this->_moveItem($this->_topItems[2], $this->_subAlbum->getId());
623
return $this->failWithStatus($ret);
626
$ret = $this->_assertPassword($this->_topItems[2], $this->_subAlbum->getId(), 'item:');
628
return $this->failWithStatus($ret);
632
function testMoveItemDeepIntoPasswordAlbum() {
633
list ($ret, $album) = $this->_createRandomAlbum($this->_subAlbum->getId());
635
return $this->failWithStatus($ret);
637
$ret = GalleryCoreApi::addGroupPermission(
638
$album->getId(), $this->_coreParams['id.everybodyGroup'], 'core.viewSource');
640
return $this->failWithStatus($ret);
642
list ($ret, $subAlbum) = $this->_createRandomAlbum($album->getId());
644
return $this->failWithStatus($ret);
646
$ret = PasswordHelper::setPassword($this->_subAlbum, '(*)');
648
return $this->failWithStatus($ret);
650
GalleryDataCache::reset();
651
$ret = $this->_assertPassword($subAlbum, $this->_subAlbum->getId(), 'setup:');
653
return $this->failWithStatus($ret);
656
$ret = $this->_moveItem($this->_topItems[2], $subAlbum->getId());
658
return $this->failWithStatus($ret);
661
$ret = $this->_assertPassword($this->_topItems[2], $this->_subAlbum->getId(), 'item:');
663
return $this->failWithStatus($ret);
667
function testMoveItemOutOfPasswordAlbum() {
668
$ret = PasswordHelper::setPassword($this->_subAlbum, '%^&#');
670
return $this->failWithStatus($ret);
672
GalleryDataCache::reset();
673
$ret = $this->_assertPassword($this->_subItems[2], $this->_subAlbum->getId(),
676
return $this->failWithStatus($ret);
679
$ret = $this->_moveItem($this->_subItems[2], $this->_topAlbum->getId());
681
return $this->failWithStatus($ret);
684
$ret = $this->_assertPassword($this->_subItems[2], false, 'item:', false);
686
return $this->failWithStatus($ret);
690
function testMoveItemBetweenPasswordAlbums() {
691
list ($ret, $album) = $this->_createRandomAlbum($this->_topAlbum->getId());
693
return $this->failWithStatus($ret);
695
$ret = PasswordHelper::setPassword($album, 'abc');
697
return $this->failWithStatus($ret);
699
$ret = PasswordHelper::setPassword($this->_subAlbum, '123');
701
return $this->failWithStatus($ret);
703
GalleryDataCache::reset();
704
$ret = $this->_assertPassword($this->_subItems[2], $this->_subAlbum->getId(),
707
return $this->failWithStatus($ret);
710
$ret = $this->_moveItem($this->_subItems[2], $album->getId());
712
return $this->failWithStatus($ret);
715
$ret = $this->_assertPassword($this->_subItems[2], $album->getId(), 'item:', false);
717
return $this->failWithStatus($ret);
721
function testMoveAlbumIntoPasswordAlbum() {
722
list ($ret, $album) = $this->_createRandomAlbum($this->_topAlbum->getId());
724
return $this->failWithStatus($ret);
726
$ret = PasswordHelper::setPassword($album, 'abc');
728
return $this->failWithStatus($ret);
730
GalleryDataCache::reset();
731
$ret = $this->_assertPassword($album, $album->getId(), 'setup:');
733
return $this->failWithStatus($ret);
736
$ret = $this->_moveItem($this->_subAlbum, $album->getId());
738
return $this->failWithStatus($ret);
741
$ret = $this->_assertPassword($this->_subAlbum, $album->getId(), 'album:', false);
743
return $this->failWithStatus($ret);
745
for ($i = 0; $i < 3; $i++) {
746
$ret = $this->_assertPassword($this->_subItems[$i], $album->getId(), "item$i:", false);
748
return $this->failWithStatus($ret);
753
function testMoveAlbumOutOfPasswordAlbum() {
754
list ($ret, $album) = $this->_createRandomAlbum($this->_getRootId());
756
return $this->failWithStatus($ret);
758
$this->_markForCleanup($album);
759
$ret = PasswordHelper::setPassword($this->_topAlbum, '123');
761
return $this->failWithStatus($ret);
763
GalleryDataCache::reset();
764
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(), 'setup:', false);
766
return $this->failWithStatus($ret);
769
$ret = $this->_moveItem($this->_subAlbum, $album->getId());
771
return $this->failWithStatus($ret);
774
$ret = $this->_assertPassword($this->_subAlbum, false, 'album:', false);
776
return $this->failWithStatus($ret);
778
for ($i = 0; $i < 3; $i++) {
779
$ret = $this->_assertPassword($this->_subItems[$i], false, "item$i:", false);
781
return $this->failWithStatus($ret);
786
function testMoveAlbumBetweenPasswordAlbums() {
787
list ($ret, $album) = $this->_createRandomAlbum($this->_getRootId());
789
return $this->failWithStatus($ret);
791
$this->_markForCleanup($album);
792
$ret = PasswordHelper::setPassword($album, 'abc');
794
return $this->failWithStatus($ret);
796
$ret = PasswordHelper::setPassword($this->_topAlbum, '123');
798
return $this->failWithStatus($ret);
800
GalleryDataCache::reset();
801
$ret = $this->_assertPassword($this->_subItems[1], $this->_topAlbum->getId(),
804
return $this->failWithStatus($ret);
807
$ret = $this->_moveItem($this->_subAlbum, $album->getId());
809
return $this->failWithStatus($ret);
812
$ret = $this->_assertPassword($this->_subAlbum, $album->getId(), 'album:', false);
814
return $this->failWithStatus($ret);
816
for ($i = 0; $i < 3; $i++) {
817
$ret = $this->_assertPassword($this->_subItems[$i], $album->getId(), "item$i:", false);
819
return $this->failWithStatus($ret);
824
function testMovePasswordItemIntoPasswordAlbum() {
825
$ret = PasswordHelper::setPassword($this->_topItems[1], 'abc');
827
return $this->failWithStatus($ret);
829
$ret = PasswordHelper::setPassword($this->_subAlbum, '123');
831
return $this->failWithStatus($ret);
833
GalleryDataCache::reset();
835
$ret = $this->_moveItem($this->_topItems[1], $this->_subAlbum->getId());
837
return $this->failWithStatus($ret);
840
$ret = $this->_assertPassword($this->_topItems[1], $this->_topItems[1]->getId(), 'item:',
841
true, $this->_subAlbum->getId());
843
return $this->failWithStatus($ret);
847
function testMovePasswordAlbumIntoPasswordAlbum() {
848
list ($ret, $album) = $this->_createRandomAlbum($this->_getRootId());
850
return $this->failWithStatus($ret);
852
$this->_markForCleanup($album);
853
$ret = PasswordHelper::setPassword($album, 'abc');
855
return $this->failWithStatus($ret);
857
$ret = PasswordHelper::setPassword($this->_subAlbum, '123');
859
return $this->failWithStatus($ret);
861
GalleryDataCache::reset();
862
$ret = $this->_assertPassword($this->_subItems[1], $this->_subAlbum->getId(),
865
return $this->failWithStatus($ret);
868
$ret = $this->_moveItem($this->_subAlbum, $album->getId());
870
return $this->failWithStatus($ret);
873
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'album:',
874
false, $album->getId());
876
return $this->failWithStatus($ret);
878
for ($i = 0; $i < 3; $i++) {
879
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
882
return $this->failWithStatus($ret);
887
function testPasswordInterface() {
888
list ($ret, $interface) = GalleryCoreApi::newFactoryInstance('PasswordInterface_1_0');
890
return $this->failWithStatus($ret);
892
if (isset($interface)) {
893
$ret = $interface->setPassword($this->_topItems[1], '@abc123');
895
return $this->failWithStatus($ret);
897
$ret = $this->_assertPassword($this->_topItems[1], $this->_topItems[1]->getId(),
900
return $this->failWithStatus($ret);
902
list ($ret, $hasPassword) = $interface->hasPassword($this->_topItems[1]);
904
return $this->failWithStatus($ret);
906
$this->assert($hasPassword, 'hasPassword item');
907
list ($ret, $hasPassword) = $interface->hasPassword($this->_topItems[2]);
909
return $this->failWithStatus($ret);
911
$this->assert(!$hasPassword, 'hasPassword other item');
912
$ret = $interface->setPassword($this->_subAlbum, ')=pw=(');
914
return $this->failWithStatus($ret);
916
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(),
919
return $this->failWithStatus($ret);
921
list ($ret, $hasPassword) = $interface->hasPassword($this->_subAlbum);
923
return $this->failWithStatus($ret);
925
$this->assert($hasPassword, 'hasPassword album');
926
$ret = $interface->removePassword($this->_topItems[1]);
928
return $this->failWithStatus($ret);
930
list ($ret, $hasPassword) = $interface->hasPassword($this->_topItems[1]);
932
return $this->failWithStatus($ret);
934
$this->assert(!$hasPassword, 'hasPassword after remove');
936
$this->assert(false, 'failed to create factory instance');
940
/*** Test interactions with Hidden items ***/
942
function testHideAlbumWithPasswordAlbum() {
943
if (!isset($this->_hidden)) {
944
/* Hidden module not active; skip test */
947
$ret = PasswordHelper::setPassword($this->_subAlbum, 'abc');
949
return $this->failWithStatus($ret);
951
GalleryDataCache::reset();
952
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'setup:', false);
954
return $this->failWithStatus($ret);
957
$ret = $this->_hidden->hideItem($this->_topAlbum);
959
return $this->failWithStatus($ret);
962
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'album:',
963
false, $this->_topAlbum->getId());
965
return $this->failWithStatus($ret);
967
for ($i = 0; $i < 3; $i++) {
968
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
971
return $this->failWithStatus($ret);
975
GalleryDataCache::reset();
976
$ret = $this->_hidden->unHideItem($this->_topAlbum);
978
return $this->failWithStatus($ret);
981
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'un album:',
984
return $this->failWithStatus($ret);
986
for ($i = 0; $i < 3; $i++) {
987
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
988
"un item$i:", false);
990
return $this->failWithStatus($ret);
995
function testPasswordAlbumInHiddenAlbum() {
996
if (!isset($this->_hidden)) {
997
/* Hidden module not active; skip test */
1000
$ret = $this->_hidden->hideItem($this->_topAlbum);
1002
return $this->failWithStatus($ret);
1004
GalleryDataCache::reset();
1005
$permissions[] = $this->_fetchViewPermissions($this->_subAlbum->getId());
1006
for ($i = 0; $i < 3; $i++) {
1007
$permissions[] = $this->_fetchViewPermissions($this->_subItems[$i]->getId());
1010
$ret = PasswordHelper::setPassword($this->_subAlbum, 'abc');
1012
return $this->failWithStatus($ret);
1014
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'album:',
1015
false, $this->_topAlbum->getId());
1017
return $this->failWithStatus($ret);
1019
for ($i = 0; $i < 3; $i++) {
1020
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
1023
return $this->failWithStatus($ret);
1027
GalleryDataCache::reset();
1028
$ret = PasswordHelper::removePassword($this->_subAlbum);
1030
return $this->failWithStatus($ret);
1032
$this->assertEquals($permissions[0],
1033
$this->_fetchViewPermissions($this->_subAlbum->getId()), 'unpw album');
1034
for ($i = 0; $i < 3; $i++) {
1035
$this->assertEquals($permissions[$i+1],
1036
$this->_fetchViewPermissions($this->_subItems[$i]->getId()),
1041
function testPasswordAlbumWithHiddenAlbum() {
1042
if (!isset($this->_hidden)) {
1043
/* Hidden module not active; skip test */
1046
$ret = $this->_hidden->hideItem($this->_subAlbum);
1048
return $this->failWithStatus($ret);
1050
GalleryDataCache::reset();
1051
$permissions[] = $this->_fetchViewPermissions($this->_subAlbum->getId());
1052
for ($i = 0; $i < 3; $i++) {
1053
$permissions[] = $this->_fetchViewPermissions($this->_subItems[$i]->getId());
1056
$ret = PasswordHelper::setPassword($this->_topAlbum, 'abc');
1058
return $this->failWithStatus($ret);
1060
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(), 'album:',
1061
false, $this->_subAlbum->getId(), true);
1063
return $this->failWithStatus($ret);
1065
for ($i = 0; $i < 3; $i++) {
1066
$ret = $this->_assertPassword($this->_subItems[$i], $this->_topAlbum->getId(),
1067
"item$i:", false, $this->_subAlbum->getId(), true);
1069
return $this->failWithStatus($ret);
1073
GalleryDataCache::reset();
1074
$ret = PasswordHelper::removePassword($this->_topAlbum);
1076
return $this->failWithStatus($ret);
1078
$this->assertEquals($permissions[0],
1079
$this->_fetchViewPermissions($this->_subAlbum->getId()), 'unpw album');
1080
for ($i = 0; $i < 3; $i++) {
1081
$this->assertEquals($permissions[$i+1],
1082
$this->_fetchViewPermissions($this->_subItems[$i]->getId()),
1087
function testHideAlbumInPasswordAlbum() {
1088
if (!isset($this->_hidden)) {
1089
/* Hidden module not active; skip test */
1092
$ret = PasswordHelper::setPassword($this->_topAlbum, 'abc');
1094
return $this->failWithStatus($ret);
1096
GalleryDataCache::reset();
1097
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(), 'setup:', false);
1099
return $this->failWithStatus($ret);
1102
$ret = $this->_hidden->hideItem($this->_subAlbum);
1104
return $this->failWithStatus($ret);
1106
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(), 'album:',
1107
false, $this->_subAlbum->getId(), true);
1109
return $this->failWithStatus($ret);
1111
for ($i = 0; $i < 3; $i++) {
1112
$ret = $this->_assertPassword($this->_subItems[$i], $this->_topAlbum->getId(),
1113
"item$i:", false, $this->_subAlbum->getId(), true);
1115
return $this->failWithStatus($ret);
1119
GalleryDataCache::reset();
1120
$ret = $this->_hidden->unHideItem($this->_subAlbum);
1122
return $this->failWithStatus($ret);
1124
$ret = $this->_assertPassword($this->_subAlbum, $this->_topAlbum->getId(),
1125
'un album:', false);
1127
return $this->failWithStatus($ret);
1129
for ($i = 0; $i < 3; $i++) {
1130
$ret = $this->_assertPassword($this->_subItems[$i], $this->_topAlbum->getId(),
1131
"un item$i:", false);
1133
return $this->failWithStatus($ret);
1138
function testHidePasswordAlbum() {
1139
if (!isset($this->_hidden)) {
1140
/* Hidden module not active; skip test */
1143
$ret = PasswordHelper::setPassword($this->_topAlbum, 'abc');
1145
return $this->failWithStatus($ret);
1147
GalleryDataCache::reset();
1148
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'setup:');
1150
return $this->failWithStatus($ret);
1153
$ret = $this->_hidden->hideItem($this->_topAlbum);
1155
return $this->failWithStatus($ret);
1157
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'album:',
1158
true, $this->_topAlbum->getId());
1160
return $this->failWithStatus($ret);
1162
for ($i = 0; $i < 3; $i++) {
1163
$ret = $this->_assertPassword($this->_topItems[$i], $this->_topAlbum->getId(),
1166
return $this->failWithStatus($ret);
1170
GalleryDataCache::reset();
1171
$ret = $this->_hidden->unHideItem($this->_topAlbum);
1173
return $this->failWithStatus($ret);
1175
$ret = $this->_assertPassword($this->_topAlbum, $this->_topAlbum->getId(), 'un album:');
1177
return $this->failWithStatus($ret);
1179
for ($i = 0; $i < 3; $i++) {
1180
$ret = $this->_assertPassword($this->_topItems[$i], $this->_topAlbum->getId(),
1183
return $this->failWithStatus($ret);
1188
function testPasswordHiddenAlbum() {
1189
if (!isset($this->_hidden)) {
1190
/* Hidden module not active; skip test */
1193
$ret = $this->_hidden->hideItem($this->_subAlbum);
1195
return $this->failWithStatus($ret);
1197
GalleryDataCache::reset();
1198
$permissions[] = $this->_fetchViewPermissions($this->_subAlbum->getId());
1199
for ($i = 0; $i < 3; $i++) {
1200
$permissions[] = $this->_fetchViewPermissions($this->_subItems[$i]->getId());
1203
$ret = PasswordHelper::setPassword($this->_subAlbum, 'abc');
1205
return $this->failWithStatus($ret);
1207
$ret = $this->_assertPassword($this->_subAlbum, $this->_subAlbum->getId(), 'album:',
1208
false, $this->_subAlbum->getId());
1210
return $this->failWithStatus($ret);
1212
for ($i = 0; $i < 3; $i++) {
1213
$ret = $this->_assertPassword($this->_subItems[$i], $this->_subAlbum->getId(),
1216
return $this->failWithStatus($ret);
1220
GalleryDataCache::reset();
1221
$ret = PasswordHelper::removePassword($this->_subAlbum);
1223
return $this->failWithStatus($ret);
1225
$this->assertEquals($permissions[0],
1226
$this->_fetchViewPermissions($this->_subAlbum->getId()), 'unpw album');
1227
for ($i = 0; $i < 3; $i++) {
1228
$this->assertEquals($permissions[$i+1],
1229
$this->_fetchViewPermissions($this->_subItems[$i]->getId()),