public void testCheckOutPolicy() throws Exception {
    String permission = WRITE;
    String[] permissions = {WRITE, WRITE_PROPERTIES};
    MockDocument doc = new MockDocument("uuid1", null);

    doc.checkedout = true;
    assertSame(
        UNKNOWN,
        service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));

    doc.checkedout = false;
    assertSame(
        UNKNOWN,
        service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));

    deployContrib(CORE_TESTS_BUNDLE, "OSGI-INF/test-security-policy2-contrib.xml");

    assertSame(
        DENY, service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));
  }
  public void testPolicies() throws Exception {
    String permission = WRITE;
    String[] permissions = {WRITE};
    Document doc = new MockDocument("Test", creator);

    // without lock
    assertSame(
        UNKNOWN,
        service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));
    assertSame(
        UNKNOWN, service.checkPermission(doc, null, userPrincipal, permission, permissions, null));

    // with lock
    doc.setLock(new Lock(user, new GregorianCalendar()));
    assertSame(
        DENY, service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));
    assertSame(
        UNKNOWN, service.checkPermission(doc, null, userPrincipal, permission, permissions, null));

    // test creator policy with lower order takes over lock
    deployContrib(CORE_TESTS_BUNDLE, "OSGI-INF/test-security-policy-contrib.xml");
    assertSame(
        GRANT, service.checkPermission(doc, null, creatorPrincipal, permission, permissions, null));
    assertSame(
        UNKNOWN, service.checkPermission(doc, null, userPrincipal, permission, permissions, null));
  }