summaryrefslogtreecommitdiffstats
path: root/dbus/message_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/message_unittest.cc')
-rw-r--r--dbus/message_unittest.cc42
1 files changed, 36 insertions, 6 deletions
diff --git a/dbus/message_unittest.cc b/dbus/message_unittest.cc
index 9d87c2a..d78d90f2 100644
--- a/dbus/message_unittest.cc
+++ b/dbus/message_unittest.cc
@@ -565,12 +565,12 @@ TEST(MessageTest, GetAndSetHeaders) {
EXPECT_EQ(0U, message->GetSerial());
EXPECT_EQ(0U, message->GetReplySerial());
- message->SetDestination("org.chromium.destination");
- message->SetPath(dbus::ObjectPath("/org/chromium/path"));
- message->SetInterface("org.chromium.interface");
- message->SetMember("member");
- message->SetErrorName("org.chromium.error");
- message->SetSender(":1.2");
+ EXPECT_TRUE(message->SetDestination("org.chromium.destination"));
+ EXPECT_TRUE(message->SetPath(dbus::ObjectPath("/org/chromium/path")));
+ EXPECT_TRUE(message->SetInterface("org.chromium.interface"));
+ EXPECT_TRUE(message->SetMember("member"));
+ EXPECT_TRUE(message->SetErrorName("org.chromium.error"));
+ EXPECT_TRUE(message->SetSender(":1.2"));
message->SetSerial(123);
message->SetReplySerial(456);
@@ -583,3 +583,33 @@ TEST(MessageTest, GetAndSetHeaders) {
EXPECT_EQ(123U, message->GetSerial());
EXPECT_EQ(456U, message->GetReplySerial());
}
+
+TEST(MessageTest, SetInvalidHeaders) {
+ scoped_ptr<dbus::Response> message(dbus::Response::CreateEmpty());
+ EXPECT_EQ("", message->GetDestination());
+ EXPECT_EQ(dbus::ObjectPath(""), message->GetPath());
+ EXPECT_EQ("", message->GetInterface());
+ EXPECT_EQ("", message->GetMember());
+ EXPECT_EQ("", message->GetErrorName());
+ EXPECT_EQ("", message->GetSender());
+
+ // Empty element between periods.
+ EXPECT_FALSE(message->SetDestination("org..chromium"));
+ // Trailing '/' is only allowed for the root path.
+ EXPECT_FALSE(message->SetPath(dbus::ObjectPath("/org/chromium/")));
+ // Interface name cannot contain '/'.
+ EXPECT_FALSE(message->SetInterface("org/chromium/interface"));
+ // Member name cannot begin with a digit.
+ EXPECT_FALSE(message->SetMember("1member"));
+ // Error name cannot begin with a period.
+ EXPECT_FALSE(message->SetErrorName(".org.chromium.error"));
+ // Disallowed characters.
+ EXPECT_FALSE(message->SetSender("?!#*"));
+
+ EXPECT_EQ("", message->GetDestination());
+ EXPECT_EQ(dbus::ObjectPath(""), message->GetPath());
+ EXPECT_EQ("", message->GetInterface());
+ EXPECT_EQ("", message->GetMember());
+ EXPECT_EQ("", message->GetErrorName());
+ EXPECT_EQ("", message->GetSender());
+}