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

Unified Diff: remoting/webapp/browser_test/update_pin_browser_test.js

Issue 273753002: Implement 3 PIN browser tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Last iteration Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/webapp/browser_test/invalid_pin_browser_test.js ('k') | remoting/webapp/js_proto/dom_proto.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/webapp/browser_test/update_pin_browser_test.js
diff --git a/remoting/webapp/browser_test/update_pin_browser_test.js b/remoting/webapp/browser_test/update_pin_browser_test.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d0eba5fa40a164de3480ce57240d798514e1f7e
--- /dev/null
+++ b/remoting/webapp/browser_test/update_pin_browser_test.js
@@ -0,0 +1,109 @@
+// Copyright 2014 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.
+
+/**
+ * @fileoverview
+ * @suppress {checkTypes}
+ * Browser test for the scenario below:
+ * 1. Change the PIN.
+ * 2. Connect with the new PIN.
+ * 3. Verify the connection succeeded.
+ * 4. Disconnect and reconnect with the old PIN.
+ * 5. Verify the connection failed.
+ */
+
+'use strict';
+
+/** @constructor */
+browserTest.Update_PIN = function() {};
+
+browserTest.Update_PIN.prototype.run = function(data) {
+ var LOGIN_BACKOFF_WAIT = 2000;
+ // Input validation
+ browserTest.expect(typeof data.new_pin == 'string');
+ browserTest.expect(typeof data.old_pin == 'string');
+ browserTest.expect(data.new_pin != data.old_pin,
+ 'The new PIN and the old PIN cannot be the same');
+
+ this.changePIN_(data.new_pin).then(
+ this.connect_.bind(this)
+ ).then(
+ this.enterPIN_.bind(this, data.old_pin, true /* expectError*/)
+ ).then(
+ // Sleep for two seconds to allow for the login backoff logic to reset.
+ base.Promise.sleep.bind(null, LOGIN_BACKOFF_WAIT)
+ ).then(
+ this.connect_.bind(this)
+ ).then(
+ this.enterPIN_.bind(this, data.new_pin, false /* expectError*/)
+ ).then(
+ // Clean up the test by disconnecting and changing the PIN back
+ this.disconnect_.bind(this)
+ ).then(
+ // The PIN must be restored regardless of success or failure.
+ this.changePIN_.bind(this, data.old_pin),
+ this.changePIN_.bind(this, data.old_pin)
+ ).then(
+ // On fulfilled.
+ browserTest.pass,
+ // On rejected.
+ browserTest.fail
+ );
+};
+
+browserTest.Update_PIN.prototype.changePIN_ = function(newPin) {
+ var AppMode = remoting.AppMode;
+ var HOST_RESTART_WAIT = 10000;
+
+ browserTest.clickOnControl('change-daemon-pin');
+
+ return browserTest.onUIMode(AppMode.HOST_SETUP_ASK_PIN).then(function() {
+ var onSetupDone = browserTest.onUIMode(AppMode.HOST_SETUP_DONE);
+ document.getElementById('daemon-pin-entry').value = newPin;
+ document.getElementById('daemon-pin-confirm').value = newPin;
+ browserTest.clickOnControl('daemon-pin-ok');
+ return onSetupDone;
+ }).then(function() {
+ browserTest.clickOnControl('host-config-done-dismiss');
+ // On Linux, we restart the host after changing the PIN, need to sleep
+ // for ten seconds before the host is ready for connection.
+ return base.Promise.sleep(HOST_RESTART_WAIT);
+ });
+};
+
+browserTest.Update_PIN.prototype.connect_ = function() {
+ browserTest.clickOnControl('this-host-connect');
+ return browserTest.onUIMode(remoting.AppMode.CLIENT_PIN_PROMPT);
+};
+
+browserTest.Update_PIN.prototype.disconnect_ = function() {
+ var AppMode = remoting.AppMode;
+
+ remoting.disconnect();
+
+ return browserTest.onUIMode(AppMode.CLIENT_SESSION_FINISHED_ME2ME)
+ .then(function() {
+ var onHome = browserTest.onUIMode(AppMode.HOME);
+ browserTest.clickOnControl('client-finished-me2me-button');
+ return onHome;
+ });
+};
+
+browserTest.Update_PIN.prototype.enterPIN_ = function(pin, expectError) {
+ // Wait for 500ms before hitting the PIN button. From experiment, sometimes
+ // the PIN prompt does not dismiss without the timeout.
+ var CONNECT_PIN_WAIT = 500;
+
+ document.getElementById('pin-entry').value = pin;
+
+ return base.Promise.sleep(CONNECT_PIN_WAIT).then(function() {
+ browserTest.clickOnControl('pin-connect-button');
+ }).then(function() {
+ if (expectError) {
+ return browserTest.expectMe2MeError(remoting.Error.INVALID_ACCESS_CODE);
+ } else {
+ return browserTest.expectMe2MeConnected();
+ }
+ });
+};
« no previous file with comments | « remoting/webapp/browser_test/invalid_pin_browser_test.js ('k') | remoting/webapp/js_proto/dom_proto.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698