buffet: Add support for DEVICE_DELETED XMPP notification
When DEVICE_DELETED notification is received over XMPP channel,
buffet will remove any cloud registration information (credentials,
robot account) and close server connections (XMPP channel, etc).
BUG=brillo:1215
TEST=`FEATURES=test emerge-link buffet`
Test manually on the device.
Change-Id: I86e19659b9fbc06685bcabb6c659a633e797cae5
Reviewed-on: https://chromium-review.googlesource.com/281666
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Trybot-Ready: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/notification/notification_parser_unittest.cc b/buffet/notification/notification_parser_unittest.cc
index c6be507..d578b55 100644
--- a/buffet/notification/notification_parser_unittest.cc
+++ b/buffet/notification/notification_parser_unittest.cc
@@ -9,6 +9,7 @@
#include "buffet/commands/unittest_utils.h"
+using testing::SaveArg;
using testing::Invoke;
using testing::_;
@@ -22,6 +23,7 @@
MOCK_METHOD0(OnDisconnected, void());
MOCK_METHOD0(OnPermanentFailure, void());
MOCK_METHOD1(OnCommandCreated, void(const base::DictionaryValue& command));
+ MOCK_METHOD1(OnDeviceDeleted, void(const std::string&));
};
class NotificationParserTest : public ::testing::Test {
@@ -72,6 +74,19 @@
EXPECT_JSON_EQ(expected_json, command_instance);
}
+TEST_F(NotificationParserTest, DeviceDeleted) {
+ auto json = CreateDictionaryValue(R"({
+ "kind":"clouddevices#notification",
+ "type":"DEVICE_DELETED",
+ "deviceId":"some_device_id"
+ })");
+
+ std::string device_id;
+ EXPECT_CALL(delegate_, OnDeviceDeleted(_)).WillOnce(SaveArg<0>(&device_id));
+ EXPECT_TRUE(ParseNotificationJson(*json, &delegate_));
+ EXPECT_EQ("some_device_id", device_id);
+}
+
TEST_F(NotificationParserTest, Failure_NoKind) {
auto json = CreateDictionaryValue(R"({
"type": "COMMAND_CREATED",