1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-01 23:57:05 +00:00
mailinabox/tests/suites/nextcloud/contacts.py
2024-09-20 15:16:21 -04:00

98 lines
2.1 KiB
Python

#####
##### This file is part of Mail-in-a-Box-LDAP which is released under the
##### terms of the GNU Affero General Public License as published by the
##### Free Software Foundation, either version 3 of the License, or (at
##### your option) any later version. See file LICENSE or go to
##### https://github.com/downtownallday/mailinabox-ldap for full license
##### details.
#####
from browser.automation import (
TestDriver,
TimeoutException,
NoSuchElementException,
ElementNotInteractableException,
)
from browser.NextcloudAutomation import NextcloudAutomation
import sys
op = sys.argv[1]
login = sys.argv[2]
pw = sys.argv[3]
contact = {
'givenname': sys.argv[4],
'surname': sys.argv[5],
'email': sys.argv[6],
}
d = TestDriver()
nc = NextcloudAutomation(d)
try:
#
# open the browser to Nextcloud
#
# these tests work for both remote and local Nextclouds. nginx
# will redirect to a remote nextcloud during get(), if configured
#
d.start("Opening Nextcloud")
d.get("/cloud/")
nc.wait_for_login_screen()
d.say_verbose('url: ' + d.current_url())
#
# login
#
nc.login(login, pw)
nc.wait_for_app_load()
#
# open Contacts
#
d.start("Open contacts app")
try:
contacts = nc.open_contacts()
except NoSuchElementException:
nc.close_first_run_wizard()
contacts = nc.open_contacts()
nc.wait_for_app_load()
#
# handle selected operation
#
if op=='exists':
d.start("Check that contact %s exists", contact['email'])
contacts.click_contact(contact) # raises NoSuchElementException if not found
elif op=='delete':
d.start("Delete contact %s", contact['email'])
contacts.click_contact(contact)
contacts.wait_contact_loaded()
contacts.delete_current_contact()
elif op=='nop':
pass
else:
raise ValueError('Invalid operation: %s' % op)
#
# logout
#
d.start("Logout")
nc.logout()
nc.wait_for_login_screen()
#
# done
#
d.start("Success!")
except Exception as e:
d.fail(e)
raise
finally:
d.quit()