- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / instance_servlet_test.py
1 #!/usr/bin/env python
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
4 # found in the LICENSE file.
5
6 import unittest
7
8 from empty_dir_file_system import EmptyDirFileSystem
9 from github_file_system_provider import GithubFileSystemProvider
10 from instance_servlet import InstanceServlet
11 from servlet import Request
12 from fail_on_access_file_system import FailOnAccessFileSystem
13 from test_branch_utility import TestBranchUtility
14 from test_util import DisableLogging
15
16 # NOTE(kalman): The ObjectStore created by the InstanceServlet is backed onto
17 # our fake AppEngine memcache/datastore, so the tests aren't isolated.
18 class _TestDelegate(InstanceServlet.Delegate):
19   def __init__(self, file_system_type):
20     self._file_system_type = file_system_type
21
22   def CreateBranchUtility(self, object_store_creator):
23     return TestBranchUtility.CreateWithCannedData()
24
25   def CreateGithubFileSystemProvider(self, object_store_creator):
26     return GithubFileSystemProvider.ForEmpty()
27
28 class InstanceServletTest(unittest.TestCase):
29   '''Tests that if the file systems underlying the docserver's data fail,
30   the instance servlet still returns 404s or 301s with a best-effort.
31   It should never return a 500 (i.e. crash).
32   '''
33
34   @DisableLogging('warning')
35   def testHostFileSystemNotAccessed(self):
36     delegate = _TestDelegate(FailOnAccessFileSystem)
37     constructor = InstanceServlet.GetConstructor(delegate_for_test=delegate)
38     def test_path(path, status=404):
39       response = constructor(Request.ForTest(path)).Get()
40       self.assertEqual(status, response.status)
41     test_path('extensions/storage.html')
42     test_path('apps/storage.html')
43     test_path('extensions/examples/foo.zip')
44     test_path('extensions/examples/foo.html')
45     test_path('static/foo.css')
46     test_path('beta/extensions/storage.html', status=301)
47     test_path('beta/apps/storage.html', status=301)
48     test_path('beta/extensions/examples/foo.zip', status=301)
49     test_path('beta/extensions/examples/foo.html', status=301)
50     test_path('beta/static/foo.css', status=301)
51
52 if __name__ == '__main__':
53   unittest.main()