Index: components/os_crypt/kwallet_dbus_unittest.cc |
diff --git a/components/os_crypt/kwallet_dbus_unittest.cc b/components/os_crypt/kwallet_dbus_unittest.cc |
index 24d6b8e81d1344199ad6cd95690b3d11677b3615..bc494f161d4d46782ed5fd9c4ea0eaea065e8dcc 100644 |
--- a/components/os_crypt/kwallet_dbus_unittest.cc |
+++ b/components/os_crypt/kwallet_dbus_unittest.cc |
@@ -272,6 +272,61 @@ MATCHER_P5(ArgumentsAreStringStringsStringsStringBool, |
return true; |
} |
+MATCHER_P5(ArgumentsAreIntStringStringStringString, |
+ int_1, |
+ str_2, |
+ str_3, |
+ str_4, |
+ str_5, |
+ "") { |
+ dbus::MessageReader reader(arg); |
+ |
+ int32_t i; |
+ EXPECT_TRUE(reader.PopInt32(&i)); |
+ if (int_1 != i) |
+ return false; |
+ |
+ std::string str; |
+ EXPECT_TRUE(reader.PopString(&str)); |
+ if (str_2 != str) |
+ return false; |
+ |
+ EXPECT_TRUE(reader.PopString(&str)); |
+ if (str_3 != str) |
+ return false; |
+ |
+ EXPECT_TRUE(reader.PopString(&str)); |
+ if (str_4 != str) |
+ return false; |
+ |
+ EXPECT_TRUE(reader.PopString(&str)); |
+ if (str_5 != str) |
+ return false; |
+ |
+ return true; |
+} |
+ |
+MATCHER_P3(ArgumentsAreIntBoolString, int_1, bool_2, str_3, "") { |
+ dbus::MessageReader reader(arg); |
+ |
+ int32_t i; |
+ EXPECT_TRUE(reader.PopInt32(&i)); |
+ if (int_1 != i) |
+ return false; |
+ |
+ bool b; |
+ EXPECT_TRUE(reader.PopBool(&b)); |
+ if (bool_2 != b) |
+ return false; |
+ |
+ std::string str; |
+ EXPECT_TRUE(reader.PopString(&str)); |
+ if (str_3 != str) |
+ return false; |
+ |
+ return true; |
+} |
+ |
TEST_P(KWalletDBusTest, StartWalletd) { |
// The receiver of the message takes ownership of the response object. |
dbus::Response* response_success = RespondEmpty(); |
@@ -693,4 +748,145 @@ TEST_P(KWalletDBusTest, CreateFolderErrorContact) { |
kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder)); |
} |
+TEST_P(KWalletDBusTest, WritePassword) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock( |
+ AllOf(Calls(kKWalletInterface, "writePassword"), |
+ ArgumentsAreIntStringStringStringString( |
+ 123, "folder", "key", "password", "app")), |
+ _)) |
+ .WillOnce(Return(RespondInt32(0))); |
+ |
+ bool write_success = false; |
+ EXPECT_EQ(KWalletDBus::Error::SUCCESS, |
+ kwallet_dbus_.WritePassword(123, "folder", "key", "password", "app", |
+ &write_success)); |
+ EXPECT_TRUE(write_success); |
+} |
+ |
+TEST_P(KWalletDBusTest, WritePasswordRejected) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock( |
+ AllOf(Calls(kKWalletInterface, "writePassword"), |
+ ArgumentsAreIntStringStringStringString( |
+ 123, "folder", "key", "password", "app")), |
+ _)) |
+ .WillOnce(Return(RespondInt32(-1))); |
+ |
+ bool write_success = true; |
+ EXPECT_EQ(KWalletDBus::Error::SUCCESS, |
+ kwallet_dbus_.WritePassword(123, "folder", "key", "password", "app", |
+ &write_success)); |
+ EXPECT_FALSE(write_success); |
+} |
+ |
+TEST_P(KWalletDBusTest, WritePasswordErrorRead) { |
+ EXPECT_CALL( |
+ *mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "writePassword"), _)) |
+ .WillOnce(Return(RespondEmpty())); |
+ |
+ bool write_success = false; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_READ, |
+ kwallet_dbus_.WritePassword(123, "folder", "key", "password", "app", |
+ &write_success)); |
+} |
+ |
+TEST_P(KWalletDBusTest, WritePasswordErrorContact) { |
+ EXPECT_CALL( |
+ *mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "writePassword"), _)) |
+ .WillOnce(Return(nullptr)); |
+ |
+ bool write_success = false; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT, |
+ kwallet_dbus_.WritePassword(123, "folder", "key", "password", "app", |
+ &write_success)); |
+} |
+ |
+TEST_P(KWalletDBusTest, ReadPassword) { |
+ EXPECT_CALL( |
+ *mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock( |
+ AllOf(Calls(kKWalletInterface, "readPassword"), |
+ ArgumentsAreIntStringStringString(123, "folder", "key", "app")), |
+ _)) |
+ .WillOnce(Return(RespondString("password"))); |
+ |
+ std::string password; |
+ EXPECT_EQ(KWalletDBus::Error::SUCCESS, |
+ kwallet_dbus_.ReadPassword(123, "folder", "key", "app", &password)); |
+ EXPECT_EQ("password", password); |
+} |
+ |
+TEST_P(KWalletDBusTest, ReadPasswordErrorRead) { |
+ EXPECT_CALL( |
+ *mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "readPassword"), _)) |
+ .WillOnce(Return(RespondEmpty())); |
+ |
+ std::string password; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_READ, |
+ kwallet_dbus_.ReadPassword(123, "folder", "key", "app", &password)); |
+} |
+ |
+TEST_P(KWalletDBusTest, ReadPasswordErrorContact) { |
+ EXPECT_CALL( |
+ *mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "readPassword"), _)) |
+ .WillOnce(Return(nullptr)); |
+ |
+ std::string password; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT, |
+ kwallet_dbus_.ReadPassword(123, "folder", "key", "app", &password)); |
+} |
+ |
+TEST_P(KWalletDBusTest, CloseSuccess) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock( |
+ AllOf(Calls(kKWalletInterface, "close"), |
+ ArgumentsAreIntBoolString(123, false, "app")), |
+ _)) |
+ .WillOnce(Return(RespondInt32(0))); |
+ |
+ bool success = false; |
+ EXPECT_EQ(KWalletDBus::Error::SUCCESS, |
+ kwallet_dbus_.Close(123, false, "app", &success)); |
+ EXPECT_TRUE(success); |
+} |
+ |
+TEST_P(KWalletDBusTest, CloseUnsuccessful) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock( |
+ AllOf(Calls(kKWalletInterface, "close"), |
+ ArgumentsAreIntBoolString(123, false, "app")), |
+ _)) |
+ .WillOnce(Return(RespondInt32(1))); |
+ |
+ bool success = true; |
+ EXPECT_EQ(KWalletDBus::Error::SUCCESS, |
+ kwallet_dbus_.Close(123, false, "app", &success)); |
+ EXPECT_FALSE(success); |
+} |
+ |
+TEST_P(KWalletDBusTest, CloseErrorRead) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "close"), _)) |
+ .WillOnce(Return(RespondEmpty())); |
+ |
+ bool success = true; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_READ, |
+ kwallet_dbus_.Close(123, false, "app", &success)); |
+} |
+ |
+TEST_P(KWalletDBusTest, CloseErrorContact) { |
+ EXPECT_CALL(*mock_kwallet_proxy_.get(), |
+ MockCallMethodAndBlock(Calls(kKWalletInterface, "close"), _)) |
+ .WillOnce(Return(nullptr)); |
+ |
+ bool success = true; |
+ EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT, |
+ kwallet_dbus_.Close(123, false, "app", &success)); |
+} |
+ |
} // namespace |