24 def _publish_js_files(self, js_files): |
24 def _publish_js_files(self, js_files): |
25 req = self.request() |
25 req = self.request() |
26 head = HTMLHead(req) |
26 head = HTMLHead(req) |
27 url = head.concat_urls([req.data_url(js_file) for js_file in js_files])[len(req.base_url()):] |
27 url = head.concat_urls([req.data_url(js_file) for js_file in js_files])[len(req.base_url()):] |
28 req._url = url |
28 req._url = url |
29 return self.app_publish(req, url) |
29 return self.app_handle_request(req, url), req |
30 |
30 |
31 def expected_content(self, js_files): |
31 def expected_content(self, js_files): |
32 content = u'' |
32 content = u'' |
33 for js_file in js_files: |
33 for js_file in js_files: |
34 dirpath, rid = self.config.locate_resource(js_file) |
34 dirpath, rid = self.config.locate_resource(js_file) |
37 content += f.read() + '\n' |
37 content += f.read() + '\n' |
38 return content |
38 return content |
39 |
39 |
40 def test_cache(self): |
40 def test_cache(self): |
41 js_files = ('cubicweb.ajax.js', 'jquery.js') |
41 js_files = ('cubicweb.ajax.js', 'jquery.js') |
42 try: |
42 result, req = self._publish_js_files(js_files) |
43 result = self._publish_js_files(js_files) |
43 self.assertNotEqual(404, req.status_out) |
44 except StatusResponse, exc: |
|
45 if exc.status == 404: |
|
46 self.fail('unable to serve cubicweb.js+jquery.js') |
|
47 # let the exception propagate for any other status (e.g 500) |
|
48 raise |
|
49 # check result content |
44 # check result content |
50 self.assertEqual(result, self.expected_content(js_files)) |
45 self.assertEqual(result, self.expected_content(js_files)) |
51 # make sure we kept a cached version on filesystem |
46 # make sure we kept a cached version on filesystem |
52 concat_hander = ConcatFilesHandler(self.config) |
47 concat_hander = ConcatFilesHandler(self.config) |
53 filepath = concat_hander.build_filepath(js_files) |
48 filepath = concat_hander.build_filepath(js_files) |
57 def test_invalid_file_in_debug_mode(self): |
52 def test_invalid_file_in_debug_mode(self): |
58 js_files = ('cubicweb.ajax.js', 'dummy.js') |
53 js_files = ('cubicweb.ajax.js', 'dummy.js') |
59 # in debug mode, an error is raised |
54 # in debug mode, an error is raised |
60 self.config.debugmode = True |
55 self.config.debugmode = True |
61 try: |
56 try: |
62 result = self._publish_js_files(js_files) |
57 result, req = self._publish_js_files(js_files) |
63 self.fail('invalid concat js should return a 404 in debug mode') |
58 #print result |
64 except StatusResponse, exc: |
59 self.assertEqual(404, req.status_out) |
65 if exc.status != 404: |
|
66 self.fail('invalid concat js should return a 404 in debug mode') |
|
67 finally: |
60 finally: |
68 self.config.debugmode = False |
61 self.config.debugmode = False |
69 |
62 |
70 def test_invalid_file_in_production_mode(self): |
63 def test_invalid_file_in_production_mode(self): |
71 js_files = ('cubicweb.ajax.js', 'dummy.js') |
64 js_files = ('cubicweb.ajax.js', 'dummy.js') |
72 try: |
65 result, req = self._publish_js_files(js_files) |
73 result = self._publish_js_files(js_files) |
66 self.assertNotEqual(404, req.status_out) |
74 except StatusResponse, exc: |
|
75 if exc.status == 404: |
|
76 self.fail('invalid concat js should NOT return a 404 in debug mode') |
|
77 # let the exception propagate for any other status (e.g 500) |
|
78 raise |
|
79 # check result content |
67 # check result content |
80 self.assertEqual(result, self.expected_content(js_files)) |
68 self.assertEqual(result, self.expected_content(js_files)) |
81 |
69 |
82 |
70 |
83 if __name__ == '__main__': |
71 if __name__ == '__main__': |