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

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

Issue 462103003: Docserver: Implement ContentProvider.GetVersion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: futurize Created 6 years, 4 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
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 from cStringIO import StringIO 6 from cStringIO import StringIO
7 import json 7 import json
8 import unittest 8 import unittest
9 from zipfile import ZipFile 9 from zipfile import ZipFile
10 10
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 'noextension': 'noextension content', 69 'noextension': 'noextension content',
70 'run.js': 'run.js content', 70 'run.js': 'run.js content',
71 'site.css': 'site.css content', 71 'site.css': 'site.css content',
72 'storage.html': 'storage.html content', 72 'storage.html': 'storage.html content',
73 'markdown.md': '\n'.join(text[0] for text in _MARKDOWN_CONTENT) 73 'markdown.md': '\n'.join(text[0] for text in _MARKDOWN_CONTENT)
74 } 74 }
75 75
76 76
77 class ContentProviderUnittest(unittest.TestCase): 77 class ContentProviderUnittest(unittest.TestCase):
78 def setUp(self): 78 def setUp(self):
79 self._test_file_system = TestFileSystem(_TEST_DATA)
79 self._content_provider = self._CreateContentProvider() 80 self._content_provider = self._CreateContentProvider()
80 81
81 def _CreateContentProvider(self, supports_zip=False): 82 def _CreateContentProvider(self, supports_zip=False):
82 object_store_creator = ObjectStoreCreator.ForTest() 83 object_store_creator = ObjectStoreCreator.ForTest()
83 test_file_system = TestFileSystem(_TEST_DATA)
84 return ContentProvider( 84 return ContentProvider(
85 'foo', 85 'foo',
86 CompiledFileSystem.Factory(object_store_creator), 86 CompiledFileSystem.Factory(object_store_creator),
87 test_file_system, 87 self._test_file_system,
88 object_store_creator, 88 object_store_creator,
89 default_extensions=('.html', '.md'), 89 default_extensions=('.html', '.md'),
90 # TODO(kalman): Test supports_templates=False. 90 # TODO(kalman): Test supports_templates=False.
91 supports_templates=True, 91 supports_templates=True,
92 supports_zip=supports_zip) 92 supports_zip=supports_zip)
93 93
94 def _assertContent(self, content, content_type, content_and_type): 94 def _assertContent(self, content, content_type, content_and_type):
95 # Assert type so that str is differentiated from unicode. 95 # Assert type so that str is differentiated from unicode.
96 self.assertEqual(type(content), type(content_and_type.content)) 96 self.assertEqual(type(content), type(content_and_type.content))
97 self.assertEqual(content, content_and_type.content) 97 self.assertEqual(content, content_and_type.content)
98 self.assertEqual(content_type, content_and_type.content_type) 98 self.assertEqual(content_type, content_and_type.content_type)
99 99
100 def _assertTemplateContent(self, content, path): 100 def _assertTemplateContent(self, content, path, version):
101 content_and_type = self._content_provider.GetContentAndType(path).Get() 101 content_and_type = self._content_provider.GetContentAndType(path).Get()
102 self.assertEqual(Handlebar, type(content_and_type.content)) 102 self.assertEqual(Handlebar, type(content_and_type.content))
103 content_and_type.content = content_and_type.content.source 103 content_and_type.content = content_and_type.content.source
104 self._assertContent(content, 'text/html', content_and_type) 104 self._assertContent(content, 'text/html', content_and_type)
105 self.assertEqual(version, self._content_provider.GetVersion(path).Get())
105 106
106 def _assertMarkdownContent(self, content, path): 107 def _assertMarkdownContent(self, content, path, version):
107 content_and_type = self._content_provider.GetContentAndType(path).Get() 108 content_and_type = self._content_provider.GetContentAndType(path).Get()
108 content_and_type.content = content_and_type.content.source 109 content_and_type.content = content_and_type.content.source
109 self._assertContent(content, 'text/html', content_and_type) 110 self._assertContent(content, 'text/html', content_and_type)
111 self.assertEqual(version, self._content_provider.GetVersion(path).Get())
110 112
111 def testPlainText(self): 113 def testPlainText(self):
112 self._assertContent( 114 self._assertContent(
113 u'a.txt content', 'text/plain', 115 u'a.txt content', 'text/plain',
114 self._content_provider.GetContentAndType('dir/a.txt').Get()) 116 self._content_provider.GetContentAndType('dir/a.txt').Get())
115 self._assertContent( 117 self._assertContent(
116 u'd.txt content', 'text/plain', 118 u'd.txt content', 'text/plain',
117 self._content_provider.GetContentAndType('dir/c/d.txt').Get()) 119 self._content_provider.GetContentAndType('dir/c/d.txt').Get())
118 self._assertContent( 120 self._assertContent(
119 u'read.txt content', 'text/plain', 121 u'read.txt content', 'text/plain',
120 self._content_provider.GetContentAndType('read.txt').Get()) 122 self._content_provider.GetContentAndType('read.txt').Get())
121 self._assertContent( 123 self._assertContent(
122 unicode(_REDIRECTS_JSON, 'utf-8'), 'application/json', 124 unicode(_REDIRECTS_JSON, 'utf-8'), 'application/json',
123 self._content_provider.GetContentAndType('redirects.json').Get()) 125 self._content_provider.GetContentAndType('redirects.json').Get())
124 self._assertContent( 126 self._assertContent(
125 u'run.js content', 'application/javascript', 127 u'run.js content', 'application/javascript',
126 self._content_provider.GetContentAndType('run.js').Get()) 128 self._content_provider.GetContentAndType('run.js').Get())
127 self._assertContent( 129 self._assertContent(
128 u'site.css content', 'text/css', 130 u'site.css content', 'text/css',
129 self._content_provider.GetContentAndType('site.css').Get()) 131 self._content_provider.GetContentAndType('site.css').Get())
130 132
131 def testTemplate(self): 133 def testTemplate(self):
132 self._assertTemplateContent(u'storage.html content', 'storage.html') 134 self._assertTemplateContent(u'storage.html content', 'storage.html', '0')
135 self._test_file_system.IncrementStat('storage.html')
136 self._assertTemplateContent(u'storage.html content', 'storage.html', '1')
133 137
134 def testImage(self): 138 def testImage(self):
135 self._assertContent( 139 self._assertContent(
136 'img.png content', 'image/png', 140 'img.png content', 'image/png',
137 self._content_provider.GetContentAndType('img.png').Get()) 141 self._content_provider.GetContentAndType('img.png').Get())
138 142
139 def testZipTopLevel(self): 143 def testZipTopLevel(self):
140 zip_content_provider = self._CreateContentProvider(supports_zip=True) 144 zip_content_provider = self._CreateContentProvider(supports_zip=True)
141 content_and_type = zip_content_provider.GetContentAndType('dir.zip').Get() 145 content_and_type = zip_content_provider.GetContentAndType('dir.zip').Get()
142 zipfile = ZipFile(StringIO(content_and_type.content)) 146 zipfile = ZipFile(StringIO(content_and_type.content))
(...skipping 24 matching lines...) Expand all
167 # corresponds to the canonical directory. 171 # corresponds to the canonical directory.
168 zip_content_provider = self._CreateContentProvider(supports_zip=True) 172 zip_content_provider = self._CreateContentProvider(supports_zip=True)
169 self.assertEqual( 173 self.assertEqual(
170 'dir.zip', 174 'dir.zip',
171 zip_content_provider.GetCanonicalPath('dir.zip')) 175 zip_content_provider.GetCanonicalPath('dir.zip'))
172 self.assertEqual( 176 self.assertEqual(
173 'dir.zip', 177 'dir.zip',
174 zip_content_provider.GetCanonicalPath('diR.zip')) 178 zip_content_provider.GetCanonicalPath('diR.zip'))
175 179
176 def testMarkdown(self): 180 def testMarkdown(self):
177 self._assertMarkdownContent( 181 expected_content = '\n'.join(text[1] for text in _MARKDOWN_CONTENT)
178 '\n'.join(text[1] for text in _MARKDOWN_CONTENT), 182 self._assertMarkdownContent(expected_content, 'markdown', '0')
179 'markdown') 183 self._test_file_system.IncrementStat('markdown.md')
184 self._assertMarkdownContent(expected_content, 'markdown', '1')
180 185
181 def testNotFound(self): 186 def testNotFound(self):
182 self.assertRaises( 187 self.assertRaises(
183 FileNotFoundError, 188 FileNotFoundError,
184 self._content_provider.GetContentAndType('oops').Get) 189 self._content_provider.GetContentAndType('oops').Get)
185 190
186 def testIndexRedirect(self): 191 def testIndexRedirect(self):
187 self._assertTemplateContent(u'index.html content', '') 192 self._assertTemplateContent(u'index.html content', '', '0')
188 self._assertTemplateContent(u'index.html content 1', 'dir4') 193 self._assertTemplateContent(u'index.html content 1', 'dir4', '0')
189 self._assertTemplateContent(u'dir5.html content', 'dir5') 194 self._assertTemplateContent(u'dir5.html content', 'dir5', '0')
190 self._assertMarkdownContent( 195 self._assertMarkdownContent(
191 '\n'.join(text[1] for text in _MARKDOWN_CONTENT), 196 '\n'.join(text[1] for text in _MARKDOWN_CONTENT),
192 'dir7') 197 'dir7',
198 '0')
193 self._assertContent( 199 self._assertContent(
194 'noextension content', 'text/plain', 200 'noextension content', 'text/plain',
195 self._content_provider.GetContentAndType('noextension').Get()) 201 self._content_provider.GetContentAndType('noextension').Get())
196 self.assertRaises( 202 self.assertRaises(
197 FileNotFoundError, 203 FileNotFoundError,
198 self._content_provider.GetContentAndType('dir6').Get) 204 self._content_provider.GetContentAndType('dir6').Get)
199 205
206 def testCron(self):
207 # Not entirely sure what to test here, but get some code coverage.
208 self._content_provider.Cron().Get()
209
210
200 if __name__ == '__main__': 211 if __name__ == '__main__':
201 unittest.main() 212 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698