def do_user_can_invite_someone_to_notify(driver, basic_view): dashboard_page = DashboardPage(driver) dashboard_page.click_team_members_link() team_members_page = TeamMembersPage(driver) assert team_members_page.h1_is_team_members() team_members_page.click_invite_user() invite_user_page = InviteUserPage(driver) invited_user_randomness = str(uuid.uuid1()) invited_user_name = 'Invited User ' + invited_user_randomness invite_email = generate_unique_email(config['user']['email'], invited_user_randomness) if basic_view: invite_user_page.fill_invitation_form(invite_email, send_messages_only=True) else: invite_user_page.fill_invitation_form(invite_email, send_messages_only=False) invite_user_page.send_invitation() invite_user_page.sign_out() invite_user_page.wait_until_url_is(config['notify_admin_url']) # next part of interaction is from point of view of invitee # i.e. after visting invite_link we'll be registering using invite_email # but use same mobile number and password as profile invite_link = get_link( config['notify_templates']['invitation_template_id'], invite_email) driver.get(invite_link) register_from_invite_page = RegisterFromInvite(driver) register_from_invite_page.fill_registration_form(invited_user_name) register_from_invite_page.click_continue() do_verify(driver) dashboard_page = DashboardPage(driver) service_id = dashboard_page.get_service_id() dashboard_page.go_to_dashboard_for_service(service_id) assert dashboard_page.get_service_name() == config['service_name'] if basic_view: is_basic_view(dashboard_page) dashboard_page.sign_out() dashboard_page.wait_until_url_is(config['notify_admin_url']) else: is_view_for_all_permissions(dashboard_page)
def test_sign_in(driver, base_url, profile): try: sign_in_page = SignInPage(driver) sign_in_page.get() assert sign_in_page.is_current() sign_in_page.login(profile['email'], profile['password']) two_factor_page = TwoFactorPage(driver) assert two_factor_page.is_current() verify_code = get_verify_code() two_factor_page.verify(verify_code) dashboard_page = DashboardPage(driver) assert dashboard_page.is_current(profile['config'].SERVICE_ID) dashboard_page.sign_out() except Exception as e: message = "Test failure in sign in test for {}. Exception: {}".format(profile['config'].NOTIFY_ADMIN_URL, e) send_to_deskpro(profile['config'], message) pytest.fail(message)
def test_org_invite(driver, login_seeded_user): org_dashboard_page = OrganisationDashboardPage(driver) org_dashboard_page.go_to_dashboard_for_org( config['service']['organisation_id']) assert org_dashboard_page.is_current(config['service']['organisation_id']) org_dashboard_page.click_team_members_link() team_members_page = TeamMembersPage(driver) team_members_page.click_invite_user() # create a new user to log in to invited_user_email = generate_unique_email(config['user']['email'], uuid.uuid4()) invitation = InviteUserToOrgPage(driver) invitation.fill_invitation_form(email=invited_user_email) invitation.send_invitation() # now log out and create account as invited user dashboard_page = DashboardPage(driver) dashboard_page.sign_out() dashboard_page.wait_until_url_is(config['notify_admin_url']) invite_link = get_link( config['notify_templates']['org_invitation_template_id'], invited_user_email) driver.get(invite_link) register_from_invite_page = RegisterFromInvite(driver) register_from_invite_page.fill_registration_form( invited_user_email.split('@')[0]) register_from_invite_page.click_continue() do_verify(driver) org_dashboard_page = OrganisationDashboardPage(driver) # make sure we got to the dashboard page. It's their only account, so they'll be insta-redirected there. # They won't be able to see anything here tho since they're not a member of the service assert org_dashboard_page.is_current(config['service']['organisation_id'])
def do_user_can_invite_someone_to_notify(driver, profile, base_url): dashboard_page = DashboardPage(driver) dashboard_page.click_team_members_link() team_members_page = TeamMembersPage(driver) assert team_members_page.h1_is_team_members() team_members_page.click_invite_user() invite_user_page = InviteUserPage(driver) invited_user_randomness = str(uuid.uuid1()) invited_user_name = "Invited User " + invited_user_randomness invite_email = generate_unique_email(profile.email, invited_user_randomness) invite_user_page.fill_invitation_form(invite_email, send_messages=True) invite_user_page.send_invitation() invite_user_page.sign_out() invite_user_page.wait_until_url_is(base_url) # next part of interaction is from point of view of invitee # i.e. after visting invite_link we'll be registering using invite_email # but use same mobile number and password as profile invite_link = get_link(profile, profile.invitation_template_id, invite_email) driver.get(invite_link) register_from_invite_page = RegisterFromInvite(driver) register_from_invite_page.fill_registration_form(invited_user_name, profile) register_from_invite_page.click_continue() do_verify(driver, profile) dashboard_page = DashboardPage(driver) service_id = dashboard_page.get_service_id() dashboard_page.go_to_dashboard_for_service(service_id) assert dashboard_page.h2_is_service_name(profile.service_name) dashboard_page.sign_out() dashboard_page.wait_until_url_is(base_url)
def test_template_folder_permissions(driver, login_seeded_user): family_id = uuid.uuid4() folder_names = [ 'test-parent-folder {}'.format(family_id), 'test-child-folder {}'.format(family_id), 'test-grandchild-folder {}'.format(family_id), ] dashboard_page = DashboardPage(driver) dashboard_page.go_to_dashboard_for_service(config['service']['id']) dashboard_page.click_templates() show_templates_page = ShowTemplatesPage(driver) # a loop to create a folder structure with parent folder, child folder and grandchild folder, # each folder with one template in it for folder_name in folder_names: # create a new folder show_templates_page.click_add_new_folder(folder_name) show_templates_page.click_template_by_link_text(folder_name) # create a new template show_templates_page.click_add_new_template() show_templates_page.select_email() edit_template_page = EditEmailTemplatePage(driver) edit_template_page.create_template(name=(folder_name + "_template")) # go back to view folder page edit_template_page.click_folder_path(folder_name) # go to Team members page dashboard_page.click_team_members_link() team_members_page = TeamMembersPage(driver) # edit colleague's permissions so child folder is invisible team_members_page.click_edit_team_member( config['service']['email_auth_account']) edit_team_member_page = InviteUserPage(driver) edit_team_member_page.uncheck_folder_permission_checkbox(folder_names[1]) edit_team_member_page.click_save() # check if permissions saved correctly dashboard_page.click_team_members_link() team_members_page.click_edit_team_member( config['service']['email_auth_account']) assert not edit_team_member_page.is_checkbox_checked(folder_names[1]) # log out dashboard_page.sign_out() # log in as that colleague sign_in_email_auth(driver) # go to Templates dashboard_page.go_to_dashboard_for_service(config['service']['id']) dashboard_page.click_templates() # click through, see that child folder invisible show_templates_page.click_template_by_link_text(folder_names[0]) child_folder = show_templates_page.get_folder_by_name(folder_names[1]) name_of_folder_with_invisible_parent = folder_names[ 1] + " " + folder_names[2] assert child_folder.text == name_of_folder_with_invisible_parent # grandchild folder has folder path as a name show_templates_page.click_template_by_link_text( name_of_folder_with_invisible_parent) # click grandchild folder template to see that it's there show_templates_page.click_template_by_link_text(folder_names[2] + "_template") dashboard_page.sign_out() # delete everything sign_in(driver, seeded=True) dashboard_page.go_to_dashboard_for_service(config['service']['id']) dashboard_page.click_templates() show_templates_page = ShowTemplatesPage(driver) show_templates_page.click_template_by_link_text(folder_names[0]) view_folder_page = ViewFolderPage(driver) view_folder_page.click_template_by_link_text(folder_names[1]) view_folder_page.click_template_by_link_text(folder_names[2]) for folder_name in reversed(folder_names): view_folder_page.click_template_by_link_text(folder_name + "_template") template_page = EditEmailTemplatePage(driver) template_page.click_delete() view_folder_page.click_manage_folder() manage_folder_page = ManageFolderPage(driver) manage_folder_page.delete_folder() manage_folder_page.confirm_delete_folder()