Exemplo n.º 1
0
    def test_view_redirects_to_profile_url_after_getting_of_valid_form_data(
        self, client, create_logged_in_user
    ):
        form_data = {
            "username": "******",
            "email": "*****@*****.**",
            "first_name": "test_first_name",
            "last_name": "test_last_name",
        }
        response = client.post(
            path=reverse("profile_change"),
            data=form_data,
        )
        assert response.status_code == 302
        assertRedirects(response, reverse("profile"))

        redirect_url = response.url
        next_response = client.get(redirect_url)

        assert next_response.status_code == 200
        assert next_response.context["user"].username == "new_test_username"

        for message in next_response.context["messages"]:
            if message.tags == "success":
                assert (
                    message.message == "User's personal data has been changed."
                )
Exemplo n.º 2
0
def test_index(client, admin_client):
    url = reverse('webapp.index')
    resp = client.get(url)
    assertRedirects(resp, reverse('webapp.login')+'?next='+url)

    resp = admin_client.get(url)
    assertTemplateUsed('index.html')
Exemplo n.º 3
0
def test_post_import_switzerland_mobility_route_with_checkpoints(
    athlete,
    client,
    switzerland_mobility_data_from_json,
    mock_import_route_call_response,
):
    route_json = "switzerland_mobility_route.json"
    geom, _ = switzerland_mobility_data_from_json(route_json)

    number_of_checkpoints = 5
    route = SwitzerlandMobilityRouteFactory.build(
        athlete=athlete, activity_type=ActivityTypeFactory(name="Run"))
    ActivityFactory(athlete=athlete, activity_type=route.activity_type)

    post_data = get_route_post_data(route)
    post_data["checkpoints"] = create_checkpoints_from_geom(
        geom, number_of_checkpoints)

    post_response = mock_import_route_call_response(
        data_source=route.data_source,
        source_id=route.source_id,
        api_response_json=route_json,
        method="post",
        post_data=post_data,
        follow_redirect=True,
    )

    # a new route has been created with the post response
    new_route = SwitzerlandMobilityRoute.objects.get(
        data_source=route.data_source,
        source_id=route.source_id,
        athlete=athlete)
    checkpoints = Checkpoint.objects.filter(route=new_route.pk)
    assert checkpoints.count() == number_of_checkpoints
    assertRedirects(post_response, new_route.get_absolute_url())
Exemplo n.º 4
0
    def test_view_redirects_to_profile_url_after_getting_of_valid_form_data(
        self, client, create_logged_in_user
    ):
        old_hash_password = User.objects.get(username="******").password
        form_data = {
            "old_password": "******",
            "new_password1": "new_test_password",
            "new_password2": "new_test_password",
        }
        response = client.post(
            path=reverse("password_change"),
            data=form_data,
        )
        assert response.status_code == 302
        assertRedirects(response, reverse("profile"))

        redirect_url = response.url
        next_response = client.get(redirect_url)

        assert next_response.status_code == 200
        assert next_response.context["user"].password != old_hash_password

        for message in next_response.context["messages"]:
            if message.tags == "success":
                assert message.message == "User password has been changed."
Exemplo n.º 5
0
def test_project_views_unauthenticated_permissions(
        client, project_url_names_to_fixtures, method, url_name):
    """Test unathorized requests cannot access project views"""
    url = project_url_names_to_fixtures[url_name]
    res = getattr(client, method)(url)

    assertRedirects(res, reverse('members:login') + '?next=' + url)
Exemplo n.º 6
0
def test_content_pages_links(client, parser, schedule, content_page_full_path):
    """Test to make sure all in-site links in a content page work.
    """
    if '/surveys/conference/' in content_page_full_path:
        pytest.skip("Skip for surveys/conference/ by purpose (or ask TP).")

    body = parser.parse(client.get(content_page_full_path))
    link_tags = body.cssselect('a[href^="/"]:not(a[href^="//"])')

    link_status_codes = []
    for tag in link_tags:
        link = tag.get('href')
        if "/events/schedule/" in link \
                and settings.SCHEDULE_REDIRECT_URL:
            assertRedirects(client.get(link),
                            settings.SCHEDULE_REDIRECT_URL,
                            fetch_redirect_response=False)
            continue
        try:
            status = client.get(link, follow=True).status_code
        except Exception:  # Catch internal server error for better reporting.
            status = 500
        link_status_codes.append((link, status))
    assert link_status_codes, 'isolated page: no links found'

    def get_error_message():
        errors = [
            '    {1} {0!r}'.format(*p) for p in link_status_codes
            if p[1] != 200
        ]
        if len(errors) == 1:
            return errors[0].lstrip()
        return 'Links do not return 200 status code\n' + '\n'.join(errors)

    assert all(p[1] == 200 for p in link_status_codes), get_error_message()
Exemplo n.º 7
0
def test_get_route_delete_not_logged(athlete, client):
    route = RouteFactory(athlete=athlete)
    url = route.get_absolute_url("delete")
    client.logout()
    response = client.get(url)

    redirect_url = "/login/?next=" + url
    assertRedirects(response, redirect_url)
