From 3efda4b6040f299eaa4bba4c21226e828ac75025 Mon Sep 17 00:00:00 2001
From: "pvalenzuela@chromium.org"
 <pvalenzuela@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue, 3 Jun 2014 10:29:25 +0000
Subject: Convert Sync BirthdayErrorTest to use FakeServer

BUG=323265

Review URL: https://codereview.chromium.org/308963006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@274459 0039d316-1c4b-4281-b951-d872f2087c98
---
 sync/test/fake_server/fake_server.cc | 65 +++++++++++++++++++++++-------------
 sync/test/fake_server/fake_server.h  |  9 +++--
 2 files changed, 48 insertions(+), 26 deletions(-)

(limited to 'sync/test')

diff --git a/sync/test/fake_server/fake_server.cc b/sync/test/fake_server/fake_server.cc
index 207f1a2..d0ea4de 100644
--- a/sync/test/fake_server/fake_server.cc
+++ b/sync/test/fake_server/fake_server.cc
@@ -34,8 +34,8 @@ using syncer::GetModelType;
 using syncer::ModelType;
 using syncer::ModelTypeSet;
 
-// The default birthday value.
-static const char kDefaultBirthday[] = "1234567890";
+// The default store birthday value.
+static const char kDefaultStoreBirthday[] = "1234567890";
 
 // The default keystore key.
 static const char kDefaultKeystoreKey[] = "1111111111111111";
@@ -145,7 +145,7 @@ scoped_ptr<UpdateSieve> UpdateSieve::Create(
 
 }  // namespace
 
-FakeServer::FakeServer() : version_(0), birthday_(kDefaultBirthday) {
+FakeServer::FakeServer() : version_(0), store_birthday_(kDefaultStoreBirthday) {
   keystore_keys_.push_back(kDefaultKeystoreKey);
   CHECK(CreateDefaultPermanentItems());
 }
@@ -218,32 +218,41 @@ void FakeServer::HandleCommand(const string& request,
   bool parsed = message.ParseFromString(request);
   DCHECK(parsed);
 
+  sync_pb::SyncEnums_ErrorType error_code;
   sync_pb::ClientToServerResponse response_proto;
-  bool success;
-  switch (message.message_contents()) {
-    case sync_pb::ClientToServerMessage::GET_UPDATES:
-      success = HandleGetUpdatesRequest(message.get_updates(),
-                                        response_proto.mutable_get_updates());
-      break;
-    case sync_pb::ClientToServerMessage::COMMIT:
-      success = HandleCommitRequest(message.commit(),
-                                    message.invalidator_client_id(),
-                                    response_proto.mutable_commit());
-      break;
-    default:
-      callback.Run(net::ERR_NOT_IMPLEMENTED, 0, string());;
+
+  if (message.has_store_birthday() &&
+      message.store_birthday() != store_birthday_) {
+    error_code = sync_pb::SyncEnums::NOT_MY_BIRTHDAY;
+  } else {
+    bool success = false;
+    switch (message.message_contents()) {
+      case sync_pb::ClientToServerMessage::GET_UPDATES:
+        success = HandleGetUpdatesRequest(message.get_updates(),
+                                          response_proto.mutable_get_updates());
+        break;
+      case sync_pb::ClientToServerMessage::COMMIT:
+        success = HandleCommitRequest(message.commit(),
+                                      message.invalidator_client_id(),
+                                      response_proto.mutable_commit());
+        break;
+      default:
+        callback.Run(net::ERR_NOT_IMPLEMENTED, 0, string());;
+        return;
+    }
+
+    if (!success) {
+      // TODO(pvalenzuela): Add logging here so that tests have more info about
+      // the failure.
+      callback.Run(net::ERR_FAILED, 0, string());
       return;
-  }
+    }
 
-  if (!success) {
-    // TODO(pvalenzuela): Add logging here so that tests have more info about
-    // the failure.
-    callback.Run(net::ERR_FAILED, 0, string());
-    return;
+    error_code = sync_pb::SyncEnums::SUCCESS;
   }
 
-  response_proto.set_error_code(sync_pb::SyncEnums::SUCCESS);
-  response_proto.set_store_birthday(birthday_);
+  response_proto.set_error_code(error_code);
+  response_proto.set_store_birthday(store_birthday_);
   callback.Run(0, net::HTTP_OK, response_proto.SerializeAsString());
 }
 
@@ -473,6 +482,14 @@ void FakeServer::InjectEntity(scoped_ptr<FakeServerEntity> entity) {
   SaveEntity(entity.release());
 }
 
+bool FakeServer::SetNewStoreBirthday(const string& store_birthday) {
+  if (store_birthday_ == store_birthday)
+    return false;
+
+  store_birthday_ = store_birthday;
+  return true;
+}
+
 void FakeServer::AddObserver(Observer* observer) {
   observers_.AddObserver(observer);
 }
diff --git a/sync/test/fake_server/fake_server.h b/sync/test/fake_server/fake_server.h
index c33db91..74e5536 100644
--- a/sync/test/fake_server/fake_server.h
+++ b/sync/test/fake_server/fake_server.h
@@ -57,6 +57,11 @@ class FakeServer {
   // result in successful server operations.
   void InjectEntity(scoped_ptr<FakeServerEntity> entity);
 
+  // Sets a new store birthday so that tests may trigger a NOT_MY_BIRTHDAY
+  // error. If |store_birthday| is the same as |store_birthday_|, false is
+  // returned and this method has no effect.
+  bool SetNewStoreBirthday(const std::string& store_birthday);
+
   // Adds |observer| to FakeServer's observer list. This should be called
   // before the Profile associated with |observer| is connected to the server.
   void AddObserver(Observer* observer);
@@ -115,8 +120,8 @@ class FakeServer {
   // have a version number of version_ + 1.
   int64 version_;
 
-  // The current birthday value.
-  std::string birthday_;
+  // The current store birthday value.
+  std::string store_birthday_;
 
   // All SyncEntity objects saved by the server. The key value is the entity's
   // id string.
-- 
cgit v1.1