Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Unified Diff: remoting/host/setup/me2me_native_messaging_host_unittest.cc

Issue 1272833002: Pass error messages from native messaging to web-app. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/host/setup/me2me_native_messaging_host_unittest.cc
diff --git a/remoting/host/setup/me2me_native_messaging_host_unittest.cc b/remoting/host/setup/me2me_native_messaging_host_unittest.cc
index 922f9965c0ba68053b59e9a6dca10f3cead28c31..3b6f9c43a81a69039f818d1b86aada24904552f9 100644
--- a/remoting/host/setup/me2me_native_messaging_host_unittest.cc
+++ b/remoting/host/setup/me2me_native_messaging_host_unittest.cc
@@ -162,10 +162,13 @@ class MockDaemonControllerDelegate : public DaemonController::Delegate {
void SetConfigAndStart(
scoped_ptr<base::DictionaryValue> config,
bool consent,
- const DaemonController::CompletionCallback& done) override;
+ const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) override;
void UpdateConfig(scoped_ptr<base::DictionaryValue> config,
- const DaemonController::CompletionCallback& done) override;
- void Stop(const DaemonController::CompletionCallback& done) override;
+ const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) override;
+ void Stop(const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) override;
DaemonController::UsageStatsConsent GetUsageStatsConsent() override;
private:
@@ -187,29 +190,32 @@ scoped_ptr<base::DictionaryValue> MockDaemonControllerDelegate::GetConfig() {
void MockDaemonControllerDelegate::SetConfigAndStart(
scoped_ptr<base::DictionaryValue> config,
bool consent,
- const DaemonController::CompletionCallback& done) {
+ const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) {
// Verify parameters passed in.
if (consent && config && config->HasKey("start")) {
- done.Run(DaemonController::RESULT_OK);
+ on_done.Run();
} else {
- done.Run(DaemonController::RESULT_FAILED);
+ on_error.Run("Missing 'start'", FROM_HERE);
}
}
void MockDaemonControllerDelegate::UpdateConfig(
scoped_ptr<base::DictionaryValue> config,
- const DaemonController::CompletionCallback& done) {
+ const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) {
if (config && config->HasKey("update")) {
- done.Run(DaemonController::RESULT_OK);
+ on_done.Run();
} else {
- done.Run(DaemonController::RESULT_FAILED);
+ on_error.Run("Missing 'update'", FROM_HERE);
}
}
void MockDaemonControllerDelegate::Stop(
- const DaemonController::CompletionCallback& done) {
- done.Run(DaemonController::RESULT_OK);
+ const base::Closure& on_done,
+ const DaemonController::ErrorCallback& on_error) {
+ on_done.Run();
}
DaemonController::UsageStatsConsent
@@ -233,11 +239,9 @@ class Me2MeNativeMessagingHostTest : public testing::Test {
void WriteMessageToInputPipe(const base::Value& message);
- // The Host process should shut down when it receives a malformed request.
- // This is tested by sending a known-good request, followed by |message|,
- // followed by the known-good request again. The response file should only
- // contain a single response from the first good request.
- void TestBadRequest(const base::Value& message);
+ void TestBadDictionary(const base::DictionaryValue& message);
+ void TestBadRequest(const base::Value& message,
+ const std::string& expected_type);
protected:
// Reference to the MockDaemonControllerDelegate, which is owned by
@@ -417,7 +421,16 @@ void Me2MeNativeMessagingHostTest::WriteMessageToInputPipe(
input_write_file_.WriteAtCurrentPos(message_json.data(), length);
}
-void Me2MeNativeMessagingHostTest::TestBadRequest(const base::Value& message) {
+void Me2MeNativeMessagingHostTest::TestBadDictionary(
+ const base::DictionaryValue& message) {
+ std::string type;
+ EXPECT_TRUE(message.GetString("type", &type));
+ TestBadRequest(message, type + "Response");
+}
+
+void Me2MeNativeMessagingHostTest::TestBadRequest(
+ const base::Value& message,
+ const std::string& expected_type) {
base::DictionaryValue good_message;
good_message.SetString("type", "hello");
@@ -425,17 +438,28 @@ void Me2MeNativeMessagingHostTest::TestBadRequest(const base::Value& message) {
// message parameters verification.
WriteMessageToInputPipe(good_message);
WriteMessageToInputPipe(message);
- WriteMessageToInputPipe(good_message);
// Read from output pipe, and verify responses.
scoped_ptr<base::DictionaryValue> response = ReadMessageFromOutputPipe();
VerifyHelloResponse(response.Pass());
response = ReadMessageFromOutputPipe();
- EXPECT_FALSE(response);
+ EXPECT_TRUE(response);
+
+ // If a type is expected, assert that it matches (note that a type is expected
+ // for all message that included one).
+ std::string value;
+ if (!expected_type.empty()) {
+ EXPECT_TRUE(response->GetString("type", &value));
+ EXPECT_EQ(expected_type, value);
+ } else {
+ EXPECT_FALSE(response->GetString("type", &value));
+ }
+
+ EXPECT_TRUE(response->GetString("error_message", &value));
+ EXPECT_TRUE(response->GetString("error_location", &value));
}
-// TODO (weitaosu): crbug.com/323306. Re-enable these tests.
// Test all valid request-types.
TEST_F(Me2MeNativeMessagingHostTest, All) {
int next_id = 0;
@@ -551,20 +575,20 @@ TEST_F(Me2MeNativeMessagingHostTest, Id) {
// Verify non-Dictionary requests are rejected.
TEST_F(Me2MeNativeMessagingHostTest, WrongFormat) {
base::ListValue message;
- TestBadRequest(message);
+ TestBadRequest(message, "");
}
// Verify requests with no type are rejected.
TEST_F(Me2MeNativeMessagingHostTest, MissingType) {
base::DictionaryValue message;
- TestBadRequest(message);
+ TestBadRequest(message, "");
}
// Verify rejection if type is unrecognized.
TEST_F(Me2MeNativeMessagingHostTest, InvalidType) {
base::DictionaryValue message;
message.SetString("type", "xxx");
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if getPinHash request has no hostId.
@@ -572,7 +596,7 @@ TEST_F(Me2MeNativeMessagingHostTest, GetPinHashNoHostId) {
base::DictionaryValue message;
message.SetString("type", "getPinHash");
message.SetString("pin", "1234");
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if getPinHash request has no pin.
@@ -580,7 +604,7 @@ TEST_F(Me2MeNativeMessagingHostTest, GetPinHashNoPin) {
base::DictionaryValue message;
message.SetString("type", "getPinHash");
message.SetString("hostId", "my_host");
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if updateDaemonConfig request has invalid config.
@@ -588,7 +612,7 @@ TEST_F(Me2MeNativeMessagingHostTest, UpdateDaemonConfigInvalidConfig) {
base::DictionaryValue message;
message.SetString("type", "updateDaemonConfig");
message.SetString("config", "xxx");
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if startDaemon request has invalid config.
@@ -597,7 +621,7 @@ TEST_F(Me2MeNativeMessagingHostTest, StartDaemonInvalidConfig) {
message.SetString("type", "startDaemon");
message.SetString("config", "xxx");
message.SetBoolean("consent", true);
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if startDaemon request has no "consent" parameter.
@@ -605,14 +629,14 @@ TEST_F(Me2MeNativeMessagingHostTest, StartDaemonNoConsent) {
base::DictionaryValue message;
message.SetString("type", "startDaemon");
message.Set("config", base::DictionaryValue().DeepCopy());
- TestBadRequest(message);
+ TestBadDictionary(message);
}
// Verify rejection if getCredentialsFromAuthCode has no auth code.
TEST_F(Me2MeNativeMessagingHostTest, GetCredentialsFromAuthCodeNoAuthCode) {
base::DictionaryValue message;
message.SetString("type", "getCredentialsFromAuthCode");
- TestBadRequest(message);
+ TestBadDictionary(message);
}
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698