Exemplo n.º 8
0
def test_create_feed_login_required(client, feed):
    url = reverse('feeds:update', args=(feed.pk,))
    data = {
        'name': 'Feed name',
    }
    response = client.post(url, data=data)
    expected_redirect_url = f'{reverse("accounts:login")}?next={url}'
    assertRedirects(response, expected_redirect_url)
Exemplo n.º 9
0
 def test_get_unauth(self, client: Client):
     response = client.get("/gifting/create/", follow=True)
     assertRedirects(
         response,
         "/users/login/?next=/gifting/create/",
         status_code=302,
         target_status_code=200,
     )
Exemplo n.º 10
0
def test_post_route_delete_view(athlete, client):
    route = RouteFactory(athlete=athlete)
    url = route.get_absolute_url("delete")
    post_data = {}
    response = client.post(url, post_data)

    redirect_url = reverse("routes:routes")
    assertRedirects(response, redirect_url)
Exemplo n.º 11
0
 def test_get_unauth(self, client: Client, ad: Ad):
     response = client.get(f"/gifting/{ad.pk}/delete/", follow=True)
     assertRedirects(
         response,
         f"/users/login/?next=/gifting/{ad.pk}/delete/",
         status_code=302,
         target_status_code=200,
     )
def test_protected_page_not_logged_in(client: Client) -> None:
    response = client.get(path=reverse("sample:protected"))
    assertRedirects(
        response,
        expected_url=reverse("account_login") + "?next=%2Fprotected%2F",
        status_code=HTTPStatus.FOUND,
        target_status_code=HTTPStatus.OK,
    )
Exemplo n.º 13
0
    def test_post_redirect_to_list_view(self, client):
        correct_list = List.objects.create()
        other_list = List.objects.create()

        text = 'some random test'
        response = client.post(f'/lists/{correct_list.id}/items/',
                               data={'new_item': text})

        assertRedirects(response, f'/lists/{correct_list.id}/')
Exemplo n.º 14
0
def test_get_strava_routes_connection_error(athlete, client):
    error = "Could not connect to the remote server. Try again later:"
    strava_routes_url = resolve_url("import_routes", data_source="strava")

    response = client.get(strava_routes_url, follow=False)
    redirected_response = client.get(strava_routes_url, follow=True)

    assertRedirects(response, reverse("routes:routes"))
    assertContains(redirected_response, error)
Exemplo n.º 15
0
 def test_post(self, user_client: Client, ad: Ad):
     response = user_client.post(f"/gifting/{ad.pk}/delete/", follow=True)
     assertRedirects(
         response,
         reverse("gifting:search"),
         status_code=302,
         target_status_code=200,
     )
     assert Ad.objects.all().exists() == False
Exemplo n.º 16
0
 def test_view_redirects_to_password_reset_done_url_after_getting_form_data(
     self, client, create_activated_user
 ):
     response = client.post(
         path=reverse("password_reset"),
         data={"email": "*****@*****.**"},
     )
     assert response.status_code == 302
     assertRedirects(response, reverse("password_reset_done"))
Exemplo n.º 17
0
def test_create_comment_login_required(client, feed_item):
    url = reverse('feed_items:create_comment')
    data = {
        'feed_item': feed_item.pk,
        'text': 'Comment text'
    }
    response = client.post(url, data=data)
    expected_redirect_url = f'{reverse("accounts:login")}?next={url}'
    assertRedirects(response, expected_redirect_url)
Exemplo n.º 18
0
def test_get_garmin_upload(athlete, client, gpx_route):
    upload_url = gpx_route.get_absolute_url("garmin_upload")
    route_url = gpx_route.get_absolute_url()

    with patch("homebytwo.routes.tasks.upload_route_to_garmin_task.delay"
               ) as mock_task:
        response = client.get(upload_url)
        assertRedirects(response, route_url)
        assert mock_task.called
Exemplo n.º 19
0
def test_upload_gpx_view(athlete, client, uploaded_file):
    gpx_file = uploaded_file("grammont.gpx")
    url = reverse("upload_gpx")
    response = client.post(url, data={"gpx": gpx_file})

    route = Route.objects.get(name="Grammont et Alamont")
    redirect_url = reverse("routes:edit", kwargs={"pk": route.pk})

    assert route.athlete == athlete
    assertRedirects(response, redirect_url)
Exemplo n.º 20
0
    def test_POST_redirects_to_list_view(self, client):
        other_list = List.objects.create()
        correct_list = List.objects.create()

        response = client.post(
            f"/lists/{correct_list.id}/",
            {"text": "A new item for existing list"},
        )

        test.assertRedirects(response, f"/lists/{correct_list.id}/")
