示例#1
0
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))
示例#2
0
    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))
示例#3
0
    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'])
示例#4
0
    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'])
示例#5
0
    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())
示例#6
0
    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'])