Status AuthzManagerExternalStateMock::_findOneIter(const NamespaceString& collectionName,
                                                   const BSONObj& query,
                                                   BSONObjCollection::iterator* result) {
    std::vector<BSONObjCollection::iterator> iterVector;
    Status status = _queryVector(collectionName, query, &iterVector);
    if (!status.isOK()) {
        return status;
    }
    if (!iterVector.size()) {
        return Status(ErrorCodes::NoMatchingDocument, "No matching document");
    }
    *result = iterVector.front();
    return Status::OK();
}
 Status AuthzManagerExternalStateMock::query(
         const NamespaceString& collectionName,
         const BSONObj& query,
         const boost::function<void(const BSONObj&)>& resultProcessor) {
     std::vector<BSONObjCollection::iterator> iterVector;
     Status status = _queryVector(collectionName, query, &iterVector);
     if (!status.isOK()) {
         return status;
     }
     try {
         for (std::vector<BSONObjCollection::iterator>::iterator it = iterVector.begin();
              it != iterVector.end(); ++it) {
             resultProcessor(**it);
         }
     }
     catch (const DBException& ex) {
         status = ex.toStatus();
     }
     return status;
 }