use of org.exist.storage.DBBroker in project exist by eXist-db.
the class SecurityManagerTest method deleteAccount.
@Test
public void deleteAccount() throws EXistException, PermissionDeniedException, XPathException, LockException {
final BrokerPool brokerPool = existEmbeddedServer.getBrokerPool();
final SecurityManager securityManager = brokerPool.getSecurityManager();
try (final DBBroker broker = brokerPool.get(Optional.of(securityManager.getSystemSubject()))) {
// 1. pre-check - assert the account exists
assertTrue(securityManager.hasAccount(TEST_USER_NAME));
// 2. pre-check - assert the XML document for the account and group exists
try (final LockedDocument document = broker.getXMLResource(ACCOUNTS_URI.append(TEST_USER_NAME + ".xml"), Lock.LockMode.READ_LOCK)) {
assertNotNull(document);
}
try (final LockedDocument document = broker.getXMLResource(GROUPS_URI.append(TEST_GROUP_NAME + ".xml"), Lock.LockMode.READ_LOCK)) {
assertNotNull(document);
}
// 3. pre-check - check that both the accounts collection and groups collection have sub-collections for removed accounts and groups
try (final Collection collection = broker.openCollection(ACCOUNTS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(1, collection.getChildCollectionCount(broker));
assertTrue(collection.hasChildCollection(broker, XmldbURI.create(REMOVED_COLLECTION_NAME)));
}
try (final Collection collection = broker.openCollection(GROUPS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(1, collection.getChildCollectionCount(broker));
assertTrue(collection.hasChildCollection(broker, XmldbURI.create(REMOVED_COLLECTION_NAME)));
}
// 4. pre-check - assert that the removed Collections do exist for accounts and groups, but is empty
try (final Collection collection = broker.openCollection(REMOVED_ACCOUNTS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(0, collection.getChildCollectionCount(broker));
assertEquals(0, collection.getDocumentCount(broker));
}
try (final Collection collection = broker.openCollection(REMOVED_GROUPS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(0, collection.getChildCollectionCount(broker));
assertEquals(0, collection.getDocumentCount(broker));
}
// 5. pre-check - assert the XML document for any removed account or group does NOT exist
assertFalse(removedAccountExists(broker, TEST_USER_NAME));
assertFalse(removedGroupExists(broker, TEST_GROUP_NAME));
// 6. DELETE THE ACCOUNT
securityManager.deleteAccount(TEST_USER_NAME);
// 7. post-check - assert the account does NOT exist
assertFalse(securityManager.hasAccount(TEST_USER_NAME));
// 8. post-check - assert the XML document for the account does NOT exist, but that the group still exists
try (final LockedDocument document = broker.getXMLResource(ACCOUNTS_URI.append(TEST_USER_NAME + ".xml"), Lock.LockMode.READ_LOCK)) {
assertNull(document);
}
try (final LockedDocument document = broker.getXMLResource(GROUPS_URI.append(TEST_GROUP_NAME + ".xml"), Lock.LockMode.READ_LOCK)) {
assertNotNull(document);
}
// 9. post-check - check that both the accounts collection and groups collection still have sub-collections for removed accounts and groups
try (final Collection collection = broker.openCollection(ACCOUNTS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(1, collection.getChildCollectionCount(broker));
assertTrue(collection.hasChildCollection(broker, XmldbURI.create(REMOVED_COLLECTION_NAME)));
}
try (final Collection collection = broker.openCollection(GROUPS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(1, collection.getChildCollectionCount(broker));
assertTrue(collection.hasChildCollection(broker, XmldbURI.create(REMOVED_COLLECTION_NAME)));
}
// 10. post-check - assert that the removed Collections do exist for accounts and groups, but contain only 1 document (i.e. for the removed account)
try (final Collection collection = broker.openCollection(REMOVED_ACCOUNTS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(0, collection.getChildCollectionCount(broker));
assertEquals(1, collection.getDocumentCount(broker));
}
try (final Collection collection = broker.openCollection(REMOVED_GROUPS_URI, Lock.LockMode.READ_LOCK)) {
assertNotNull(collection);
assertEquals(0, collection.getChildCollectionCount(broker));
assertEquals(0, collection.getDocumentCount(broker));
}
// 11. post-check - assert the XML document for the removed account does exist, but no such document exists for the group
assertTrue(removedAccountExists(broker, TEST_USER_NAME));
assertFalse(removedGroupExists(broker, TEST_GROUP_NAME));
}
}
use of org.exist.storage.DBBroker in project exist by eXist-db.
the class XqueryApiTest method executeQuery.
private Sequence executeQuery(final String uid, final String pwd, final String query) throws ApiException {
try {
final BrokerPool pool = server.getBrokerPool();
final XQuery xquery = pool.getXQueryService();
final Subject user = pool.getSecurityManager().authenticate(uid, pwd);
try (final DBBroker broker = pool.get(Optional.of(user))) {
return xquery.execute(broker, query, null);
}
} catch (final AuthenticationException | EXistException | PermissionDeniedException | XPathException e) {
throw new ApiException(e.getMessage(), e);
}
}
use of org.exist.storage.DBBroker in project exist by eXist-db.
the class EmbeddedXMLStreamReaderTest method assertNodesIn.
public void assertNodesIn(final NamedEvent[] expected, final Function<Document, NodeHandle> initialNodeFun, final Optional<Function<Document, NodeHandle>> containerFun) throws EXistException, PermissionDeniedException, IOException, XMLStreamException {
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()));
final Txn transaction = pool.getTransactionManager().beginTransaction()) {
try (final LockedDocument lockedDocument = broker.getXMLResource(TEST_MIXED_XML_COLLECTION.append(MIXED_XML_NAME), Lock.LockMode.WRITE_LOCK)) {
assertNotNull(lockedDocument);
final Document document = lockedDocument.getDocument();
assertNotNull(document);
final NodeHandle initialNode = initialNodeFun.apply(document);
final Optional<NodeHandle> maybeContainerNode = containerFun.map(f -> f.apply(document));
final IEmbeddedXMLStreamReader xmlStreamReader = broker.getXMLStreamReader(initialNode, false);
final NamedEvent[] actual = readAllEvents(maybeContainerNode, xmlStreamReader);
assertArrayEquals(formatExpectedActual(expected, actual), expected, actual);
}
transaction.commit();
}
}
use of org.exist.storage.DBBroker in project exist by eXist-db.
the class EmbeddedXMLStreamReaderTest method cleanup.
@AfterClass
public static void cleanup() throws EXistException, PermissionDeniedException, IOException, TriggerException {
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()));
final Txn transaction = pool.getTransactionManager().beginTransaction()) {
deleteCollection(broker, transaction, TEST_MIXED_XML_COLLECTION);
transaction.commit();
}
}
use of org.exist.storage.DBBroker in project exist by eXist-db.
the class AbstractGroupTest method removeManager_calls_assertCanModifyGroup.
@Test
public void removeManager_calls_assertCanModifyGroup() throws PermissionDeniedException, NoSuchMethodException {
DBBroker mockBroker = EasyMock.createMock(DBBroker.class);
AbstractRealm mockRealm = EasyMock.createMock(AbstractRealm.class);
Subject mockSubject = EasyMock.createMock(Subject.class);
Database mockDatabase = EasyMock.createMock(Database.class);
Group partialMockGroup = EasyMock.createMockBuilder(AbstractGroup.class).withConstructor(DBBroker.class, AbstractRealm.class, int.class, String.class, List.class).withArgs(mockBroker, mockRealm, 1, "testGroup", null).addMockedMethod("assertCanModifyGroup", Account.class).addMockedMethod(AbstractGroup.class.getDeclaredMethod("_addManager", Account.class)).createNiceMock();
// expectations
expect(mockRealm.getDatabase()).andReturn(mockDatabase);
expect(mockDatabase.getActiveBroker()).andReturn(mockBroker);
expect(mockBroker.getCurrentSubject()).andReturn(mockSubject);
partialMockGroup.assertCanModifyGroup(mockSubject);
replay(mockRealm, mockDatabase, mockBroker, partialMockGroup);
// test
partialMockGroup.removeManager(null);
verify(mockRealm, mockDatabase, mockBroker, partialMockGroup);
}
Aggregations