buffet: Switch to new registration workflow, user-initiated. BUG=None TEST=None Change-Id: I181065640b8f887dcd3b530942b1d7531f49aedd Reviewed-on: https://chromium-review.googlesource.com/219720 Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Anton Muhin <antonm@chromium.org> Tested-by: Anton Muhin <antonm@chromium.org>
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc index d4b22a2..3e35cec 100644 --- a/buffet/device_registration_info.cc +++ b/buffet/device_registration_info.cc
@@ -343,31 +343,16 @@ std::string DeviceRegistrationInfo::StartRegistration( const std::map<std::string, std::string>& params, chromeos::ErrorPtr* error) { + GetParamValue(params, "ticket_id", &ticket_id_); GetParamValue(params, storage_keys::kClientId, &client_id_); GetParamValue(params, storage_keys::kClientSecret, &client_secret_); GetParamValue(params, storage_keys::kApiKey, &api_key_); - GetParamValue(params, storage_keys::kDeviceId, &device_id_); GetParamValue(params, storage_keys::kDeviceKind, &device_kind_); GetParamValue(params, storage_keys::kSystemName, &system_name_); GetParamValue(params, storage_keys::kDisplayName, &display_name_); GetParamValue(params, storage_keys::kOAuthURL, &oauth_url_); GetParamValue(params, storage_keys::kServiceURL, &service_url_); - if (!CheckParam(storage_keys::kClientId, client_id_, error)) - return std::string(); - if (!CheckParam(storage_keys::kClientSecret, client_secret_, error)) - return std::string(); - if (!CheckParam(storage_keys::kApiKey, api_key_, error)) - return std::string(); - if (!CheckParam(storage_keys::kDeviceKind, device_kind_, error)) - return std::string(); - if (!CheckParam(storage_keys::kSystemName, system_name_, error)) - return std::string(); - if (!CheckParam(storage_keys::kOAuthURL, oauth_url_, error)) - return std::string(); - if (!CheckParam(storage_keys::kServiceURL, service_url_, error)) - return std::string(); - std::unique_ptr<base::DictionaryValue> commands = command_manager_->GetCommandDictionary().GetCommandsAsJson(true, error); if (!commands) @@ -379,26 +364,27 @@ return std::string(); base::DictionaryValue req_json; + req_json.SetString("id", ticket_id_); req_json.SetString("oauthClientId", client_id_); req_json.SetString("deviceDraft.deviceKind", device_kind_); req_json.SetString("deviceDraft.systemName", system_name_); - req_json.SetString("deviceDraft.displayName", display_name_); + if (!display_name_.empty()) + req_json.SetString("deviceDraft.displayName", display_name_); req_json.SetString("deviceDraft.channel.supportedType", "xmpp"); req_json.Set("deviceDraft.commandDefs", commands.release()); req_json.Set("deviceDraft.state", state.release()); - std::string url = GetServiceURL("registrationTickets", {{"key", api_key_}}); + int status_code{0}; + auto url = GetServiceURL("registrationTickets/" + ticket_id_, + {{"key", api_key_}}); auto resp_json = chromeos::http::ParseJsonResponse( - chromeos::http::PostJson(url, &req_json, transport_, error).get(), - nullptr, error); + chromeos::http::PatchJson(url, &req_json, transport_, error).get(), + &status_code, error); if (!resp_json) return std::string(); - if (!resp_json->GetString("id", &ticket_id_)) { - chromeos::Error::AddTo(error, kErrorDomainGCD, "unexpected_response", - "Device ID missing"); + if (status_code >= chromeos::http::status_code::BadRequest) return std::string(); - } std::string auth_url = GetOAuthURL("auth", { {"scope", "https://www.googleapis.com/auth/clouddevices"},
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h index 90e306f..117f891 100644 --- a/buffet/device_registration_info.h +++ b/buffet/device_registration_info.h
@@ -120,17 +120,14 @@ // Persistent data. Some of default values for testing purposes are used. // TODO(avakulenko): remove these default values in the future. // http://crbug.com/364692 - std::string client_id_ = - "583509257718-lnmeofvjef3b1tm33sbjmckfnumfvn8j.apps.googleusercontent.com"; - std::string client_secret_ = "6fzZwQhgnsHhvYYvvFdpv5SD"; - std::string api_key_ = "AIzaSyAp7KVig5m9g4LWWKr79mTS8sXWfUU6w9g"; + std::string client_id_ = "58855907228.apps.googleusercontent.com"; + std::string client_secret_ = "eHSAREAHrIqPsHBxCE9zPPBi"; + std::string api_key_ = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA"; std::string refresh_token_; std::string device_id_; std::string device_robot_account_; std::string oauth_url_ = "https://accounts.google.com/o/oauth2/"; - std::string service_url_ = - "https://www-googleapis-staging.sandbox.google.com/" - "clouddevices/v1/"; + std::string service_url_ = "https://www.googleapis.com/clouddevices/v1/"; // Transient data std::string access_token_;
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc index 50eb01a..d61f502 100644 --- a/buffet/device_registration_info_unittest.cc +++ b/buffet/device_registration_info_unittest.cc
@@ -273,12 +273,14 @@ TEST_F(DeviceRegistrationInfoTest, StartRegistration) { EXPECT_TRUE(dev_reg_->Load()); - auto create_ticket = [](const ServerRequest& request, + auto update_ticket = [](const ServerRequest& request, ServerResponse* response) { EXPECT_EQ(test_data::kApiKey, request.GetFormField("key")); auto json = request.GetDataAsJson(); EXPECT_NE(nullptr, json.get()); std::string value; + EXPECT_TRUE(json->GetString("id", &value)); + EXPECT_EQ(test_data::kClaimTicketId, value); EXPECT_TRUE(json->GetString("deviceDraft.channel.supportedType", &value)); EXPECT_EQ("xmpp", value); EXPECT_TRUE(json->GetString("oauthClientId", &value)); @@ -333,10 +335,12 @@ })"); EXPECT_TRUE(command_manager_->LoadCommands(*json_cmds, "", nullptr)); - transport_->AddHandler(dev_reg_->GetServiceURL("registrationTickets"), - chromeos::http::request_type::kPost, - base::Bind(create_ticket)); + transport_->AddHandler(dev_reg_->GetServiceURL( + std::string("registrationTickets/") + test_data::kClaimTicketId), + chromeos::http::request_type::kPatch, + base::Bind(update_ticket)); std::map<std::string, std::string> params; + params["ticket_id"] = test_data::kClaimTicketId; std::string json_resp = dev_reg_->StartRegistration(params, nullptr); auto json = std::unique_ptr<base::Value>(base::JSONReader::Read(json_resp)); EXPECT_NE(nullptr, json.get());