Пример #1
0
def test_send_response_file_list_fails_for_draft_questionnaire_for_inspector(
        client):
    questionnaire = factories.QuestionnaireFactory(is_draft=True)
    user = utils.make_inspector_user(questionnaire.control)
    utils.login(client, user=user)
    url = reverse('send-response-file-list', args=[questionnaire.id])
    response = client.get(url)
    assert response.status_code != 200
Пример #2
0
def test_an_action_log_is_added_on_user_login(client):
    user = factories.UserFactory()
    count_before = user.actor_actions.filter(
        verb__icontains='logged in').count()
    utils.login(client, user=user)
    count_after = user.actor_actions.filter(
        verb__icontains='logged in').count()
    assert count_after == count_before + 1
Пример #3
0
 def test_admin_can_create_managers_deposit(self):
     token = login(self, '*****@*****.**', 'password1')
     resp = create_deposit(self, token, msg='manager', user_id=3)
     self.assertIn('manager', resp.data.decode('utf-8'))
     # read to verify
     token = login(self, '*****@*****.**', 'password1')
     resp = send_get_request(self, 'api/v1/deposits/1', token=token)
     self.assertIn('manager', resp.data.decode('utf-8'))
Пример #4
0
 def test_admin_can_create_normals_task(self):
     token = login(self, '*****@*****.**', 'password')
     resp = create_task(self, token, msg='normal', user_id=5)
     self.assertIn('normal', resp.data.decode('utf-8'))
     # read to verify
     token = login(self, '*****@*****.**', 'password')
     resp = send_get_request(self, 'api/v1/tasks/1', token=token)
     self.assertIn('normal', resp.data.decode('utf-8'))
Пример #5
0
def test_can_access_question_api_if_control_is_associated_with_the_user():
    question = factories.QuestionFactory()
    user = factories.UserFactory()
    user.profile.controls.add(question.theme.questionnaire.control)
    user.profile.save()
    utils.login(client, user=user)
    url = reverse('api:question-detail', args=[question.id])
    response = client.get(url)
    assert response.status_code == 200
Пример #6
0
def test_login_logout(driver, root_url, existing_credentials):
    driver.get(root_url)
    utils.login(driver, existing_credentials)

    logout_button = driver.find_element_by_xpath(
        '//nav//a//*[contains(text(), "Logout")]')
    logout_button.click()

    email_input = driver.find_element_by_css_selector('input[name="email"]')
Пример #7
0
def test_user_who_agreed_to_tos_is_not_redirected():
    user = make_user(agreed_to_tos=True)

    utils.login(client, user=user)
    url = reverse('questionnaire-list')

    response = client.get(url)

    assert response.status_code == 200
Пример #8
0
def test_without_hostname(flask_client):
    login(flask_client)

    r = flask_client.post(
        url_for("api.new_random_alias"),
    )

    assert r.status_code == 201
    assert r.json["alias"].endswith(EMAIL_DOMAIN)
Пример #9
0
def test_setup_done(flask_client):
    login(flask_client)

    r = flask_client.get(url_for("dashboard.setup_done"), )

    assert r.status_code == 302
    # user is redirected to the dashboard page
    assert r.headers["Location"].endswith("/dashboard/")
    assert "setup_done=true" in r.headers["Set-Cookie"]
Пример #10
0
def test_delete_twice_raise_404():
    inspector = factories.UserProfileFactory(profile_type=UserProfile.INSPECTOR)
    control = factories.ControlFactory()
    inspector.controls.add(control)
    utils.login(client, user=inspector.user)
    url = reverse('api:deletion-delete-control', args=[control.pk])
    control.delete()
    response = client.post(url)
    assert response.status_code == 404
Пример #11
0
def test_user_who_agreed_to_tos_is_not_redirected(client):
    user = make_user(agreed_to_tos=True)

    utils.login(client, user=user)
    url = reverse('control-detail')

    response = client.get(url)

    assert response.status_code == 200
Пример #12
0
def test_profile(minclient):
    """Test that the profile page url works."""
    app, client = minclient
    with app.test_request_context():
        u = User.query.get(2)
        login(u, client)
        url = url_for('user.profile', user_id=u.id)
    rv = client.get(url)
    assert bytes(u.displayname, 'utf-8') in rv.data
Пример #13
0
def test_user_who_did_not_agree_to_tos_is_redirected(client):
    user = make_user(agreed_to_tos=False)
    utils.login(client, user=user)
    url = reverse('control-detail')

    response = client.get(url)

    assert response.status_code == 302
    assert response.url == reverse('welcome')
Пример #14
0
    def __init__(self, client):
        questionnaire = factories.QuestionnaireFactory(is_draft=False)
        self.filename = questionnaire.basename

        user = utils.make_audited_user(questionnaire.control)

        utils.login(client, user=user)
        url = reverse('send-questionnaire-file', args=[questionnaire.id])

        self.response = client.get(url)
Пример #15
0
def test_do_not_redirect_logout(client):
    user = make_user(agreed_to_tos=False)
    utils.login(client, user=user)
    url = reverse('logout')

    response = client.get(url)

    # redirected but not to welcome
    assert response.status_code == 302
    assert response.url != reverse('welcome')
Пример #16
0
def test_download_question_file_fails_if_the_control_is_not_associated_with_the_user(
        client):
    question_file = factories.QuestionFileFactory()
    unauthorized_control = factories.ControlFactory()
    assert unauthorized_control != question_file.question.theme.questionnaire.control
    user = utils.make_audited_user(unauthorized_control)
    utils.login(client, user=user)
    url = reverse('send-question-file', args=[question_file.id])
    response = client.get(url)
    assert response.status_code != 200
Пример #17
0
def test_create_random_alias_success(flask_client):
    login(flask_client)
    assert Alias.query.count() == 1

    r = flask_client.post(
        url_for("dashboard.index"),
        data={"form-name": "create-random-email"},
        follow_redirects=True,
    )
    assert r.status_code == 200
    assert Alias.query.count() == 2
Пример #18
0
def access_control_page(client, page_name, is_control_associated_with_user, profile_type):
    control = factories.ControlFactory()
    if is_control_associated_with_user:
        user = utils.make_user(profile_type, control)
    else:
        user = utils.make_user(profile_type, None)

    utils.login(client, user=user)
    url = reverse(page_name, args=[control.id])
    response = client.get(url)
    return response
Пример #19
0
 def __init__(self, client):
     response_file = factories.ResponseFileFactory()
     self.filename = response_file.basename
     user = response_file.author
     user.profile.controls.add(
         response_file.question.theme.questionnaire.control)
     user.profile.agreed_to_tos = True
     user.profile.save()
     utils.login(client, user=response_file.author)
     url = reverse('send-response-file', args=[response_file.id])
     self.response = client.get(url)
Пример #20
0
def test_response_file_listed_in_question_endpoint():
    response_file = factories.ResponseFileFactory()
    user = response_file.author
    question = response_file.question
    user.profile.controls.add(
        response_file.question.theme.questionnaire.control)
    user.profile.save()
    utils.login(client, user=response_file.author)
    url = reverse('api:question-detail', args=[question.id])
    response = client.get(url)
    assert response_file.basename in str(response.content)
Пример #21
0
def test_audited_cannot_delete_a_control():
    audited = factories.UserProfileFactory(profile_type=UserProfile.AUDITED)
    control = factories.ControlFactory()
    audited.controls.add(control)
    utils.login(client, user=audited.user)
    url = reverse('api:deletion-delete-control', args=[control.pk])
    count_before = Control.objects.active().count()
    response = client.post(url)
    count_after = Control.objects.active().count()
    assert count_after == count_before
    assert response.status_code == 403
Пример #22
0
def test_get_setting(flask_client):
    login(flask_client)

    r = flask_client.get("/api/setting")
    assert r.status_code == 200
    assert r.json == {
        "alias_generator": "word",
        "notification": True,
        "random_alias_default_domain": "sl.local",
        "sender_format": "AT",
    }
Пример #23
0
def test_inspector_can_delete_a_control():
    inspector = factories.UserProfileFactory(profile_type=UserProfile.INSPECTOR)
    control = factories.ControlFactory()
    inspector.controls.add(control)
    utils.login(client, user=inspector.user)
    url = reverse('api:deletion-delete-control', args=[control.pk])
    count_before = Control.objects.active().count()
    response = client.post(url)
    count_after = Control.objects.active().count()
    assert count_after == count_before - 1
    assert response.status_code == 200
Пример #24
0
def test_create_contact_route_invalid_contact_email(flask_client):
    login(flask_client)
    alias = Alias.query.first()

    r = flask_client.post(
        url_for("api.create_contact_route", alias_id=alias.id),
        json={"contact": "with [email protected]"},
    )

    assert r.status_code == 400
    assert r.json["error"] == "invalid contact email with [email protected]"
Пример #25
0
def test_create_contact_route_empty_contact_address(flask_client):
    login(flask_client)
    alias = Alias.query.first()

    r = flask_client.post(
        url_for("api.create_contact_route", alias_id=alias.id),
        json={"contact": ""},
    )

    assert r.status_code == 400
    assert r.json["error"] == "Contact cannot be empty"
Пример #26
0
def test_wrongly_formatted_payload(flask_client):
    login(flask_client)

    r = flask_client.post(
        "/api/v3/alias/custom/new",
        json="string isn't a dict",
    )

    assert r.status_code == 400
    assert r.json == {
        "error": "request body does not follow the required format"
    }
Пример #27
0
def test_create_directory(flask_client):
    login(flask_client)

    r = flask_client.post(
        url_for("dashboard.directory"),
        data={"form-name": "create", "name": "test"},
        follow_redirects=True,
    )

    assert r.status_code == 200
    assert f"Directory test is created" in r.data.decode()
    assert Directory.get_by(name="test") is not None
Пример #28
0
def test_no_access_to_questionnaire_page_if_control_is_not_associated_with_the_user(
        client):
    questionnaire = factories.QuestionnaireFactory()
    user = factories.UserFactory()
    unautorized_control = factories.ControlFactory()
    assert unautorized_control != questionnaire.control
    user.profile.controls.add(unautorized_control)
    user.profile.save()
    utils.login(client, user=user)
    url = reverse('questionnaire-detail', args=[questionnaire.id])
    response = client.get(url)
    assert response.status_code != 200
    def __init__(self, client):
        questionnaire = factories.QuestionnaireFactory()
        self.filename = questionnaire.basename

        user = factories.UserFactory()
        user.profile.controls.add(questionnaire.control)
        user.profile.save()

        utils.login(client, user=user)
        url = reverse('send-questionnaire-file', args=[questionnaire.id])

        self.response = client.get(url)
Пример #30
0
def test_download_response_file_fails_if_the_control_is_not_associated_with_the_user(
        client):
    response_file = factories.ResponseFileFactory()
    user = response_file.author
    unauthorized_control = factories.ControlFactory()
    assert unauthorized_control != response_file.question.theme.questionnaire.control
    user.profile.controls.add(unauthorized_control)
    user.profile.save()
    utils.login(client, user=response_file.author)
    url = reverse('send-response-file', args=[response_file.id])
    response = client.get(url)
    assert response.status_code != 200