buffet: CheckDeviceRegistered works offline CheckDeviceRegistered previously worked differently if buffet had never been online vs if it just went offline. Basically it should just care if the device_reg_info file has a registration configured. Specifically it shouldn't try to refresh the access_token. BUG=brillo:785 TEST=FEATURES=test emerge-$BOARD buffet Change-Id: I7da25f7e9507a131a37fd16efeb2e8e7352985b8 Reviewed-on: https://chromium-review.googlesource.com/264792 Reviewed-by: Nathan Bullock <nathanbullock@google.com> Tested-by: Nathan Bullock <nathanbullock@google.com> Commit-Queue: Nathan Bullock <nathanbullock@google.com>
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h index f153cda..1e63539 100644 --- a/buffet/device_registration_info.h +++ b/buffet/device_registration_info.h
@@ -116,9 +116,8 @@ // Loads the device registration information from cache. bool Load(); - // Checks for the valid device registration as well as refreshes - // the device access token, if available. - bool CheckRegistration(chromeos::ErrorPtr* error); + // Checks whether we have credentials generated during registration. + bool HaveRegistrationCredentials(chromeos::ErrorPtr* error); // Gets the full device description JSON object, or nullptr if // the device is not registered or communication failure. @@ -162,10 +161,11 @@ // Saves the device registration to cache. bool Save() const; - // Checks whether we have credentials generated during registration. - bool HaveRegistrationCredentials(chromeos::ErrorPtr* error); + // Checks for the valid device registration as well as refreshes + // the device access token, if available. + bool CheckRegistration(chromeos::ErrorPtr* error); - // If we currently have an access token and it doesn't like like it + // If we currently have an access token and it doesn't look like it // has expired yet, returns true immediately. Otherwise calls // RefreshAccessToken(). bool MaybeRefreshAccessToken(chromeos::ErrorPtr* error);
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc index 7e09cfd..4d1279b 100644 --- a/buffet/device_registration_info_unittest.cc +++ b/buffet/device_registration_info_unittest.cc
@@ -170,10 +170,16 @@ static bool Save(DeviceRegistrationInfo* info) { return info->Save(); } + static void PublishCommands(DeviceRegistrationInfo* info, const base::ListValue& commands) { return info->PublishCommands(commands); } + + static bool CheckRegistration(DeviceRegistrationInfo* info, + chromeos::ErrorPtr* error) { + return info->CheckRegistration(error); + } }; class DeviceRegistrationInfoTest : public ::testing::Test { @@ -274,7 +280,8 @@ TEST_F(DeviceRegistrationInfoTest, CheckRegistration) { EXPECT_TRUE(dev_reg_->Load()); - EXPECT_FALSE(dev_reg_->CheckRegistration(nullptr)); + EXPECT_FALSE(DeviceRegistrationInfo::TestHelper::CheckRegistration( + dev_reg_.get(), nullptr)); EXPECT_EQ(0, transport_->GetRequestCount()); SetDefaultDeviceRegistration(&data_); @@ -285,7 +292,8 @@ chromeos::http::request_type::kPost, base::Bind(OAuth2Handler)); transport_->ResetRequestCount(); - EXPECT_TRUE(dev_reg_->CheckRegistration(nullptr)); + EXPECT_TRUE(DeviceRegistrationInfo::TestHelper::CheckRegistration( + dev_reg_.get(), nullptr)); EXPECT_EQ(1, transport_->GetRequestCount()); } @@ -300,7 +308,8 @@ base::Bind(OAuth2HandlerFail)); transport_->ResetRequestCount(); chromeos::ErrorPtr error; - EXPECT_FALSE(dev_reg_->CheckRegistration(&error)); + EXPECT_FALSE(DeviceRegistrationInfo::TestHelper::CheckRegistration( + dev_reg_.get(), &error)); EXPECT_EQ(1, transport_->GetRequestCount()); EXPECT_TRUE(error->HasError(buffet::kErrorDomainOAuth2, "unable_to_authenticate")); @@ -318,7 +327,8 @@ base::Bind(OAuth2HandlerDeregister)); transport_->ResetRequestCount(); chromeos::ErrorPtr error; - EXPECT_FALSE(dev_reg_->CheckRegistration(&error)); + EXPECT_FALSE(DeviceRegistrationInfo::TestHelper::CheckRegistration( + dev_reg_.get(), &error)); EXPECT_EQ(1, transport_->GetRequestCount()); EXPECT_TRUE(error->HasError(buffet::kErrorDomainOAuth2, "invalid_grant"));
diff --git a/buffet/manager.cc b/buffet/manager.cc index 897c8a4..33b1763 100644 --- a/buffet/manager.cc +++ b/buffet/manager.cc
@@ -83,7 +83,7 @@ void Manager::CheckDeviceRegistered(DBusMethodResponse<std::string> response) { LOG(INFO) << "Received call to Manager.CheckDeviceRegistered()"; chromeos::ErrorPtr error; - bool registered = device_info_->CheckRegistration(&error); + bool registered = device_info_->HaveRegistrationCredentials(&error); // If it fails due to any reason other than 'device not registered', // treat it as a real error and report it to the caller. if (!registered &&