diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-05 17:57:42 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-05 17:57:42 +0000 |
commit | e26e36bf72a399e3e4e300767fefe3768445c405 (patch) | |
tree | e8fd5607eaf96970f4f66a72bc4d83bb2924691f /sync | |
parent | d1a2f743ad6e6ed3af197544dc89a7224e593016 (diff) | |
download | chromium_src-e26e36bf72a399e3e4e300767fefe3768445c405.zip chromium_src-e26e36bf72a399e3e4e300767fefe3768445c405.tar.gz chromium_src-e26e36bf72a399e3e4e300767fefe3768445c405.tar.bz2 |
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
Diffstat (limited to 'sync')
-rw-r--r-- | sync/tools/testserver/chromiumsync.py | 29 | ||||
-rwxr-xr-x | sync/tools/testserver/chromiumsync_test.py | 25 | ||||
-rwxr-xr-x | sync/tools/testserver/sync_testserver.py | 15 |
3 files changed, 65 insertions, 4 deletions
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): '<html><title>Rotate Keystore Keys</title>' '<H1>Rotate Keystore Keys</H1></html>') + def HandleEnableManagedUserAcknowledgement(self): + """Enable acknowledging newly created managed users.""" + self.account.acknowledge_managed_users = True + return ( + 200, + '<html><title>Enable Managed User Acknowledgement</title>' + '<h1>Enable Managed User Acknowledgement</h1></html>') + 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.""" |