Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: chrome/common/extensions/docs/server2/patch_servlet_test.py

Issue 15087006: Docserver: there is only one. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: epic rebase Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import unittest 6 import unittest
7 7
8 from empty_dir_file_system import EmptyDirFileSystem 8 from empty_dir_file_system import EmptyDirFileSystem
9 from fake_fetchers import ConfigureFakeFetchers 9 from fake_fetchers import ConfigureFakeFetchers
10 from host_file_system_creator import HostFileSystemCreator 10 from host_file_system_creator import HostFileSystemCreator
11 from patch_servlet import PatchServlet 11 from patch_servlet import PatchServlet
12 from render_servlet import RenderServlet 12 from render_servlet import RenderServlet
13 from server_instance import ServerInstance 13 from server_instance import ServerInstance
14 from servlet import Request 14 from servlet import Request
15 from test_branch_utility import TestBranchUtility 15 from test_branch_utility import TestBranchUtility
16 from test_util import DisableLogging 16 from test_util import DisableLogging
17 17
18 _ALLOWED_HOST = 'https://chrome-apps-doc.appspot.com' 18 _ALLOWED_HOST = 'https://chrome-apps-doc.appspot.com'
19 19
20 class _RenderServletDelegate(RenderServlet.Delegate): 20 class _RenderServletDelegate(RenderServlet.Delegate):
21 def CreateServerInstanceForChannel(self, channel): 21 def CreateServerInstance(self):
22 return ServerInstance.ForLocal() 22 return ServerInstance.ForLocal()
23 23
24 class _PatchServletDelegate(RenderServlet.Delegate): 24 class _PatchServletDelegate(RenderServlet.Delegate):
25 def CreateAppSamplesFileSystem(self, object_store_creator): 25 def CreateAppSamplesFileSystem(self, object_store_creator):
26 return EmptyDirFileSystem() 26 return EmptyDirFileSystem()
27 27
28 def CreateBranchUtility(self, object_store_creator): 28 def CreateBranchUtility(self, object_store_creator):
29 return TestBranchUtility.CreateWithCannedData() 29 return TestBranchUtility.CreateWithCannedData()
30 30
31 def CreateHostFileSystemCreator(self, object_store_creator): 31 def CreateHostFileSystemCreator(self, object_store_creator):
32 return HostFileSystemCreator.ForLocal(object_store_creator) 32 return HostFileSystemCreator.ForLocal(object_store_creator)
33 33
34 class PatchServletTest(unittest.TestCase): 34 class PatchServletTest(unittest.TestCase):
35 def setUp(self): 35 def setUp(self):
36 ConfigureFakeFetchers() 36 ConfigureFakeFetchers()
37 37
38 def _RenderWithPatch(self, path, issue): 38 def _RenderWithPatch(self, path, issue):
39 real_path = '%s/%s' % (issue, path) 39 path_with_issue = '%s/%s' % (issue, path)
40 return PatchServlet(Request.ForTest(real_path, host=_ALLOWED_HOST), 40 return PatchServlet(Request.ForTest(path_with_issue, host=_ALLOWED_HOST),
41 _PatchServletDelegate()).Get() 41 _PatchServletDelegate()).Get()
42 42
43 def _RenderWithoutPatch(self, path): 43 def _RenderWithoutPatch(self, path):
44 return RenderServlet(Request.ForTest(path, host=_ALLOWED_HOST), 44 return RenderServlet(Request.ForTest(path, host=_ALLOWED_HOST),
45 _RenderServletDelegate()).Get() 45 _RenderServletDelegate()).Get()
46 46
47 def _RenderAndCheck(self, path, issue, expected_equal): 47 def _RenderAndCheck(self, path, issue, expected_equal):
48 patched_response = self._RenderWithPatch(path, issue) 48 patched_response = self._RenderWithPatch(path, issue)
49 unpatched_response = self._RenderWithoutPatch(path) 49 unpatched_response = self._RenderWithoutPatch(path)
50 patched_response.headers.pop('cache-control', None) 50 patched_response.headers.pop('cache-control', None)
(...skipping 10 matching lines...) Expand all
61 self.assertNotEqual(patched_content, unpatched_content) 61 self.assertNotEqual(patched_content, unpatched_content)
62 62
63 def _RenderAndAssertEqual(self, path, issue): 63 def _RenderAndAssertEqual(self, path, issue):
64 self._RenderAndCheck(path, issue, True) 64 self._RenderAndCheck(path, issue, True)
65 65
66 def _RenderAndAssertNotEqual(self, path, issue): 66 def _RenderAndAssertNotEqual(self, path, issue):
67 self._RenderAndCheck(path, issue, False) 67 self._RenderAndCheck(path, issue, False)
68 68
69 @DisableLogging('warning') 69 @DisableLogging('warning')
70 def _AssertNotFound(self, path, issue): 70 def _AssertNotFound(self, path, issue):
71 self.assertEqual(self._RenderWithPatch(path, issue).status, 404, 71 response = self._RenderWithPatch(path, issue)
72 'Path %s with issue %s should have been removed.' % (path, issue)) 72 self.assertEqual(response.status, 404,
73 'Path %s with issue %s should have been removed for %s.' % (
74 path, issue, response))
73 75
74 def _AssertOk(self, path, issue): 76 def _AssertOk(self, path, issue):
75 response = self._RenderWithPatch(path, issue) 77 response = self._RenderWithPatch(path, issue)
76 self.assertEqual(response.status, 200, 78 self.assertEqual(response.status, 200,
77 'Failed to render path %s with issue %s.' % (path, issue)) 79 'Failed to render path %s with issue %s.' % (path, issue))
78 self.assertTrue(len(response.content.ToString()) > 0, 80 self.assertTrue(len(response.content.ToString()) > 0,
79 'Rendered result for path %s with issue %s should not be empty.' % 81 'Rendered result for path %s with issue %s should not be empty.' %
80 (path, issue)) 82 (path, issue))
81 83
84 def _AssertRedirect(self, path, issue, redirect_path):
85 response = self._RenderWithPatch(path, issue)
86 self.assertEqual(302, response.status)
87 self.assertEqual('/_patch/%s/%s' % (issue, redirect_path),
88 response.headers['Location'])
89
82 def testRender(self): 90 def testRender(self):
83 # '_patch' is not included in paths below because it's stripped by Handler. 91 # '_patch' is not included in paths below because it's stripped by Handler.
84 issue = '14096030' 92 issue = '14096030'
85 93
86 # extensions_sidenav.json is modified in the patch. 94 # extensions_sidenav.json is modified in the patch.
87 self._RenderAndAssertNotEqual('extensions/index.html', issue) 95 self._RenderAndAssertNotEqual('extensions/index.html', issue)
96
88 # apps_sidenav.json is not patched. 97 # apps_sidenav.json is not patched.
89 self._RenderAndAssertEqual('apps/about_apps.html', issue) 98 self._RenderAndAssertEqual('apps/about_apps.html', issue)
90 99
91 # extensions/runtime.html is removed in the patch. 100 # extensions/runtime.html is removed in the patch, should redirect to the
92 self._AssertNotFound('extensions/runtime.html', issue) 101 # apps version.
102 self._AssertRedirect('extensions/runtime.html', issue,
103 'apps/runtime.html')
104
93 # apps/runtime.html is not removed. 105 # apps/runtime.html is not removed.
94 self._RenderAndAssertEqual('apps/runtime.html', issue) 106 self._RenderAndAssertEqual('apps/runtime.html', issue)
95 107
96 # test_foo.html is added in the patch. 108 # test_foo.html is added in the patch.
97 self._AssertOk('extensions/test_foo.html', issue) 109 self._AssertOk('extensions/test_foo.html', issue)
98 110
99 # Invalid issue number results in a 404. 111 # Invalid issue number results in a 404.
100 self._AssertNotFound('extensions/index.html', '11111') 112 self._AssertNotFound('extensions/index.html', '11111')
101 113
102 def testXssRedirect(self): 114 def testXssRedirect(self):
(...skipping 13 matching lines...) Expand all
116 '%s/_patch/12345' % _ALLOWED_HOST)) 128 '%s/_patch/12345' % _ALLOWED_HOST))
117 self.assertTrue(*is_redirect('http://developers.google.com', '12345', 129 self.assertTrue(*is_redirect('http://developers.google.com', '12345',
118 '%s/_patch/12345' % _ALLOWED_HOST)) 130 '%s/_patch/12345' % _ALLOWED_HOST))
119 self.assertFalse(*is_redirect('http://chrome-apps-doc.appspot.com', '12345', 131 self.assertFalse(*is_redirect('http://chrome-apps-doc.appspot.com', '12345',
120 None)) 132 None))
121 self.assertFalse(*is_redirect('http://some-other-app.appspot.com', '12345', 133 self.assertFalse(*is_redirect('http://some-other-app.appspot.com', '12345',
122 None)) 134 None))
123 135
124 if __name__ == '__main__': 136 if __name__ == '__main__':
125 unittest.main() 137 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/patch_servlet.py ('k') | chrome/common/extensions/docs/server2/patched_file_system.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698