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

Unified Diff: tools/telemetry/telemetry/form_based_credentials_backend_unittest_base.py

Issue 11875017: [Telemetry] fix google_credentials_backend_unittest.py and facebook_credentials_backend_unittest.py. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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
Index: tools/telemetry/telemetry/form_based_credentials_backend_unittest_base.py
diff --git a/tools/telemetry/telemetry/facebook_credentials_backend_unittest.py b/tools/telemetry/telemetry/form_based_credentials_backend_unittest_base.py
similarity index 53%
copy from tools/telemetry/telemetry/facebook_credentials_backend_unittest.py
copy to tools/telemetry/telemetry/form_based_credentials_backend_unittest_base.py
index 3c16f25fe3cf8302f529573e2cbee97b2786feaa..085a787bbfdc464be4b815fc32d02ebd64da052b 100644
--- a/tools/telemetry/telemetry/facebook_credentials_backend_unittest.py
+++ b/tools/telemetry/telemetry/form_based_credentials_backend_unittest_base.py
@@ -1,11 +1,10 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Copyright (c) 2013 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 os
import unittest
from telemetry import browser_finder
-from telemetry import facebook_credentials_backend
from telemetry import simple_mock
from telemetry import options_for_unittests
@@ -17,7 +16,10 @@ class MockTab(simple_mock.MockObject):
self.runtime = simple_mock.MockObject(self)
self.page = simple_mock.MockObject(self)
-class TestFacebookCredentialsBackend(unittest.TestCase):
+class FormBasedCredentialsBackendUnitTestBase(unittest.TestCase):
+ def setUp(self):
+ self._credentials_type = None
+
def testRealLoginIfPossible(self):
credentials_path = os.path.join(
os.path.dirname(__file__),
@@ -28,9 +30,9 @@ class TestFacebookCredentialsBackend(unittest.TestCase):
options = options_for_unittests.GetCopy()
with browser_finder.FindBrowser(options).Create() as b:
b.credentials.credentials_path = credentials_path
- if not b.credentials.CanLogin('facebook'):
+ if not b.credentials.CanLogin(self._credentials_type):
return
- ret = b.credentials.LoginNeeded(b.tabs[0], 'facebook')
+ ret = b.credentials.LoginNeeded(b.tabs[0], self._credentials_type)
self.assertTrue(ret)
def testRealLoginWithDontOverrideProfileIfPossible(self):
@@ -41,45 +43,69 @@ class TestFacebookCredentialsBackend(unittest.TestCase):
return
options = options_for_unittests.GetCopy()
- options.dont_override_profile = True
# Login once to make sure our default profile is logged in.
with browser_finder.FindBrowser(options).Create() as b:
b.credentials.credentials_path = credentials_path
- if not b.credentials.CanLogin('facebook'):
+
+ if not b.credentials.CanLogin(self._credentials_type):
return
- ret = b.credentials.LoginNeeded(b.tabs[0], 'facebook')
+
+ tab = b.tabs[0]
+
+ # Should not be logged in, since this is a fresh credentials
+ # instance.
+ self.assertFalse(b.credentials.IsLoggedIn(self._credentials_type))
+
+ # Log in.
+ ret = b.credentials.LoginNeeded(tab, self._credentials_type)
+
+ # Make sure login was successful.
self.assertTrue(ret)
+ self.assertTrue(b.credentials.IsLoggedIn(self._credentials_type))
- # Second time will test that we behave correctly if we're logged in,
- # but our b.credentials doesn't know yet.
- with browser_finder.FindBrowser(options).Create() as b:
- b.credentials.credentials_path = credentials_path
- if not b.credentials.CanLogin('facebook'):
- return
- ret = b.credentials.LoginNeeded(b.tabs[0], 'facebook')
+ # Reset state. Now the backend thinks we're logged out, even
+ # though we are logged in in our current browser session. This
+ # simulates the effects of running with --dont-override-profile.
+ b.credentials._ResetLoggedInState() # pylint: disable=W0212
+
+ # Make sure the backend thinks we're logged out.
+ self.assertFalse(b.credentials.IsLoggedIn(self._credentials_type))
+ self.assertTrue(b.credentials.CanLogin(self._credentials_type))
+
+ # Attempt to login again. This should detect that we've hit
+ # the 'logged in' page instead of the login form, and succeed
+ # instead of timing out.
+ ret = b.credentials.LoginNeeded(tab, self._credentials_type)
+
+ # Make sure our login attempt did in fact succeed and set the
+ # backend's internal state to 'logged in'.
self.assertTrue(ret)
+ self.assertTrue(b.credentials.IsLoggedIn(self._credentials_type))
+
+ def testLoginUsingMock(self):
+ raise NotImplementedError()
- def testLoginUsingMock(self): # pylint: disable=R0201
+ def _LoginUsingMock(self, backend, login_page_url, email_element_id,
+ password_element_id): # pylint: disable=R0201
tab = MockTab()
- backend = facebook_credentials_backend.FacebookCredentialsBackend()
config = {'username': 'blah',
'password': 'blargh'}
- tab.page.ExpectCall('Navigate', 'http://www.facebook.com/')
+ tab.page.ExpectCall('Navigate', login_page_url)
tab.runtime.ExpectCall('Evaluate', _).WillReturn(False)
tab.runtime.ExpectCall('Evaluate', _).WillReturn(True)
tab.runtime.ExpectCall('Evaluate', _).WillReturn(False)
tab.ExpectCall('WaitForDocumentReadyStateToBeInteractiveOrBetter')
def VerifyEmail(js):
- assert 'email' in js
+ assert email_element_id in js
assert 'blah' in js
tab.runtime.ExpectCall('Execute', _).WhenCalled(VerifyEmail)
def VerifyPw(js):
- assert 'pass' in js
+ assert password_element_id in js
assert 'largh' in js
tab.runtime.ExpectCall('Execute', _).WhenCalled(VerifyPw)
@@ -91,4 +117,3 @@ class TestFacebookCredentialsBackend(unittest.TestCase):
tab.runtime.ExpectCall('Evaluate', _).WillReturn(False)
backend.LoginNeeded(tab, config)
-

Powered by Google App Engine
This is Rietveld 408576698