Update format of upsertLocalAuthInfo request

BUG=25766813

Change-Id: Ic2d0a882ee5f5cf41f268ccf039bac6596130fc3
Reviewed-on: https://weave-review.googlesource.com/1991
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/device_registration_info.cc b/src/device_registration_info.cc
index e70b8ba..bee536b 100644
--- a/src/device_registration_info.cc
+++ b/src/device_registration_info.cc
@@ -235,17 +235,6 @@
   return code >= http::kContinue && code < http::kBadRequest;
 }
 
-std::unique_ptr<base::DictionaryValue> BuildDeviceLocalAuth(
-    const std::string& id,
-    const std::string& client_token,
-    const std::string& cert_fingerprint) {
-  std::unique_ptr<base::DictionaryValue> auth{new base::DictionaryValue};
-  auth->SetString("localId", id);
-  auth->SetString("clientToken", client_token);
-  auth->SetString("certFingerprint", cert_fingerprint);
-  return auth;
-}
-
 }  // anonymous namespace
 
 DeviceRegistrationInfo::DeviceRegistrationInfo(
@@ -946,15 +935,15 @@
   std::string fingerprint =
       Base64Encode(auth_manager_->GetCertificateFingerprint());
 
-  std::unique_ptr<base::DictionaryValue> auth =
-      BuildDeviceLocalAuth(id, token_base64, fingerprint);
+  std::unique_ptr<base::DictionaryValue> auth{new base::DictionaryValue};
+  auth->SetString("localId", id);
+  auth->SetString("clientToken", token_base64);
+  auth->SetString("certFingerprint", fingerprint);
+  std::unique_ptr<base::DictionaryValue> root{new base::DictionaryValue};
+  root->Set("localAuthInfo", auth.release());
 
-  // TODO(vitalybuka): Remove args from URL when server is ready.
-  std::string url =
-      GetDeviceURL("upsertLocalAuthInfo", {{"localid", id},
-                                           {"clienttoken", token_base64},
-                                           {"certfingerprint", fingerprint}});
-  DoCloudRequest(HttpClient::Method::kPost, url, auth.get(),
+  std::string url = GetDeviceURL("upsertLocalAuthInfo", {});
+  DoCloudRequest(HttpClient::Method::kPost, url, root.get(),
                  base::Bind(&DeviceRegistrationInfo::OnSendAuthInfoDone,
                             AsWeakPtr(), token));
 }
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index 327c440..808f545 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -68,9 +68,11 @@
     "6ed0b3f54f9bd619b942f4ad2441c252@"
     "clouddevices.gserviceaccount.com";
 const char kAuthInfo[] = R"({
-  "certFingerprint":
-  "FQY6BEINDjw3FgsmYChRWgMzMhc4TC8uG0UUUFhdDz0=",
-  "localId": "f6885e46-b432-42d7-86a5-d759bfb61f62"
+  "localAuthInfo": {
+    "certFingerprint":
+    "FQY6BEINDjw3FgsmYChRWgMzMhc4TC8uG0UUUFhdDz0=",
+    "localId": "f6885e46-b432-42d7-86a5-d759bfb61f62"
+  }
 })";
 
 }  // namespace test_data
@@ -269,8 +271,7 @@
           Invoke([](const std::string& data,
                     const HttpClient::SendRequestCallback& callback) {
             auto dict = CreateDictionaryValue(data);
-            EXPECT_TRUE(dict->HasKey("clientToken"));
-            dict->Remove("clientToken", nullptr);
+            EXPECT_TRUE(dict->Remove("localAuthInfo.clientToken", nullptr));
             EXPECT_JSON_EQ(test_data::kAuthInfo, *dict);
             base::DictionaryValue json;
             callback.Run(ReplyWithJson(200, json), nullptr);
@@ -532,8 +533,7 @@
           Invoke([](const std::string& data,
                     const HttpClient::SendRequestCallback& callback) {
             auto dict = CreateDictionaryValue(data);
-            EXPECT_TRUE(dict->HasKey("clientToken"));
-            dict->Remove("clientToken", nullptr);
+            EXPECT_TRUE(dict->Remove("localAuthInfo.clientToken", nullptr));
             EXPECT_JSON_EQ(test_data::kAuthInfo, *dict);
             base::DictionaryValue json;
             callback.Run(ReplyWithJson(200, json), nullptr);