class ViewTests(Testing.ZopeTestCase.FunctionalTestCase): """Make sure checkout doesn't fail with Zope2. """ layer = gocept.fssyncz2.testing.server_layer def setUp(self): Testing.ZopeTestCase.ZopeTestCase.setUp(self) self.app.manage_addFolder('folder') self.app['folder'].manage_addFile('file', 'foo') self.app['acl_users']._doAddUser('manager', 'asdf', ('Manager', ), []) def test_checkout_response_should_be_OK_and_a_snarf_archive(self): # XXX flaky, see #10491 browser = zope.testbrowser.browser.Browser() browser.addHeader('Authorization', 'manager:asdf') # The output contains the length of each piece which, in turn, depends # on the length of the etag in the case of folder/file. We need to # make sure that the length of the etag is deterministic. self.app['folder']['file']._EtagSupport__etag = 'ts65399125.34' try: browser.open('http://*****:*****@@toFS.snarf' % self.layer.port) except urllib2.HTTPError, e: self.fail(e) self.assertEquals( """\ 00000167 @@Zope/Extra/folder/@@Zope/Entries.xml 00000186 folder/@@Zope/Entries.xml 00000223 @@Zope/Entries.xml 00000605 @@Zope/Extra/folder/attributes 00001210 folder/file """, grep('^[0-9]{8}', browser.contents, sort=True))
def test_items_in_ignore_file_are_not_dumped(self): self.app.manage_addFolder('folder') self.app['folder'].manage_addFile('foo', 'one') self.app['folder'].manage_addFile('bar', 'two') self.app['folder'].manage_addFile('baz', 'three') manage_addZReST(self.app['folder'], 'fssync-dump-ignore') ignore = self.app['folder']['fssync-dump-ignore'] ignore.source = 'bar\nbaz' response = self.publish('/folder/@@toFS.snarf', basic='manager:asdf') self.assertEqual( """\ <entry name="foo" <entry name="fssync-dump-ignore" """, grep('<entry', unsnarf(response, 'folder/@@Zope/Entries.xml'), sort=True))
def test_objects_should_have_a_stable_attribute_sorting_order(self): for i in xrange(32): self.app._setObject('object', OFS.SimpleItem.SimpleItem()) creation_order = list('abcdef') random.shuffle(creation_order) for key in creation_order: setattr(self.app['object'], key, 'foo') response = self.publish('/object/@@toFS.snarf', basic='manager:asdf') self.assertEquals( """\ <key> <string>a</string> </key> <key> <string>b</string> </key> <key> <string>c</string> </key> <key> <string>d</string> </key> <key> <string>e</string> </key> <key> <string>f</string> </key> """, grep('<key>', unsnarf(response, 'root'))) self.app.manage_delObjects(['object'])
def test_entries_xml_should_have_a_stable_sorting_order(self): for i in xrange(32): self.app.manage_addFolder('folder') creation_order = list('abcdef') random.shuffle(creation_order) for key in creation_order: self.app['folder'].manage_addFile(key, 'foo') response = self.publish('/folder/@@toFS.snarf', basic='manager:asdf') self.assertEquals( """\ <entry name="a" <entry name="b" <entry name="c" <entry name="d" <entry name="e" <entry name="f" """, grep('<entry', unsnarf(response, 'folder/@@Zope/Entries.xml'))) self.app.manage_delObjects(['folder'])
def test_folder_is_pickled_with_entries_and_attributes(self): self.app.manage_addFolder('folder') self.app['folder'].manage_addFile('foo', 'bar') self.app['folder'].a = 'asdf' self.app['folder'].b = 'bsdf' response = self.publish('/folder/@@toFS.snarf', basic='manager:asdf') self.assertEquals( """\ <entry name="foo" """, grep('<entry', unsnarf(response, 'folder/@@Zope/Entries.xml'))) self.assertTrue(""" <dictionary> <item key="__ac_local_roles__"> <dictionary> <item key="test_user_1_"> <list> <string>Owner</string> </list> </item> </dictionary> </item> <item key="_owner"> <tuple> <list> <string>test_folder_1_</string> <string>acl_users</string> </list> <string>test_user_1_</string> </tuple> </item> <item> <key> <string>a</string> </key> <value> <string>asdf</string> </value> </item> <item> <key> <string>b</string> </key> <value> <string>bsdf</string> </value> </item> <item key="title"> <string></string> </item> </dictionary> """ in unsnarf(response, '@@Zope/Extra/folder/attributes').getvalue())
def test_folder_should_have_a_stable_attribute_sorting_order(self): # We test a folder's attribute serialisation specifically because we # reimplement folder serialisation for Zope2 and have actually seen # attribute serialisation for folders break at one point. for i in xrange(32): self.app.manage_addFolder('folder') creation_order = list('abcdef') random.shuffle(creation_order) for key in creation_order: setattr(self.app['folder'], key, 'foo') response = self.publish('/folder/@@toFS.snarf', basic='manager:asdf') self.assertEquals( """\ <key> <string>a</string> </key> <key> <string>b</string> </key> <key> <string>c</string> </key> <key> <string>d</string> </key> <key> <string>e</string> </key> <key> <string>f</string> </key> """, grep('<key>', unsnarf(response, '@@Zope/Extra/folder/attributes'))) self.app.manage_delObjects(['folder'])