~mardy/ubuntu-system-settings-online-accounts/autopilot

« back to all changes in this revision

Viewing changes to tests/autopilot/online_accounts_ui/tests/test_online_accounts_ui.py

Tags: 0.3+14.04.20140307.1-0ubuntu1
Manual sync as CI/LP failed in last week's landing.

ubuntu-system-settings-online-accounts (0.3+14.04.20140307.1-0ubuntu1) trusty; urgency=low

  * New rebuild forced

 -- Ubuntu daily release <ps-jenkins@lists.canonical.com>  Fri, 07 Mar 2014 08:37:17 +0000

ubuntu-system-settings-online-accounts (0.3+14.04.20140304.is.0.2~+14.04.20131205-0ubuntu1) trusty; urgency=medium

  * Reverting as desktop image isn't installable (main/universe
    mismatch) and causing all signon-ui tests on Touch failing

 -- Didier Roche <didrocks@ubuntu.com>  Wed, 05 Mar 2014 12:20:04 +0100

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
from autopilot.input import Mouse, Touch, Pointer
13
13
from autopilot.platform import model
14
14
from autopilot.matchers import Eventually
15
 
from subprocess import Popen
16
15
from testtools.matchers import Contains, Equals, NotEquals, GreaterThan
17
16
from time import sleep
18
17
import BaseHTTPServer, SimpleHTTPServer, SocketServer, ssl, cgi
19
18
import threading
20
19
import oauth.oauth as oauth
21
 
import os
22
20
 
23
21
from online_accounts_ui.emulators.items import EmulatorBase
24
22
 
258
256
            return
259
257
 
260
258
        self.pointer = Pointer(self.input_device_class.create())
261
 
        # Increase the timeout of online-accounts-ui, to make sure it won't
262
 
        # quit before the system settings panel asks it to open.
263
 
        self.patch_environment('OAU_DAEMON_TIMEOUT', '120')
