Skip to content

Commit cc94a45

Browse files
committed
[test] unit test UnixStylePermission.safeSetExecutable
1 parent d41268f commit cc94a45

File tree

1 file changed

+59
-3
lines changed

1 file changed

+59
-3
lines changed

exist-core/src/test/java/org/exist/security/UnixStylePermissionTest.java

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import java.io.IOException;
2525
import java.util.Random;
26+
2627
import static org.easymock.EasyMock.expect;
2728

2829
import com.googlecode.junittoolbox.ParallelRunner;
@@ -44,6 +45,7 @@
4445
*
4546
* @author <a href="mailto:[email protected]">Adam Retter</a>
4647
*/
48+
@SuppressWarnings("OctalInteger")
4749
@RunWith(ParallelRunner.class)
4850
public class UnixStylePermissionTest {
4951

@@ -272,7 +274,7 @@ public void validate_cant_write_WhenNotOwner_and_NotInGroup_and_OtherWithoutWrit
272274

273275
final Subject mockUser = EasyMock.createMock(Subject.class);
274276
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 };
276278

277279
expect(mockUser.hasDbaRole()).andReturn(hasDbaRole);
278280
expect(mockUser.getId()).andReturn(userId);
@@ -360,6 +362,60 @@ public void permission_toString() {
360362
assertEquals("rwxr-----", permission.toString());
361363
}
362364

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+
363419
@Test
364420
public void permission_setFromModeString_existSymbolic() throws SyntaxException, PermissionDeniedException {
365421
final SecurityManager mockSecurityManager = EasyMock.createMock(SecurityManager.class);
@@ -579,7 +635,7 @@ public void permission_setMode_roundtrip() throws PermissionDeniedException {
579635
}
580636
}
581637

582-
public class TestableUnixStylePermission extends UnixStylePermission {
638+
static class TestableUnixStylePermission extends UnixStylePermission {
583639

584640
public TestableUnixStylePermission(final SecurityManager sm, final int ownerId, final int ownerGroupId, final int mode) {
585641
super(sm, ownerId, ownerGroupId, mode);
@@ -594,7 +650,7 @@ public long encodeAsBitVector_testable(final int userId, final int groupId, fina
594650
}
595651
}
596652

597-
public class TestableUnixStylePermissionWithCurrentSubject extends UnixStylePermission {
653+
static class TestableUnixStylePermissionWithCurrentSubject extends UnixStylePermission {
598654

599655
public TestableUnixStylePermissionWithCurrentSubject(final SecurityManager sm, final int ownerId, final int ownerGroupId, final int mode) {
600656
super(sm, ownerId, ownerGroupId, mode);

0 commit comments

Comments
 (0)