1: #
2: # Tests the PUT_factory() and PUT() method, especially with
3: # SYNC_ZODB repository type.
4: #
5:
6: import os, sys
7: if __name__ == '__main__':
8: execfile(os.path.join(sys.path[0], 'framework.py'))
9:
10: from Testing import ZopeTestCase
11:
12: ZopeTestCase.installProduct('SiteAccess')
13: ZopeTestCase.installProduct('ExternalMethod')
14: ZopeTestCase.installProduct('ExtFile')
15:
16: from Products.ExtFile.tests.ExtFileTestCase import ExtFileTestCase
17: from Products.ExtFile.tests.ExtFileTestCase import gifImage
18: from Products.ExtFile.tests.ExtFileTestCase import copymove_perms
19:
20: from Products.ExtFile import ExtFile, Config
21:
22: from webdav.NullResource import NullResource
23: from Acquisition import aq_base
24:
25: user_name = ZopeTestCase.user_name
26: user_password = ZopeTestCase.user_password
27:
28: import base64
29: auth_info = 'Basic %s' % base64.encodestring('%s:%s' % (user_name, user_password)).rstrip()
30:
31: from os.path import join
32:
33:
34: class TestPUTFactory(ExtFileTestCase):
35:
36: def afterSetUp(self):
37: ExtFileTestCase.afterSetUp(self)
38: self.setPermissions(copymove_perms)
39:
40: if not self.app.objectIds('Virtual Host Monster'):
41: factory = self.app.manage_addProduct['SiteAccess']
42: factory.manage_addVirtualHostMonster('VHM')
43:
44: factory = self.folder.manage_addProduct['ExternalMethod']
45: factory.manage_addExternalMethod('PUT_factory', '', 'ExtFile.PUT_factory', 'PUT_factory')
46:
47: self.folder.manage_addFolder('subfolder')
48: self.subfolder = self.folder.subfolder
49:
50: request = self.app.REQUEST
51: request['PARENTS'] = [self.app]
52:
53: # Fake a dav PUT request
54: request['BODYFILE'] = open(gifImage, 'rb')
55: request.environ['CONTENT_TYPE'] = 'image/gif'
56: request.environ['REQUEST_METHOD'] = 'PUT'
57: request._auth = auth_info
58:
59: def afterClear(self):
60: ExtFileTestCase.afterClear(self)
61: ExtFile.REPOSITORY = Config.FLAT
62: ExtFile.ZODB_PATH = Config.VIRTUAL
63:
64: def testPUT_factoryAddsImageNoTraverse(self):
65: request = self.app.REQUEST
66: new = NullResource(self.folder, 'image', request).__of__(self.folder)
67: new.PUT(request, request.RESPONSE)
68: self.failUnless(hasattr(aq_base(self.folder), 'image'))
69: self.failUnless(self._exists('image.gif.tmp'))
70:
71: def testPUT_factoryAddsImageFlat(self):
72: ExtFile.REPOSITORY = Config.FLAT
73: request = self.app.REQUEST
74: put = request.traverse('/test_folder_1_/image')
75: put(request, request.RESPONSE)
76: self.failUnless(hasattr(aq_base(self.folder), 'image'))
77: self.failUnless(self._exists('image.gif.tmp'))
78:
79: def testPUT_factoryAddsImageSyncZodb(self):
80: ExtFile.REPOSITORY = Config.SYNC_ZODB
81: request = self.app.REQUEST
82: put = request.traverse('/test_folder_1_/image')
83: put(request, request.RESPONSE)
84: self.failUnless(hasattr(aq_base(self.folder), 'image'))
85: self.failUnless(self._exists(join('test_folder_1_', 'image.gif.tmp')))
86:
87: def testPUT_factoryAddsImageSyncZodbSubfolder(self):
88: ExtFile.REPOSITORY = Config.SYNC_ZODB
89: request = self.app.REQUEST
90: put = request.traverse('/test_folder_1_/subfolder/image')
91: put(request, request.RESPONSE)
92: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
93: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
94:
95: def testPUT_factoryAddsImageSyncZodbVHM(self):
96: ExtFile.REPOSITORY = Config.SYNC_ZODB
97: request = self.app.REQUEST
98: put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/test_folder_1_/subfolder/image')
99: put(request, request.RESPONSE)
100: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
101: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
102:
103: def testPUT_factoryAddsImageSyncZodbVHMSubfolderHostingVirtual(self):
104: ExtFile.REPOSITORY = Config.SYNC_ZODB
105: request = self.app.REQUEST
106: put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/subfolder/image')
107: put(request, request.RESPONSE)
108: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
109: self.failUnless(self._exists(join('subfolder', 'image.gif.tmp')))
110:
111: def testPUT_factoryAddsImageSyncZodbVHMInsideOutHostingVirtual(self):
112: ExtFile.REPOSITORY = Config.SYNC_ZODB
113: request = self.app.REQUEST
114: put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/subfolder/image')
115: put(request, request.RESPONSE)
116: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
117: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
118:
119: def testPUT_factoryAddsImageSyncZodbVHMSubfolderInsideOutHostingVirtual(self):
120: ExtFile.REPOSITORY = Config.SYNC_ZODB
121: request = self.app.REQUEST
122: put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/subfolder/image')
123: put(request, request.RESPONSE)
124: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
125: self.failUnless(self._exists(join('subfolder', 'image.gif.tmp')))
126:
127: def testPUT_factoryAddsImageSyncZodbVHMSubfolderHostingPhysical(self):
128: ExtFile.REPOSITORY = Config.SYNC_ZODB
129: ExtFile.ZODB_PATH = Config.PHYSICAL
130: request = self.app.REQUEST
131: put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/subfolder/image')
132: put(request, request.RESPONSE)
133: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
134: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
135:
136: def testPUT_factoryAddsImageSyncZodbVHMInsideOutHostingPhysical(self):
137: ExtFile.REPOSITORY = Config.SYNC_ZODB
138: ExtFile.ZODB_PATH = Config.PHYSICAL
139: request = self.app.REQUEST
140: put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/subfolder/image')
141: put(request, request.RESPONSE)
142: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
143: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
144:
145: def testPUT_factoryAddsImageSyncZodbVHMSubfolderInsideOutHostingPhysical(self):
146: ExtFile.REPOSITORY = Config.SYNC_ZODB
147: ExtFile.ZODB_PATH = Config.PHYSICAL
148: request = self.app.REQUEST
149: put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/subfolder/image')
150: put(request, request.RESPONSE)
151: self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
152: self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
153:
154:
155: def test_suite():
156: from unittest import TestSuite, makeSuite
157: suite = TestSuite()
158: suite.addTest(makeSuite(TestPUTFactory))
159: return suite
160:
161: if __name__ == '__main__':
162: framework()
163:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>