Roll src/third_party/WebKit 3529d49:06e8485 (svn 202554:202555)
[chromium-blink-merge.git] / remoting / webapp / browser_test / update_pin_browser_test.js
blob8f4e4e8fd5082dd4b934b494d171550ff252a808
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * @fileoverview
7  * @suppress {checkTypes}
8  * Browser test for the scenario below:
9  * 1. Change the PIN.
10  * 2. Connect with the new PIN.
11  * 3. Verify the connection succeeded.
12  * 4. Disconnect and reconnect with the old PIN.
13  * 5. Verify the connection failed.
14  */
16 'use strict';
18 /** @constructor */
19 browserTest.Update_PIN = function() {};
21 /**
22  * @param {{new_pin:string, old_pin:string}} data
23  */
24 browserTest.Update_PIN.prototype.run = function(data) {
25   var LOGIN_BACKOFF_WAIT = 2000;
26   // Input validation
27   browserTest.expect(typeof data.new_pin == 'string');
28   browserTest.expect(typeof data.old_pin == 'string');
29   browserTest.expect(data.new_pin != data.old_pin,
30                      'The new PIN and the old PIN cannot be the same');
32   this.changePIN_(data.new_pin).then(
33     browserTest.connectMe2Me
34   ).then(function(){
35     return browserTest.enterPIN(data.old_pin, true /* expectError*/);
36   }).then(
37     // Sleep for two seconds to allow for the login backoff logic to reset.
38     base.Promise.sleep.bind(null, LOGIN_BACKOFF_WAIT)
39   ).then(
40     browserTest.connectMe2Me
41   ).then(function(){
42     return browserTest.enterPIN(data.new_pin, false /* expectError*/)
43   }).then(
44     // Clean up the test by disconnecting and changing the PIN back
45     browserTest.disconnect
46   ).then(
47     // The PIN must be restored regardless of success or failure.
48     this.changePIN_.bind(this, data.old_pin),
49     this.changePIN_.bind(this, data.old_pin)
50   ).then(
51     // On fulfilled.
52     browserTest.pass,
53     // On rejected.
54     browserTest.fail
55   );
58 /**
59  * @param {string} newPin
60  * @return {Promise}
61  */
62 browserTest.Update_PIN.prototype.changePIN_ = function(newPin) {
63   var AppMode = remoting.AppMode;
64   var HOST_RESTART_WAIT = 10000;
65   browserTest.clickOnControl('.change-daemon-pin');
66   return browserTest.setupPIN(newPin);