summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-05 17:57:42 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-05 17:57:42 +0000
commite26e36bf72a399e3e4e300767fefe3768445c405 (patch)
treee8fd5607eaf96970f4f66a72bc4d83bb2924691f /sync
parentd1a2f743ad6e6ed3af197544dc89a7224e593016 (diff)
downloadchromium_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.py29
-rwxr-xr-xsync/tools/testserver/chromiumsync_test.py25
-rwxr-xr-xsync/tools/testserver/sync_testserver.py15
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."""