264
 
        self.app = self.launch_test_application('online-accounts-ui',
265
 
                '--desktop_file_hint=/usr/share/applications/online-accounts-ui.desktop',
 
259
        self.app = self.launch_test_application('system-settings', 'online-accounts',
 
260
                '--desktop_file_hint=/usr/share/applications/ubuntu-system-settings.desktop',
266
261
                app_type='qt',
267
262
                emulator_base=EmulatorBase,
268
263
                capture_output=True)
269
 
        self.system_settings = Popen(['system-settings', 'online-accounts',
270
 
            '--desktop_file_hint=/usr/share/applications/ubuntu-system-settings.desktop'])
271
 
        sleep(1)
272
264
        self.window = self.app.select_single("QQuickView")
273
265
        self.assertThat(self.window.visible, Eventually(Equals(True)))
274
266
 
275
 
    def tearDown(self):
276
 
        super(OnlineAccountsUiTests, self).tearDown()
277
 
        self.system_settings.terminate()
278
 
 
279
267
    def test_title(self):
280
268
        """ Checks whether the Online Accounts window title is correct """
281
269
        # On the phone, this fails because of https://bugs.launchpad.net/bugs/1252294
284
272
 
285
273
        header = self.window.select_single('Header', visible=True)
286
274
        self.assertThat(header, NotEquals(None))
287
 
        self.assertThat(header.title, Eventually(Equals('Online Accounts')))
 
275
        self.assertThat(header.title, Eventually(Equals('Accounts')))
288
276
 
289
277
    def test_available_providers(self):
290
278
        """ Checks whether all the expected providers are available """
299
287
            provider_item = self.app.select_single('Standard', text=provider)
300
288
            self.assertThat(provider_item, NotEquals(None))
301
289
 
302
 
    def test_create_account_with_form(self):
303
 
        """ Test the creation of an account using a username/password form"""
304
 
        page = self.app.select_single('NoAccountsPage')
305
 
        self.assertThat(page, NotEquals(None))
306
 
 
307
 
        provider_item = self.app.select_single('Standard', text='TestLogin')
308
 
        self.assertThat(provider_item, NotEquals(None))
309
 
 
310
 
        # Depending on the number of installed providers, it may be that our
311
 
        # test provider is not visible; in that case, scroll the page
312
 
        self.pointer.move_to_object(page)
313
 
        (page_center_x, page_center_y) = self.pointer.position()
314
 
        page_bottom = page.globalRect[1] + page.globalRect[3]
315
 
        while provider_item.center[1] > page_bottom - 20:
316
 
            self.pointer.move(page_center_x, page_center_y)
317
 
            self.pointer.press()
318
 
            self.pointer.move(page_center_x, page_center_y - provider_item.height * 2)
319
 
            # wait some time before releasing, to avoid a flick
320
 
            sleep(0.2)
321
 
            self.pointer.release()
322
 
        self.pointer.move_to_object(provider_item)
323
 
        self.pointer.click()
324
 
 
325
 
        # Move to the username field
326
 
        username_field = self.app.select_single('TextField', objectName='usernameField')
327
 
        self.pointer.move_to_object(username_field)
328
 
        self.pointer.click()
329
 
        self.keyboard.type('pinkuser')
330
 
        self.keyboard.press_and_release('Tab')
331
 
        self.keyboard.type('lolcat')
332
 
        # Submit
333
 
        continue_btn = self.app.select_single('Button', objectName='continueButton')
334
 
        self.pointer.move_to_object(continue_btn)
335
 
        self.pointer.click()
336
 
 
337
 
        # The account should be created shortly
338
 
        sleep(5)
339
 
        account_item = self.app.select_single('AccountItem', text='TestLogin')
340
 
        self.assertThat(account_item, NotEquals(None))
341
 
        self.assertThat(account_item.subText, Equals('pinkuser'))
342
 
 
343
 
        # Delete it
344
 
        self.pointer.move_to_object(account_item)
345
 
        self.pointer.click()
346
 
 
347
 
        sleep(1)
348
 
        edit_page = self.app.select_single('AccountEditPage')
349
 
        self.assertThat(edit_page, NotEquals(None))
350
 
        remove_button = edit_page.select_single('Button')
351
 
        self.assertThat(remove_button, NotEquals(None))
352
 
        self.pointer.move_to_object(remove_button)
353
 
        self.pointer.click()
354
 
 
355
 
        sleep(1)
356
 
        removal_page = self.app.select_single('RemovalConfirmation')
357
 
        self.assertThat(removal_page, NotEquals(None))
358
 
        remove_button = removal_page.select_single('Button', text='Remove')
359
 
        self.assertThat(remove_button, NotEquals(None))
360
 
        self.pointer.move_to_object(remove_button)
361
 
        self.pointer.click()
362
 
 
363
 
        # Check that the account has been deleted
364
 
        sleep(2) # weird: with 1 second only, org.freedesktop.DBus.Error.NoReply is received
365
 
        account_item = self.app.select_single('AccountItem', text='TestLogin')
366
 
        self.assertThat(account_item, Equals(None))
367
 
 
368
290
    def test_create_oauth1_account(self):
369
291
        """ Test the creation of an OAuth 1.0 account """
370
292
        # On the phone, this fails because of https://bugs.launchpad.net/bugs/1231968
384
306
        self.pointer.move_to_object(page)
385
307
        (page_center_x, page_center_y) = self.pointer.position()
386
308
        page_bottom = page.globalRect[1] + page.globalRect[3]
387
 
        while provider_item.center[1] > page_bottom - 20:
 
309
        while provider_item.center[1] > page_bottom:
388
310
            self.pointer.move(page_center_x, page_center_y)
389
311
            self.pointer.press()
390
312
            self.pointer.move(page_center_x, page_center_y - provider_item.height * 2)
448
370
        self.pointer.click()
449
371
 
450
372
        # Check that the account has been deleted
451
 
        sleep(2)
 
373
        sleep(1)
452
374
        account_item = self.app.select_single('AccountItem', text='FakeOAuth')
453
375
        self.assertThat(account_item, Equals(None))
454
376
 
472
394
        self.pointer.move_to_object(page)
473
395
        (page_center_x, page_center_y) = self.pointer.position()
474
396
        page_bottom = page.globalRect[1] + page.globalRect[3]
475
 
        while provider_item.center[1] > page_bottom - 20:
 
397
        while provider_item.center[1] > page_bottom:
476
398
            self.pointer.move(page_center_x, page_center_y)
477
399
            self.pointer.press()
478
400
            self.pointer.move(page_center_x, page_center_y - provider_item.height * 2)
538
460
        self.pointer.click()
539
461
 
540
462
        # Check that the account has been deleted
541
 
        sleep(2)
 
463
        sleep(1)
542
464
        account_item = self.app.select_single('AccountItem', text='FakeOAuth')
543
465
        self.assertThat(account_item, Equals(None))