summaryrefslogtreecommitdiff
path: root/src/mongo/db/auth/authz_manager_external_state_mock.cpp
diff options
context:
space:
mode:
authorTess Avitabile <tess.avitabile@mongodb.com>2017-09-14 16:40:46 -0400
committerTess Avitabile <tess.avitabile@mongodb.com>2017-09-29 09:30:56 -0400
commite0a505e2a8bfe59d8bdfc4e5a25aef4861d58fcf (patch)
tree237c46d1e4fd1080ac58b890485fb6197d53484c /src/mongo/db/auth/authz_manager_external_state_mock.cpp
parent026b5f6f38c883c48d063ac8ee736f7330227281 (diff)
downloadmongo-e0a505e2a8bfe59d8bdfc4e5a25aef4861d58fcf.tar.gz
SERVER-30731 MatchExpressionParser::parse() should require an ExpressionContext
Diffstat (limited to 'src/mongo/db/auth/authz_manager_external_state_mock.cpp')
-rw-r--r--src/mongo/db/auth/authz_manager_external_state_mock.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_mock.cpp b/src/mongo/db/auth/authz_manager_external_state_mock.cpp
index ca77d4184a7..fbf8a3b2251 100644
--- a/src/mongo/db/auth/authz_manager_external_state_mock.cpp
+++ b/src/mongo/db/auth/authz_manager_external_state_mock.cpp
@@ -112,7 +112,7 @@ Status AuthzManagerExternalStateMock::findOne(OperationContext* opCtx,
const BSONObj& query,
BSONObj* result) {
BSONObjCollection::iterator iter;
- Status status = _findOneIter(collectionName, query, &iter);
+ Status status = _findOneIter(opCtx, collectionName, query, &iter);
if (!status.isOK())
return status;
*result = iter->copy();
@@ -126,7 +126,7 @@ Status AuthzManagerExternalStateMock::query(
const BSONObj&,
const stdx::function<void(const BSONObj&)>& resultProcessor) {
std::vector<BSONObjCollection::iterator> iterVector;
- Status status = _queryVector(collectionName, query, &iterVector);
+ Status status = _queryVector(opCtx, collectionName, query, &iterVector);
if (!status.isOK()) {
return status;
}
@@ -177,7 +177,9 @@ Status AuthzManagerExternalStateMock::updateOne(OperationContext* opCtx,
bool upsert,
const BSONObj& writeConcern) {
namespace mmb = mutablebson;
- UpdateDriver::Options updateOptions;
+ const CollatorInterface* collator = nullptr;
+ boost::intrusive_ptr<ExpressionContext> expCtx(new ExpressionContext(opCtx, collator));
+ UpdateDriver::Options updateOptions(std::move(expCtx));
UpdateDriver driver(updateOptions);
std::map<StringData, std::unique_ptr<ExpressionWithPlaceholder>> arrayFilters;
Status status = driver.parse(updatePattern, arrayFilters);
@@ -185,7 +187,7 @@ Status AuthzManagerExternalStateMock::updateOne(OperationContext* opCtx,
return status;
BSONObjCollection::iterator iter;
- status = _findOneIter(collectionName, query, &iter);
+ status = _findOneIter(opCtx, collectionName, query, &iter);
mmb::Document document;
if (status.isOK()) {
document.reset(*iter, mmb::Document::kInPlaceDisabled);
@@ -257,7 +259,7 @@ Status AuthzManagerExternalStateMock::remove(OperationContext* opCtx,
int* numRemoved) {
int n = 0;
BSONObjCollection::iterator iter;
- while (_findOneIter(collectionName, query, &iter).isOK()) {
+ while (_findOneIter(opCtx, collectionName, query, &iter).isOK()) {
BSONObj idQuery = (*iter)["_id"].wrap();
_documents[collectionName].erase(iter);
++n;
@@ -275,11 +277,12 @@ std::vector<BSONObj> AuthzManagerExternalStateMock::getCollectionContents(
return mapFindWithDefault(_documents, collectionName, std::vector<BSONObj>());
}
-Status AuthzManagerExternalStateMock::_findOneIter(const NamespaceString& collectionName,
+Status AuthzManagerExternalStateMock::_findOneIter(OperationContext* opCtx,
+ const NamespaceString& collectionName,
const BSONObj& query,
BSONObjCollection::iterator* result) {
std::vector<BSONObjCollection::iterator> iterVector;
- Status status = _queryVector(collectionName, query, &iterVector);
+ Status status = _queryVector(opCtx, collectionName, query, &iterVector);
if (!status.isOK()) {
return status;
}
@@ -291,11 +294,13 @@ Status AuthzManagerExternalStateMock::_findOneIter(const NamespaceString& collec
}
Status AuthzManagerExternalStateMock::_queryVector(
+ OperationContext* opCtx,
const NamespaceString& collectionName,
const BSONObj& query,
std::vector<BSONObjCollection::iterator>* result) {
- CollatorInterface* collator = nullptr;
- StatusWithMatchExpression parseResult = MatchExpressionParser::parse(query, collator);
+ const CollatorInterface* collator = nullptr;
+ boost::intrusive_ptr<ExpressionContext> expCtx(new ExpressionContext(opCtx, collator));
+ StatusWithMatchExpression parseResult = MatchExpressionParser::parse(query, std::move(expCtx));
if (!parseResult.isOK()) {
return parseResult.getStatus();
}