Commit 10befe58 authored by Karan Bhatia's avatar Karan Bhatia Committed by Commit Bot

DNR: Add support to print RequestAction in tests.

Add the << operator for RequestAction so that gtest can print a RequestAction
object whenever an assertion/expectation fails. Also, improve how the equals
operator for RequestAction is implemented.

BUG=696822

Change-Id: Ic93382d0459274548f850b4279f1db9944ef4864
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1888068
Auto-Submit: Karan Bhatia <karandeepb@chromium.org>
Reviewed-by: default avatarKelvin Jiang <kelvinjiang@chromium.org>
Commit-Queue: Kelvin Jiang <kelvinjiang@chromium.org>
Commit-Queue: Karan Bhatia <karandeepb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710512}
parent af45c288
......@@ -67,5 +67,6 @@ source_set("test_support") {
":declarative_net_request",
"//base",
"//extensions/common",
"//testing/gtest",
]
}
......@@ -5,6 +5,7 @@
#include "extensions/browser/api/declarative_net_request/test_utils.h"
#include <string>
#include <tuple>
#include <utility>
#include "base/files/file_path.h"
......@@ -17,6 +18,7 @@
#include "extensions/common/api/declarative_net_request/test_utils.h"
#include "extensions/common/extension.h"
#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace extensions {
namespace declarative_net_request {
......@@ -44,17 +46,54 @@ bool operator==(const RequestAction& lhs, const RequestAction& rhs) {
std::set<base::StringPiece>(b.begin(), b.end());
};
bool are_matched_rules_equal =
lhs.rule_id == rhs.rule_id && lhs.source_type == rhs.source_type;
auto get_members_tuple = [](const RequestAction& action) {
return std::tie(action.type, action.redirect_url, action.rule_id,
action.source_type, action.extension_id);
};
return lhs.type == rhs.type && lhs.redirect_url == rhs.redirect_url &&
lhs.extension_id == rhs.extension_id && are_matched_rules_equal &&
return get_members_tuple(lhs) == get_members_tuple(rhs) &&
are_vectors_equal(lhs.request_headers_to_remove,
rhs.request_headers_to_remove) &&
are_vectors_equal(lhs.response_headers_to_remove,
rhs.response_headers_to_remove);
}
std::ostream& operator<<(std::ostream& output, RequestAction::Type type) {
switch (type) {
case RequestAction::Type::BLOCK:
output << "BLOCK";
break;
case RequestAction::Type::COLLAPSE:
output << "COLLAPSE";
break;
case RequestAction::Type::REDIRECT:
output << "REDIRECT";
break;
case RequestAction::Type::REMOVE_HEADERS:
output << "REMOVE_HEADERS";
break;
}
return output;
}
std::ostream& operator<<(std::ostream& output, const RequestAction& action) {
output << "\nRequestAction\n";
output << "|type| " << action.type << "\n";
output << "|redirect_url| "
<< (action.redirect_url ? action.redirect_url->spec()
: std::string("nullopt"))
<< "\n";
output << "|rule_id| " << action.rule_id << "\n";
output << "|source_type| "
<< api::declarative_net_request::ToString(action.source_type) << "\n";
output << "|extension_id| " << action.extension_id << "\n";
output << "|request_headers_to_remove| "
<< ::testing::PrintToString(action.request_headers_to_remove) << "\n";
output << "|response_headers_to_remove| "
<< ::testing::PrintToString(action.response_headers_to_remove);
return output;
}
bool HasValidIndexedRuleset(const Extension& extension,
content::BrowserContext* browser_context) {
int expected_checksum;
......
......@@ -6,6 +6,7 @@
#define EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_TEST_UTILS_H_
#include <memory>
#include <ostream>
#include <vector>
#include "extensions/browser/api/declarative_net_request/request_action.h"
......@@ -42,7 +43,10 @@ RequestAction CreateRequestActionForTesting(
api::declarative_net_request::SOURCE_TYPE_MANIFEST,
const ExtensionId& extension_id = "extensionid");
// Test helpers for help with gtest expectations and assertions.
bool operator==(const RequestAction& lhs, const RequestAction& rhs);
std::ostream& operator<<(std::ostream& output, RequestAction::Type type);
std::ostream& operator<<(std::ostream& output, const RequestAction& action);
// Returns true if the given extension has a valid indexed ruleset. Should be
// called on a sequence where file IO is allowed.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment