Exemple #1
0
def test_home_after_adding_article(selenium, mock_server):
    register_valid_user(selenium)
    assert (
        selenium.find_element_by_class_name('articles-msg').text
        == "No articles. Add one !"
    )

    url = f'http://localhost:{mock_server.port}/html_ok'
    add_valid_article_with_tag(selenium, url)

    selenium.get(f"{URL}")
    WebDriverWait(selenium, 10).until(
        EC.text_to_be_present_in_element(
            (By.CLASS_NAME, 'articles-msg'), '1 article'
        )
    )

    card = selenium.find_element_by_class_name('card')
    assert 'default' in card.find_element_by_class_name('badge-rdltr').text
    assert (
        'this is a title' in card.find_element_by_class_name('card-title').text
    )
    assert (
        'test_tag' in card.find_element_by_class_name('badge-rdltr-tag').text
    )

    assert 'page 1 / 1' in selenium.find_element_by_id('pagination').text
Exemple #2
0
def test_settings_update_tags(selenium):
    register_valid_user(selenium)
    selenium.get(f"{URL}settings/tags")

    add_button = selenium.find_elements_by_tag_name("button")[1]
    add_button.click()

    # add a tag
    fill_form(selenium, {"name": "python"}, is_category=False)
    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert "python" in tbody_td[1].text
    assert "0" in tbody_td[2].text
    edit_icon = tbody_td[3].find_element_by_class_name("fa-pencil")
    assert len(tbody_td[3].find_elements_by_class_name("fa-trash")) == 1

    # edit the tag
    edit_icon.click()

    fill_form(selenium, {"name": "tests"}, is_category=False)
    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert "tests" in tbody_td[1].text

    # delete the tag
    tbody_td[3].find_element_by_class_name("fa-trash").click()

    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert tbody_td == []
Exemple #3
0
def test_settings_display_tags(selenium):
    register_valid_user(selenium)
    selenium.get(f"{URL}settings")

    box = selenium.find_element_by_class_name("rdltr-box")
    box.find_elements_by_tag_name("button")[1].click()

    container = selenium.find_element_by_class_name("container")
    rows = container.find_elements_by_class_name("row")

    buttons = rows[0].find_elements_by_tag_name("button")
    back_to_settings = buttons[0]
    assert 'Back to settings' in back_to_settings.text
    assert 'Add a tag' in buttons[1].text

    rows[1].find_elements_by_tag_name("input")
    assert 'Search' in rows[1].find_element_by_tag_name("span").text

    table = rows[2].find_element_by_tag_name("table")
    thead_th = table.find_element_by_tag_name(
        "thead").find_elements_by_tag_name("th")
    assert "Id" in thead_th[0].text
    assert "Name" in thead_th[1].text
    assert "Nb articles" in thead_th[2].text
    assert "Action" in thead_th[3].text
    tbody_td = table.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert tbody_td == []
Exemple #4
0
def test_settings_display_tags(selenium: WebDriver) -> None:
    register_valid_user(selenium)
    selenium.get(f'{URL}settings')

    box = selenium.find_element_by_class_name('rdltr-box')
    box.find_elements_by_tag_name('button')[1].click()

    container = selenium.find_element_by_class_name('container')
    rows = container.find_elements_by_class_name('row')

    buttons = rows[0].find_elements_by_tag_name('button')
    back_to_settings = buttons[0]
    assert 'Back to settings' in back_to_settings.text
    assert 'Add a tag' in buttons[1].text

    rows[1].find_elements_by_tag_name('input')
    assert 'Search' in rows[1].find_element_by_tag_name('span').text

    table = rows[2].find_element_by_tag_name('table')
    thead_th = table.find_element_by_tag_name(
        'thead').find_elements_by_tag_name('th')
    assert 'Id' in thead_th[0].text
    assert 'Name' in thead_th[1].text
    assert 'Nb articles' in thead_th[2].text
    assert 'Action' in thead_th[3].text
    tbody_td = table.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert tbody_td == []
Exemple #5
0
def test_register_ok(selenium):
    register_valid_user(selenium)
    nav = selenium.find_element_by_tag_name('nav').text
    assert "Register" not in nav
    assert "Log in" not in nav
    assert "Settings" in nav
    assert "Logout" in nav
Exemple #6
0
def test_settings_update_tags(selenium: WebDriver) -> None:
    register_valid_user(selenium)
    selenium.get(f'{URL}settings/tags')

    add_button = selenium.find_elements_by_tag_name('button')[1]
    add_button.click()

    # add a tag
    fill_form(selenium, {'name': 'python'}, is_category=False)
    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert 'python' in tbody_td[1].text
    assert '0' in tbody_td[2].text
    edit_icon = tbody_td[3].find_element_by_class_name('fa-pencil')
    assert len(tbody_td[3].find_elements_by_class_name('fa-trash')) == 1

    # edit the tag
    edit_icon.click()

    fill_form(selenium, {'name': 'tests'}, is_category=False)
    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert 'tests' in tbody_td[1].text

    # delete the tag
    tbody_td[3].find_element_by_class_name('fa-trash').click()

    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert tbody_td == []
Exemple #7
0
def test_settings_update_categories(selenium):
    register_valid_user(selenium)
    selenium.get(f"{URL}settings/categories")

    add_button = selenium.find_elements_by_tag_name("button")[1]
    add_button.click()

    # add a category
    form_values = {"name": "news", "description": "News category"}
    fill_form(selenium, form_values)
    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert "default" in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name("badge-rdltr-small")) == 1)
    assert "Default category" in tbody_td[2].text
    assert "0" in tbody_td[3].text
    assert "news" in tbody_td[6].text
    assert tbody_td[6].find_elements_by_class_name("badge-rdltr-small") == []
    assert "News category" in tbody_td[7].text
    assert "0" in tbody_td[8].text
    assert len(tbody_td[9].find_elements_by_class_name("fa-trash")) == 1

    # edit the category
    tbody_td[9].find_element_by_class_name("fa-pencil").click()

    form_values = {
        "name": "sports",
        "description": "All articles about sports",
    }
    fill_form(selenium, form_values)
    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert "default" in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name("badge-rdltr-small")) == 1)
    assert "Default category" in tbody_td[2].text
    assert "0" in tbody_td[3].text
    assert "sports" in tbody_td[6].text
    assert tbody_td[6].find_elements_by_class_name("badge-rdltr-small") == []
    assert "All articles about sports" in tbody_td[7].text
    assert "0" in tbody_td[8].text

    # delete the category
    tbody_td[9].find_element_by_class_name("fa-trash").click()

    tbody_td = selenium.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert len(tbody_td) == 5
    assert "default" in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name("badge-rdltr-small")) == 1)
    assert "Default category" in tbody_td[2].text
Exemple #8
0
def test_settings_update_categories(selenium: WebDriver) -> None:
    register_valid_user(selenium)
    selenium.get(f'{URL}settings/categories')

    add_button = selenium.find_elements_by_tag_name('button')[1]
    add_button.click()

    # add a category
    form_values = {'name': 'news', 'description': 'News category'}
    fill_form(selenium, form_values)
    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert 'default' in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name('badge-rdltr-small')) == 1)
    assert 'Default category' in tbody_td[2].text
    assert '0' in tbody_td[3].text
    assert 'news' in tbody_td[6].text
    assert tbody_td[6].find_elements_by_class_name('badge-rdltr-small') == []
    assert 'News category' in tbody_td[7].text
    assert '0' in tbody_td[8].text
    assert len(tbody_td[9].find_elements_by_class_name('fa-trash')) == 1

    # edit the category
    tbody_td[9].find_element_by_class_name('fa-pencil').click()

    form_values = {
        'name': 'sports',
        'description': 'All articles about sports',
    }
    fill_form(selenium, form_values)
    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert 'default' in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name('badge-rdltr-small')) == 1)
    assert 'Default category' in tbody_td[2].text
    assert '0' in tbody_td[3].text
    assert 'sports' in tbody_td[6].text
    assert tbody_td[6].find_elements_by_class_name('badge-rdltr-small') == []
    assert 'All articles about sports' in tbody_td[7].text
    assert '0' in tbody_td[8].text

    # delete the category
    tbody_td[9].find_element_by_class_name('fa-trash').click()

    tbody_td = selenium.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert len(tbody_td) == 5
    assert 'default' in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name('badge-rdltr-small')) == 1)
    assert 'Default category' in tbody_td[2].text
Exemple #9
0
def test_add_article_no_category_no_tag(selenium, mock_server):
    register_valid_user(selenium)

    menus = selenium.find_elements_by_class_name('menu')
    menus[3].click()

    url = f'http://localhost:{mock_server.port}/html_ok'
    link = selenium.find_element_by_id('link')
    link.send_keys(url)

    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    check_article(selenium, url)
Exemple #10
0
def test_add_article_empty_document(selenium, mock_server):
    register_valid_user(selenium)

    menus = selenium.find_elements_by_class_name('menu')
    menus[3].click()

    url = f'http://localhost:{mock_server.port}'
    link = selenium.find_element_by_id('link')
    link.send_keys(url)
    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    errors = selenium.find_element_by_class_name('alert-danger').text
    assert 'Error. Cannot parse the document.' in errors
Exemple #11
0
def test_add_article_invalid_url(selenium):
    register_valid_user(selenium)

    menus = selenium.find_elements_by_class_name('menu')
    menus[3].click()

    url = 'http://not-existing-url.not'
    link = selenium.find_element_by_id('link')
    link.send_keys(url)
    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    selenium.implicitly_wait(1)
    errors = selenium.find_element_by_class_name('alert-danger').text
    assert 'Error. Cannot connect to the URL, please check it.' in errors
Exemple #12
0
def test_password_update_ok(selenium):
    user_infos = register_valid_user(selenium)
    menus = selenium.find_elements_by_class_name('menu')
    menus[2].click()
    login_valid_user(selenium, user_infos)

    # click on user name
    menus = selenium.find_elements_by_class_name('menu')
    menus[0].click()

    # click on 'Change password'
    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    # update password
    new_password = '******'
    password = selenium.find_element_by_id('oldPassword')
    password.send_keys(user_infos.get('password'))

    password = selenium.find_element_by_id('password')
    password.send_keys(new_password)
    password_conf = selenium.find_element_by_id('confirm-password')
    password_conf.send_keys(new_password)

    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    # log out
    menus = selenium.find_elements_by_class_name('menu')
    menus[2].click()

    # log in
    user_infos['password'] = user_infos['password_conf'] = new_password
    login_valid_user(selenium, user_infos)
Exemple #13
0
def test_add_article_with_category_and_tag(selenium, mock_server):
    register_valid_user(selenium)
    url = f'http://localhost:{mock_server.port}/html_ok'
    add_valid_article_with_tag(selenium, url)

    WebDriverWait(selenium, 10).until(EC.url_changes(f'{URL}articles/add'))
    assert selenium.find_element_by_class_name('badge-rdltr').text == 'default'
    assert selenium.find_element_by_tag_name('h1').text == 'this is a title'
    assert (
        selenium.find_element_by_class_name('badge-rdltr-tag').text
        == 'test_tag'
    )
    assert url in selenium.find_element_by_class_name('article-data').text
    assert (
        selenium.find_element_by_id('article-content').text
        == 'this is a paragraph'
    )
Exemple #14
0
def test_add_article_url_not_found(selenium, mock_server):
    register_valid_user(selenium)

    menus = selenium.find_elements_by_class_name('menu')
    menus[3].click()

    url = f'http://localhost:{mock_server.port}/not_found'
    link = selenium.find_element_by_id('link')
    link.send_keys(url)
    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()

    errors = selenium.find_element_by_class_name('alert-danger').text
    assert (
        'Error. Cannot get the requested resource, '
        'please check the URL (code: 404)' in errors
    )
Exemple #15
0
def test_settings_display_categories(selenium):
    register_valid_user(selenium)
    menus = selenium.find_elements_by_class_name('menu')
    menus[1].click()

    box = selenium.find_element_by_class_name("rdltr-box")
    buttons = box.find_elements_by_tag_name("button")
    assert 'Categories' in buttons[0].text
    assert 'Tags' in buttons[1].text
    assert 'Back to home' in buttons[2].text

    buttons[0].click()

    container = selenium.find_element_by_class_name("container")
    rows = container.find_elements_by_class_name("row")

    buttons = rows[0].find_elements_by_tag_name("button")
    back_to_settings = buttons[0]
    assert 'Back to settings' in back_to_settings.text
    assert 'Add a category' in buttons[1].text

    rows[1].find_elements_by_tag_name("input")
    assert 'Search' in rows[1].find_element_by_tag_name("span").text

    # default category should exist. this category can not be deleted
    table = rows[2].find_element_by_tag_name("table")
    thead_th = table.find_element_by_tag_name(
        "thead").find_elements_by_tag_name("th")
    assert "Id" in thead_th[0].text
    assert "Name" in thead_th[1].text
    assert "Description" in thead_th[2].text
    assert "Nb articles" in thead_th[3].text
    assert "Action" in thead_th[4].text
    tbody_td = table.find_element_by_tag_name(
        "tbody").find_elements_by_tag_name("td")
    assert "default" in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name("badge-rdltr-small")) == 1)
    assert "Default category" in tbody_td[2].text
    assert "0" in tbody_td[3].text
    assert len(tbody_td[4].find_elements_by_class_name("fa-trash")) == 0
Exemple #16
0
def test_settings_display_categories(selenium: WebDriver) -> None:
    register_valid_user(selenium)
    menus = selenium.find_elements_by_class_name('menu')
    menus[1].click()

    box = selenium.find_element_by_class_name('rdltr-box')
    buttons = box.find_elements_by_tag_name('button')
    assert 'Categories' in buttons[0].text
    assert 'Tags' in buttons[1].text
    assert 'Back to home' in buttons[2].text

    buttons[0].click()

    container = selenium.find_element_by_class_name('container')
    rows = container.find_elements_by_class_name('row')

    buttons = rows[0].find_elements_by_tag_name('button')
    back_to_settings = buttons[0]
    assert 'Back to settings' in back_to_settings.text
    assert 'Add a category' in buttons[1].text

    rows[1].find_elements_by_tag_name('input')
    assert 'Search' in rows[1].find_element_by_tag_name('span').text

    # default category should exist. this category can not be deleted
    table = rows[2].find_element_by_tag_name('table')
    thead_th = table.find_element_by_tag_name(
        'thead').find_elements_by_tag_name('th')
    assert 'Id' in thead_th[0].text
    assert 'Name' in thead_th[1].text
    assert 'Description' in thead_th[2].text
    assert 'Nb articles' in thead_th[3].text
    assert 'Action' in thead_th[4].text
    tbody_td = table.find_element_by_tag_name(
        'tbody').find_elements_by_tag_name('td')
    assert 'default' in tbody_td[1].text
    assert (len(
        tbody_td[1].find_elements_by_class_name('badge-rdltr-small')) == 1)
    assert 'Default category' in tbody_td[2].text
    assert '0' in tbody_td[3].text
    assert len(tbody_td[4].find_elements_by_class_name('fa-trash')) == 0
Exemple #17
0
def test_add_article_from_bookmark_unauthenticated_user(selenium, mock_server):
    user_infos = register_valid_user(selenium)
    menus = selenium.find_elements_by_class_name('menu')
    menus[2].click()

    bookmark_url = f'http://localhost:{mock_server.port}/html_ok'
    selenium.get(f"{URL}bookmarklet?url={parse.quote(bookmark_url)}")

    email = selenium.find_element_by_id('email')
    email.send_keys(user_infos.get('email'))
    password = selenium.find_element_by_id('password')
    password.send_keys(user_infos.get('password'))
    submit_button = selenium.find_element_by_tag_name('button')
    submit_button.click()
    selenium.implicitly_wait(1)
    check_article(selenium, bookmark_url)
Exemple #18
0
def test_logout_and_login_ok(selenium):
    user_infos = register_valid_user(selenium)
    nav = selenium.find_element_by_tag_name('nav')
    nav_text = nav.text
    assert "Register" not in nav_text
    assert "Log in" not in nav_text
    assert "Logout" in nav_text

    menus = nav.find_elements_by_class_name('menu')
    menus[2].click()

    login_valid_user(selenium, user_infos)
    nav = selenium.find_element_by_tag_name('nav')
    nav_text = nav.text
    assert user_infos['username'] in nav_text
    assert "Settings" in nav_text
    assert "Logout" in nav_text
def test_logout_and_login_ok(selenium: WebDriver) -> None:
    user_infos = register_valid_user(selenium)
    nav = selenium.find_element_by_tag_name('nav')
    nav_text = nav.text
    assert 'Register' not in nav_text
    assert 'Log in' not in nav_text
    assert 'Logout' in nav_text

    menus = nav.find_elements_by_class_name('menu')
    menus[2].click()

    login_valid_user(selenium, user_infos)
    nav = selenium.find_element_by_tag_name('nav')
    nav_text = nav.text
    assert user_infos['username'] in nav_text
    assert 'Settings' in nav_text
    assert 'Logout' in nav_text
Exemple #20
0
def test_add_article_from_bookmark(selenium, mock_server):
    register_valid_user(selenium)
    bookmark_url = f'http://localhost:{mock_server.port}/html_ok'
    rdltr_url = f"{URL}bookmarklet?url={parse.quote(bookmark_url)}"
    selenium.get(rdltr_url)
    check_article(selenium, bookmark_url)