23
23
24
24
import java .io .IOException ;
25
25
import java .util .Random ;
26
+
26
27
import static org .easymock .EasyMock .expect ;
27
28
28
29
import com .googlecode .junittoolbox .ParallelRunner ;
44
45
*
45
46
* @author <a href="mailto:[email protected] ">Adam Retter</a>
46
47
*/
48
+ @ SuppressWarnings ("OctalInteger" )
47
49
@ RunWith (ParallelRunner .class )
48
50
public class UnixStylePermissionTest {
49
51
@@ -272,7 +274,7 @@ public void validate_cant_write_WhenNotOwner_and_NotInGroup_and_OtherWithoutWrit
272
274
273
275
final Subject mockUser = EasyMock .createMock (Subject .class );
274
276
final int userId = RealmImpl .GUEST_ACCOUNT_ID ;
275
- final int userGroupIds [] = new int [] { RealmImpl .GUEST_GROUP_ID };
277
+ final int [] userGroupIds = new int [] { RealmImpl .GUEST_GROUP_ID };
276
278
277
279
expect (mockUser .hasDbaRole ()).andReturn (hasDbaRole );
278
280
expect (mockUser .getId ()).andReturn (userId );
@@ -360,6 +362,60 @@ public void permission_toString() {
360
362
assertEquals ("rwxr-----" , permission .toString ());
361
363
}
362
364
365
+ private void testSafeSetExecutable (final int inputMode , final int expectedMode ) {
366
+ final int permission = UnixStylePermission .safeSetExecutable (inputMode );
367
+ final String message = Integer .toOctalString (expectedMode ) + "<>" + Integer .toOctalString (permission );
368
+ assertEquals (message , expectedMode , permission );
369
+ }
370
+
371
+ @ Test
372
+ public void permission_safeSetExecutable () {
373
+ testSafeSetExecutable (0100 , 0100 );
374
+ testSafeSetExecutable (0110 , 0110 );
375
+ testSafeSetExecutable (0111 , 0111 );
376
+ testSafeSetExecutable (0200 , 0300 );
377
+ testSafeSetExecutable (0220 , 0330 );
378
+ testSafeSetExecutable (0222 , 0333 );
379
+ testSafeSetExecutable (0300 , 0300 );
380
+ testSafeSetExecutable (0330 , 0330 );
381
+ testSafeSetExecutable (0333 , 0333 );
382
+ testSafeSetExecutable (0444 , 0555 );
383
+ testSafeSetExecutable (0440 , 0550 );
384
+ testSafeSetExecutable (0400 , 0500 );
385
+ testSafeSetExecutable (0555 , 0555 );
386
+ testSafeSetExecutable (0550 , 0550 );
387
+ testSafeSetExecutable (0500 , 0500 );
388
+ testSafeSetExecutable (0600 , 0700 );
389
+ testSafeSetExecutable (0620 , 0730 );
390
+ testSafeSetExecutable (0622 , 0733 );
391
+ testSafeSetExecutable (0621 , 0731 );
392
+ testSafeSetExecutable (0640 , 0750 );
393
+ testSafeSetExecutable (0642 , 0753 );
394
+ testSafeSetExecutable (0644 , 0755 );
395
+ testSafeSetExecutable (0655 , 0755 );
396
+ testSafeSetExecutable (0755 , 0755 );
397
+ testSafeSetExecutable (0777 , 0777 );
398
+ testSafeSetExecutable (0770 , 0770 );
399
+ testSafeSetExecutable (0700 , 0700 );
400
+ testSafeSetExecutable (0070 , 0170 );
401
+ testSafeSetExecutable (0007 , 0107 );
402
+
403
+ testSafeSetExecutable (07777 ,07777 );
404
+ testSafeSetExecutable (04777 , 04777 );
405
+ testSafeSetExecutable (02777 , 02777 );
406
+ testSafeSetExecutable (01777 , 01777 );
407
+
408
+ testSafeSetExecutable (04666 , 04777 );
409
+ testSafeSetExecutable (02666 , 02777 );
410
+
411
+ testSafeSetExecutable (07111 , 07111 );
412
+ testSafeSetExecutable (07000 , 07100 );
413
+ testSafeSetExecutable (04000 , 04100 );
414
+
415
+ testSafeSetExecutable (04100 , 04100 );
416
+ testSafeSetExecutable (02010 , 02110 );
417
+ }
418
+
363
419
@ Test
364
420
public void permission_setFromModeString_existSymbolic () throws SyntaxException , PermissionDeniedException {
365
421
final SecurityManager mockSecurityManager = EasyMock .createMock (SecurityManager .class );
@@ -579,7 +635,7 @@ public void permission_setMode_roundtrip() throws PermissionDeniedException {
579
635
}
580
636
}
581
637
582
- public class TestableUnixStylePermission extends UnixStylePermission {
638
+ static class TestableUnixStylePermission extends UnixStylePermission {
583
639
584
640
public TestableUnixStylePermission (final SecurityManager sm , final int ownerId , final int ownerGroupId , final int mode ) {
585
641
super (sm , ownerId , ownerGroupId , mode );
@@ -594,7 +650,7 @@ public long encodeAsBitVector_testable(final int userId, final int groupId, fina
594
650
}
595
651
}
596
652
597
- public class TestableUnixStylePermissionWithCurrentSubject extends UnixStylePermission {
653
+ static class TestableUnixStylePermissionWithCurrentSubject extends UnixStylePermission {
598
654
599
655
public TestableUnixStylePermissionWithCurrentSubject (final SecurityManager sm , final int ownerId , final int ownerGroupId , final int mode ) {
600
656
super (sm , ownerId , ownerGroupId , mode );
0 commit comments