Exemplo n.º 21
0
def test_login(client, admin_client):
    url = reverse('webapp.login')
    resp = client.get(url)
    assertTemplateUsed(resp, 'login.html')

    resp = client.post(url, {'username': '******', 'password': '******'})
    assertTemplateUsed(resp, 'login.html')
    assert resp.context.get('failed') == True

    resp = client.post(url, {'username': '******', 'password': '******'})
    assertRedirects(resp, reverse('webapp.index'))
Exemplo n.º 22
0
def test_member_views_unauthenticated_permissions(
    client, member_url_names_to_fixtures, method, url_name, should_succed
):
    """Test unathorized requests cannot access member views"""
    url = member_url_names_to_fixtures[url_name]
    res = getattr(client, method)(url)

    if should_succed:
        assert res.status_code == 200
    else:
        assertRedirects(res, reverse('members:login') + '?next=' + url)
Exemplo n.º 23
0
def test_codelistcreate_when_not_logged_in(client):
    p = ProjectFactory()
    csv_data = "code,description\n1067731000000107,Injury whilst swimming (disorder)"
    data = {
        "name": "Test Codelist",
        "coding_system_id": "snomedct",
        "description": "This is a test",
        "methodology": "This is how we did it",
        "csv_data": csv_builder(csv_data),
    }
    rsp = client.post(f"/codelist/{p.slug}/", data, follow=True)
    assertRedirects(rsp, f"/accounts/login/?next=%2Fcodelist%2F{p.slug}%2F")
Exemplo n.º 24
0
def test_redirect_when_strava_token_missing(athlete, client, mock_routes_response):
    asocial_athlete = AthleteFactory(
        user__password="******", user__social_auth=None
    )
    client.login(username=asocial_athlete.user.username, password="******")

    routes_url = resolve_url("import_routes", data_source="strava")
    response = client.get(routes_url)
    login_url = "{url}?{params}".format(
        url=reverse("login"), params=urlencode({"next": routes_url})
    )

    assertRedirects(response, login_url)
Exemplo n.º 25
0
def test_get_import_switzerland_mobility_route_redirect_to_login_with_import_id(
        athlete, client, mock_import_route_call_response):
    source_id = 123456789
    response = mock_import_route_call_response(
        data_source="switzerland_mobility",
        source_id=source_id,
        api_response_json="403.json",
        api_response_status=403,
    )

    params = urlencode({"import": source_id})
    redirect_url = reverse("switzerland_mobility_login") + "?" + params
    assertRedirects(response, redirect_url)
Exemplo n.º 26
0
def test_post_route_edit_form(athlete, client):
    route = RouteFactory(athlete=athlete, activity_type=ActivityTypeFactory())
    ActivityFactory(athlete=athlete, activity_type=route.activity_type)
    url = route.get_absolute_url("edit")
    post_data = {
        "name": route.name,
        "activity_type": route.activity_type.id,
    }

    response = client.post(url, post_data)
    redirect_url = route.get_absolute_url()

    assertRedirects(response, redirect_url)
Exemplo n.º 27
0
def test_get_update_switzerland_mobility_route_redirect_to_login_with_update_id(
        athlete, client, mock_sm_route_response):
    route = SwitzerlandMobilityRouteFactory(athlete=athlete)
    url = route.get_absolute_url("update")
    mock_sm_route_response(
        source_id=route.source_id,
        api_response_json="403.json",
        api_response_status=403,
    )
    response = client.get(url)

    params = urlencode({"update": route.pk})
    redirect_url = reverse("switzerland_mobility_login") + "?" + params
    assertRedirects(response, redirect_url)
Exemplo n.º 28
0
    def test_valid_redirect_user_logged_to_home_page(self, client, proto_user):
        """After login process, user should be redirect to home page."""

        response = client.post(
            reverse("login"),
            {
                "username": proto_user.username,
                "password": "******",
                "robot": True,
            },
            follow=True,
        )
        assert response.context["user"].is_authenticated
        assertRedirects(response, "/")
Exemplo n.º 29
0
def test_post_switzerland_mobility_login_update_id_bad(
        athlete, client, mock_login_response, mock_sm_routes_response):
    url = reverse("switzerland_mobility_login")
    params = urlencode({"update": "bad_id"})
    data = {"username": athlete.user.username, "password": "******"}
    mock_login_response()
    mock_sm_routes_response(athlete=athlete)
    response = client.post(f"{url}?{params}", data)

    mobility_cookies = client.session["switzerland_mobility_cookies"]
    redirect_url = resolve_url("import_routes",
                               data_source="switzerland_mobility")

    assertRedirects(response, redirect_url)
    assert mobility_cookies["mf-chmobil"] == "123"
Exemplo n.º 30
0
def test_checkin(client, admin_client):
    url = reverse('webapp.checkin')

    data = {'name': 'Someplace', 'lat': 100, 'lon': 200, 'address': '123'}
    resp = admin_client.get(url, data)

    user = User.objects.get(username='******')
    l = Location.objects.get(user=user)

    assert l.name == data['name']
    assert l.address == data['address']
    assert l.lat == float(data['lat'])
    assert l.lon == float(data['lon'])

    assertRedirects(resp, reverse('webapp.index'))