Don't wrap () for empty filter strings.

This commit is contained in:
Kishore Nallan 2022-12-28 17:20:36 +05:30
parent 0e1d70ebf6
commit a9b926e24b
2 changed files with 30 additions and 1 deletions

View File

@ -394,7 +394,13 @@ bool AuthManager::add_item_to_params(std::map<std::string, std::string>& req_par
if(req_params.count(item.key()) == 0) {
req_params[item.key()] = str_value;
} else if(item.key() == "filter_by") {
req_params[item.key()] = "(" + req_params[item.key()] + ") && (" + str_value + ")";
if(!req_params[item.key()].empty() && !str_value.empty()) {
req_params[item.key()] = "(" + req_params[item.key()] + ") && (" + str_value + ")";
} else if(req_params[item.key()].empty() && !str_value.empty()) {
req_params[item.key()] = "(" + str_value + ")";
} else if(!req_params[item.key()].empty() && str_value.empty()) {
req_params[item.key()] = "(" + req_params[item.key()] + ")";
}
} else if(overwrite) {
req_params[item.key()] = str_value;
}

View File

@ -199,6 +199,29 @@ TEST_F(CoreAPIUtilsTest, MultiSearchEmbeddedKeys) {
// ensure that req params are appended to (embedded params are also rolled into req params)
ASSERT_EQ("((user_id: 100) && (age: > 100)) && (foo: bar)", req->params["filter_by"]);
// when empty filter_by is present in req params, don't add ()
req->params["filter_by"] = "";
post_multi_search(req, res);
ASSERT_EQ("((age: > 100)) && (foo: bar)", req->params["filter_by"]);
// when empty filter_by in collection search params, don't add ()
req->params["filter_by"] = "user_id: 100";
search["filter_by"] = "";
body["searches"].clear();
body["searches"].push_back(search);
req->body = body.dump();
post_multi_search(req, res);
ASSERT_EQ("((user_id: 100)) && (foo: bar)", req->params["filter_by"]);
// when both are empty, don't add ()
req->params["filter_by"] = "";
search["filter_by"] = "";
body["searches"].clear();
body["searches"].push_back(search);
req->body = body.dump();
post_multi_search(req, res);
ASSERT_EQ("(foo: bar)", req->params["filter_by"]);
// try setting max search limit
req->embedded_params_vec[0]["limit_multi_searches"] = 0;
ASSERT_FALSE(post_multi_search(req, res));