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_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)