From e26e36bf72a399e3e4e300767fefe3768445c405 Mon Sep 17 00:00:00 2001 From: "bauerb@chromium.org" Date: Wed, 5 Jun 2013 17:57:42 +0000 Subject: Flip the "acknowledged" flag for managed users in the Python Sync test server. Managed user registration waits for the flag to be flipped. BUG=228833 Review URL: https://chromiumcodereview.appspot.com/15934012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204291 0039d316-1c4b-4281-b951-d872f2087c98 --- sync/tools/testserver/chromiumsync.py | 29 ++++++++++++++++++++++++++--- sync/tools/testserver/chromiumsync_test.py | 25 +++++++++++++++++++++++++ sync/tools/testserver/sync_testserver.py | 15 ++++++++++++++- 3 files changed, 65 insertions(+), 4 deletions(-) (limited to 'sync/tools') diff --git a/sync/tools/testserver/chromiumsync.py b/sync/tools/testserver/chromiumsync.py index af43415..7aac4de 100644 --- a/sync/tools/testserver/chromiumsync.py +++ b/sync/tools/testserver/chromiumsync.py @@ -537,13 +537,11 @@ class SyncDataModel(object): self._entries = {} self.ResetStoreBirthday() - self.migration_history = MigrationHistory() - self.induced_error = sync_pb2.ClientToServerResponse.Error() self.induced_error_frequency = 0 self.sync_count_before_errors = 0 - + self.acknowledge_managed_users = False self._keys = [MakeNewKeystoreKey()] def _SaveEntry(self, entry): @@ -732,6 +730,8 @@ class SyncDataModel(object): first_time_types.count(BOOKMARK) > 0): self.TriggerCreateSyncedBookmarks() + self.TriggerAcknowledgeManagedUsers() + change_log = sorted(self._entries.values(), key=operator.attrgetter('version')) new_changes = [x for x in change_log if x.version > min_timestamp] @@ -1086,6 +1086,21 @@ class SyncDataModel(object): nigori_tag = "google_chrome_nigori" self._SaveEntry(self._entries.get(self._ServerTagToId(nigori_tag))) + def TriggerAcknowledgeManagedUsers(self): + """Set the "acknowledged" flag for any managed user entities that don't have + it set already. + """ + + if not self.acknowledge_managed_users: + return + + managed_users = [copy.deepcopy(entry) for entry in self._entries.values() + if entry.specifics.HasField('managed_user') + and not entry.specifics.managed_user.acknowledged] + for user in managed_users: + user.specifics.managed_user.acknowledged = True + self._SaveEntry(user) + def SetInducedError(self, error, error_frequency, sync_count_before_errors): self.induced_error = error @@ -1258,6 +1273,14 @@ class TestServer(object): 'Rotate Keystore Keys' '

Rotate Keystore Keys

') + def HandleEnableManagedUserAcknowledgement(self): + """Enable acknowledging newly created managed users.""" + self.account.acknowledge_managed_users = True + return ( + 200, + 'Enable Managed User Acknowledgement' + '

Enable Managed User Acknowledgement

') + def HandleCommand(self, query, raw_request): """Decode and handle a sync command from a raw input of bytes. diff --git a/sync/tools/testserver/chromiumsync_test.py b/sync/tools/testserver/chromiumsync_test.py index 8c2acb7..d83e414 100755 --- a/sync/tools/testserver/chromiumsync_test.py +++ b/sync/tools/testserver/chromiumsync_test.py @@ -11,6 +11,7 @@ import unittest import autofill_specifics_pb2 import bookmark_specifics_pb2 import chromiumsync +import managed_user_specifics_pb2 import sync_pb2 import theme_specifics_pb2 @@ -598,6 +599,30 @@ class SyncDataModelTest(unittest.TestCase): len(changes)) self.assertEqual(version2, version) + def testAcknowledgeManagedUser(self): + # Create permanent items. + self.GetChangesFromTimestamp([chromiumsync.MANAGED_USER], 0) + proto = sync_pb2.SyncEntity() + proto.id_string = 'abcd' + proto.version = 0 + + # Make sure the managed_user field exists. + proto.specifics.managed_user.acknowledged = False + self.assertTrue(proto.specifics.HasField('managed_user')) + self.AddToModel(proto) + version1, changes1, remaining1 = ( + self.GetChangesFromTimestamp([chromiumsync.MANAGED_USER], 0)) + for change in changes1: + self.assertTrue(not change.specifics.managed_user.acknowledged) + + # Turn on managed user acknowledgement + self.model.acknowledge_managed_users = True + + version2, changes2, remaining2 = ( + self.GetChangesFromTimestamp([chromiumsync.MANAGED_USER], 0)) + for change in changes2: + self.assertTrue(change.specifics.managed_user.acknowledged) + def testGetKey(self): [key1] = self.model.GetKeystoreKeys() [key2] = self.model.GetKeystoreKeys() diff --git a/sync/tools/testserver/sync_testserver.py b/sync/tools/testserver/sync_testserver.py index 6925776..4fbfdaf 100755 --- a/sync/tools/testserver/sync_testserver.py +++ b/sync/tools/testserver/sync_testserver.py @@ -149,7 +149,8 @@ class SyncPageHandler(testserver_base.BasePageHandler): self.ChromiumSyncSyncTabFaviconsOpHandler, self.ChromiumSyncCreateSyncedBookmarksOpHandler, self.ChromiumSyncEnableKeystoreEncryptionOpHandler, - self.ChromiumSyncRotateKeystoreKeysOpHandler] + self.ChromiumSyncRotateKeystoreKeysOpHandler, + self.ChromiumSyncEnableManagedUserAcknowledgementHandler] post_handlers = [self.ChromiumSyncCommandHandler, self.ChromiumSyncTimeHandler] @@ -413,6 +414,18 @@ class SyncPageHandler(testserver_base.BasePageHandler): self.wfile.write(raw_reply) return True + def ChromiumSyncEnableManagedUserAcknowledgementHandler(self): + test_name = "/chromiumsync/enablemanageduseracknowledgement" + if not self._ShouldHandleRequest(test_name): + return False + result, raw_reply = ( + self.server._sync_handler.HandleEnableManagedUserAcknowledgement()) + self.send_response(result) + self.send_header('Content-Type', 'text/html') + self.send_header('Content-Length', len(raw_reply)) + self.end_headers() + self.wfile.write(raw_reply) + return True class SyncServerRunner(testserver_base.TestServerRunner): """TestServerRunner for the net test servers.""" -- cgit v1.1