Index: chrome/test/functional/secure_shell.py |
=================================================================== |
--- chrome/test/functional/secure_shell.py (revision 261231) |
+++ chrome/test/functional/secure_shell.py (working copy) |
@@ -1,109 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import glob |
-import logging |
-import os |
-import time |
- |
-import pyauto_functional # must be imported before pyauto |
-import pyauto |
- |
- |
-class SecureShellTest(pyauto.PyUITest): |
- """Tests for Secure Shell app. |
- |
- Uses app from chrome/test/data/extensions/secure_shell/. |
- The test uses stable app by default. |
- Set the env var SECURE_SHELL_USE_DEV=1 to make it use the dev one. |
- """ |
- |
- assert pyauto.PyUITest.IsChromeOS(), 'Works on ChromeOS only' |
- |
- def setUp(self): |
- """Install secure shell app at startup.""" |
- pyauto.PyUITest.setUp(self) |
- |
- # Pick app from data dir. |
- app_dir = os.path.join(os.path.abspath( |
- self.DataDir()), 'extensions', 'secure_shell') |
- channel = 'dev' if os.getenv('SECURE_SHELL_USE_DEV') else 'stable' |
- files = glob.glob(os.path.join(app_dir, 'SecureShell-%s-*.crx' % channel)) |
- assert files, 'Secure Shell %s app missing in %s' % (channel, app_dir) |
- app_path = files[0] |
- |
- # Install app. |
- logging.debug('Using Secure shell app %s' % app_path) |
- self._app_id = self.InstallExtension(app_path, from_webstore=True) |
- |
- def testInstall(self): |
- """Install Secure Shell.""" |
- # Installation already done in setUp. Just verify. |
- self.assertTrue(self._app_id) |
- ssh_info = [x for x in self.GetExtensionsInfo() |
- if x['id'] == self._app_id][0] |
- self.assertTrue(ssh_info) |
- # Uninstall. |
- self.UninstallExtensionById(id=self._app_id) |
- self.assertFalse([x for x in self.GetExtensionsInfo() |
- if x['id'] == self._app_id], |
- msg='Could not uninstall.') |
- |
- def testLaunch(self): |
- """Launch Secure Shell and verify basic connect/exit flow. |
- |
- This basic flow also verifies that NaCl works since secure shell is based |
- on it. |
- """ |
- self.assertEqual(1, self.GetTabCount()) |
- then = time.time() |
- self.LaunchApp(self._app_id) |
- login_ui_frame = ( |
- '/descendant::iframe[contains(@src, "nassh_connect_dialog.html")]') |
- # Wait for connection dialog iframe to load. |
- self.WaitForDomNode(login_ui_frame, tab_index=1, |
- msg='Secure shell login dialog did not show up') |
- self.WaitForDomNode('id("field-description")', tab_index=1, |
- attribute='placeholder', |
- expected_value='username@hostname', # partial match |
- frame_xpath=login_ui_frame, |
- msg='Did not find secure shell username dialog') |
- now = time.time() |
- self.assertEqual(2, self.GetTabCount(), msg='Did not launch') |
- logging.info('Launched Secure Shell in %.2f secs' % (now - then)) |
- |
- # Fill in chronos@localhost using webdriver. |
- driver = self.NewWebDriver() |
- driver.switch_to_window(driver.window_handles[-1]) # last tab |
- driver.switch_to_frame(1) |
- user = 'chronos@localhost' |
- driver.find_element_by_id('field-description').send_keys(user + '\n') |
- |
- # Verify yes/no prompt |
- self.WaitForHtermText('continue connecting \(yes/no\)\?', tab_index=1, |
- msg='Did not get the yes/no prompt') |
- welcome_text = self.GetHtermRowsText(0, 8, tab_index=1) |
- self.assertTrue('Welcome to Secure Shell' in welcome_text, |
- msg='Did not get correct welcome message') |
- |
- # Type 'yes' and enter password |
- self.SendKeysToHterm('yes\\n', tab_index=1) |
- self.WaitForHtermText('Password:', tab_index=1, |
- msg='Did not get password prompt') |
- self.SendKeysToHterm('test0000\\n', tab_index=1) |
- self.WaitForHtermText('chronos@localhost $', tab_index=1, |
- msg='Did not get shell login prompt') |
- |
- # Type 'exit' and close the tab |
- self.SendKeysToHterm('exit\\n', tab_index=1) |
- # Check for only 'code 0' since that is what indicates that we exited |
- # successfully. Checking for more stringage causes flakes since the exit |
- # string does change at times. |
- self.WaitForHtermText('code 0', tab_index=1, |
- msg='Did not get correct exit message') |
- |
- |
-if __name__ == '__main__': |
- pyauto_functional.Main() |