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

Side by Side Diff: chrome/test/functional/downloads.py

Issue 5781006: Fix pyauto downloads tests to trigger dangerous downloads to match expectation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 10 years 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
« no previous file with comments | « chrome/test/functional/PYAUTO_TESTS ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 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 filecmp 6 import filecmp
7 import logging 7 import logging
8 import os 8 import os
9 import shutil 9 import shutil
10 import sys 10 import sys
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 """Prepare for downloading the given path. 54 """Prepare for downloading the given path.
55 55
56 Clears the given path and the corresponding .crdownload, to prepare it to 56 Clears the given path and the corresponding .crdownload, to prepare it to
57 be downloaded. 57 be downloaded.
58 """ 58 """
59 os.path.exists(path) and os.remove(path) 59 os.path.exists(path) and os.remove(path)
60 crdownload = path + '.crdownload' 60 crdownload = path + '.crdownload'
61 os.path.exists(crdownload) and os.remove(crdownload) 61 os.path.exists(crdownload) and os.remove(crdownload)
62 62
63 def _GetDangerousDownload(self): 63 def _GetDangerousDownload(self):
64 """Returns the file url for a dangerous download for this OS.""" 64 """Returns the file path for a dangerous download for this OS."""
65 sub_path = os.path.join(self.DataDir(), 'downloads', 'dangerous') 65 sub_path = os.path.join(self.DataDir(), 'downloads', 'dangerous')
66 if self.IsMac(): 66 if self.IsMac():
67 return os.path.join(sub_path, 'invalid-dummy.dmg') 67 return os.path.join(sub_path, 'invalid-dummy.dmg')
68 return os.path.join(sub_path, 'dangerous.exe') 68 return os.path.join(sub_path, 'dangerous.exe')
69 69
70 def _EqualFileContents(self, file1, file2): 70 def _EqualFileContents(self, file1, file2):
71 """Determine if 2 given files have the same contents.""" 71 """Determine if 2 given files have the same contents."""
72 if not (os.path.exists(file1) and os.path.exists(file2)): 72 if not (os.path.exists(file1) and os.path.exists(file2)):
73 return False 73 return False
74 return filecmp.cmp(file1, file2, shallow=False) 74 return filecmp.cmp(file1, file2, shallow=False)
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 # since the download manager's list doesn't contain it. 151 # since the download manager's list doesn't contain it.
152 # Using WaitUntil is the only resort. 152 # Using WaitUntil is the only resort.
153 self.NavigateToURL(file_url, 1, 0) 153 self.NavigateToURL(file_url, 1, 0)
154 self.assertTrue(self.WaitUntil(lambda: os.path.exists(downloaded_pkg))) 154 self.assertTrue(self.WaitUntil(lambda: os.path.exists(downloaded_pkg)))
155 self.assertTrue(self._EqualFileContents(file_path, downloaded_pkg)) 155 self.assertTrue(self._EqualFileContents(file_path, downloaded_pkg))
156 self.assertTrue(self.IsDownloadShelfVisible(1)) 156 self.assertTrue(self.IsDownloadShelfVisible(1))
157 157
158 def testSaveDangerousFile(self): 158 def testSaveDangerousFile(self):
159 """Verify that we can download and save a dangerous file.""" 159 """Verify that we can download and save a dangerous file."""
160 file_path = self._GetDangerousDownload() 160 file_path = self._GetDangerousDownload()
161 file_url = self.GetFileURLForPath(file_path)
162 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(), 161 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(),
163 os.path.basename(file_path)) 162 os.path.basename(file_path))
164 self._ClearLocalDownloadState(downloaded_pkg) 163 self._ClearLocalDownloadState(downloaded_pkg)
165 164 self._TriggerUnsafeDownload(os.path.basename(file_path))
166 self.DownloadAndWaitForStart(file_url)
167 self.PerformActionOnDownload(self._GetDownloadId(), 165 self.PerformActionOnDownload(self._GetDownloadId(),
168 'save_dangerous_download') 166 'save_dangerous_download')
169 self.WaitForDownloadToComplete(downloaded_pkg) 167 self.WaitForDownloadToComplete(downloaded_pkg)
170 168
171 # Verify that the file was downloaded. 169 # Verify that the file was downloaded.
172 self.assertTrue(os.path.exists(downloaded_pkg)) 170 self.assertTrue(os.path.exists(downloaded_pkg))
173 self.assertTrue(self._EqualFileContents(file_path, downloaded_pkg)) 171 self.assertTrue(self._EqualFileContents(file_path, downloaded_pkg))
174 self._DeleteAfterShutdown(downloaded_pkg) 172 self._DeleteAfterShutdown(downloaded_pkg)
175 173
176 def testDeclineDangerousDownload(self): 174 def testDeclineDangerousDownload(self):
177 """Verify that we can decline dangerous downloads""" 175 """Verify that we can decline dangerous downloads"""
178 file_path = self._GetDangerousDownload() 176 file_path = self._GetDangerousDownload()
179 file_url = self.GetFileURLForPath(file_path)
180 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(), 177 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(),
181 os.path.basename(file_path)) 178 os.path.basename(file_path))
182 self._ClearLocalDownloadState(downloaded_pkg) 179 self._ClearLocalDownloadState(downloaded_pkg)
183 180 self._TriggerUnsafeDownload(os.path.basename(file_path))
184 self.DownloadAndWaitForStart(file_url)
185 self.PerformActionOnDownload(self._GetDownloadId(), 181 self.PerformActionOnDownload(self._GetDownloadId(),
186 'decline_dangerous_download') 182 'decline_dangerous_download')
187 self.assertFalse(os.path.exists(downloaded_pkg)) 183 self.assertFalse(os.path.exists(downloaded_pkg))
188 self.assertFalse(self.GetDownloadsInfo().Downloads()) 184 self.assertFalse(self.GetDownloadsInfo().Downloads())
189 self.assertFalse(self.IsDownloadShelfVisible()) 185 self.assertFalse(self.IsDownloadShelfVisible())
190 186
191 def testRemoveDownload(self): 187 def testRemoveDownload(self):
192 """Verify that we can remove a download.""" 188 """Verify that we can remove a download."""
193 test_dir = os.path.join(os.path.abspath(self.DataDir()), 'downloads') 189 test_dir = os.path.join(os.path.abspath(self.DataDir()), 'downloads')
194 file_path = os.path.join(test_dir, 'a_zip_file.zip') 190 file_path = os.path.join(test_dir, 'a_zip_file.zip')
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 self.assertEqual(len(downloads), len(crazy_filenames)) 296 self.assertEqual(len(downloads), len(crazy_filenames))
301 297
302 for filename in crazy_filenames: 298 for filename in crazy_filenames:
303 downloaded_file = os.path.join(download_dir, filename) 299 downloaded_file = os.path.join(download_dir, filename)
304 self.assertTrue(os.path.exists(downloaded_file)) 300 self.assertTrue(os.path.exists(downloaded_file))
305 self.assertTrue( # Verify file contents. 301 self.assertTrue( # Verify file contents.
306 self._EqualFileContents(downloaded_file, 302 self._EqualFileContents(downloaded_file,
307 os.path.join(temp_dir, filename))) 303 os.path.join(temp_dir, filename)))
308 os.path.exists(downloaded_file) and os.remove(downloaded_file) 304 os.path.exists(downloaded_file) and os.remove(downloaded_file)
309 305
306 def _TriggerUnsafeDownload(self, filename, tab_index=0, windex=0):
307 """Trigger download of an unsafe/dangerous filetype.
308
309 Files explictly requested by the user (like navigating to a package, or
310 clicking on a link) aren't marked unsafe.
311 Only the ones where the user didn't directly initiate a download are
312 marked unsafe.
313
314 Waits until the download starts.
kkania 2010/12/14 00:50:43 Maybe mention that this navigates the current page
Nirnimesh 2010/12/14 01:05:21 Done.
315
316 Args:
317 filename: the name of the file to trigger the download.
318 This should exist in the 'dangerous' directory.
kkania 2010/12/14 00:50:43 how about change this to take an absolute path (wh
Nirnimesh 2010/12/14 01:05:21 I want to ensure that the dangerous file exists in
319 tab_index: tab index. Default 0.
320 windex: window index. Default 0.
321 """
322 dangerous_dir = os.path.join(
323 self.DataDir(), 'downloads', 'dangerous')
324 assert os.path.isfile(os.path.join(dangerous_dir, filename))
325 file_url = self.GetFileURLForDataPath(os.path.join(
326 dangerous_dir, 'download-dangerous.html')) + '?' + filename
327 num_downloads = len(self.GetDownloadsInfo().Downloads())
328 self.NavigateToURL(file_url, windex, tab_index)
kkania 2010/12/14 00:50:43 Instead of creating the new html page just for red
Nirnimesh 2010/12/14 01:05:21 There's no current page yet.
329 # It might take a while for the download to kick in, hold on until then.
330 self.assertTrue(self.WaitUntil(
331 lambda: len(self.GetDownloadsInfo().Downloads()) == num_downloads + 1))
332
310 def testNoUnsafeDownloadsOnRestart(self): 333 def testNoUnsafeDownloadsOnRestart(self):
311 """Verify that unsafe file should not show up on session restart.""" 334 """Verify that unsafe file should not show up on session restart."""
312 file_path = self._GetDangerousDownload() 335 file_path = self._GetDangerousDownload()
313 file_url = self.GetFileURLForPath(file_path)
314 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(), 336 downloaded_pkg = os.path.join(self.GetDownloadDirectory().value(),
315 os.path.basename(file_path)) 337 os.path.basename(file_path))
316 self._ClearLocalDownloadState(downloaded_pkg) 338 self._ClearLocalDownloadState(downloaded_pkg)
317 self.DownloadAndWaitForStart(file_url) 339 self._TriggerUnsafeDownload(os.path.basename(file_path))
318 self.assertTrue(self.IsDownloadShelfVisible()) 340 self.assertTrue(self.IsDownloadShelfVisible())
319 # Restart the browser and assert that the download was removed. 341 # Restart the browser and assert that the download was removed.
320 self.RestartBrowser(clear_profile=False) 342 self.RestartBrowser(clear_profile=False)
321 self.assertFalse(os.path.exists(downloaded_pkg)) 343 self.assertFalse(os.path.exists(downloaded_pkg))
322 self.assertFalse(self.IsDownloadShelfVisible()) 344 self.assertFalse(self.IsDownloadShelfVisible())
323 self.NavigateToURL("chrome://downloads") 345 self.NavigateToURL("chrome://downloads")
324 self.assertFalse(self.GetDownloadsInfo().Downloads()) 346 self.assertFalse(self.GetDownloadsInfo().Downloads())
325 347
326 def testPauseAndResume(self): 348 def testPauseAndResume(self):
327 """Verify that pause and resume work while downloading a file. 349 """Verify that pause and resume work while downloading a file.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 self.PerformActionOnDownload(self._GetDownloadId(), 450 self.PerformActionOnDownload(self._GetDownloadId(),
429 'save_dangerous_download') 451 'save_dangerous_download')
430 # Wait for the theme to be set automatically. 452 # Wait for the theme to be set automatically.
431 self.assertTrue(self.WaitUntilDownloadedThemeSet('camo theme')) 453 self.assertTrue(self.WaitUntilDownloadedThemeSet('camo theme'))
432 self.assertTrue(self.WaitUntil(lambda path: not os.path.exists(path), 454 self.assertTrue(self.WaitUntil(lambda path: not os.path.exists(path),
433 args=[downloaded_pkg])) 455 args=[downloaded_pkg]))
434 456
435 457
436 if __name__ == '__main__': 458 if __name__ == '__main__':
437 pyauto_functional.Main() 459 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/PYAUTO_TESTS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698