refactor: use Phoenix verified routes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2023-12-01 09:49:54 +01:00
parent 4f15535fa9
commit b315e1d7ff
83 changed files with 227 additions and 372 deletions

View File

@@ -29,7 +29,7 @@ defmodule Mobilizon.Federation.ActivityPub.UtilsTest do
"content" => "My Comment",
"actor" => reply.actor.url,
"uuid" => reply.uuid,
"id" => Routes.page_url(Endpoint, :comment, reply.uuid),
"id" => url(~p"/comments/#{reply.uuid}"),
"inReplyTo" => comment.url,
"attributedTo" => reply.actor.url,
"mediaType" => "text/html",

View File

@@ -18,7 +18,7 @@ defmodule Mobilizon.Service.MetadataTest do
assert group |> Metadata.build_tags() |> Metadata.Utils.stringify_tags() ==
String.trim("""
<meta content="#{group.name}" property="og:title"><meta content="#{URI.decode(Routes.page_url(Endpoint, :actor, Actor.preferred_username_and_domain(group)))}" property="og:url"><meta content="The event organizer didn&#39;t add any description." property="og:description"><meta content="profile" property="og:type"><meta content="#{Actor.preferred_username_and_domain(group)}" property="profile:username"><meta content="summary" property="twitter:card"><meta content="@joinmobilizon" property="twitter:site"><meta content="#{group.avatar.url}" property="og:image"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"#{group.name}","position":1}]}</script><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"My Country","addressLocality":"My Locality","addressRegion":"My Region","postalCode":"My Postal Code","streetAddress":"My Street Address"},"image":"#{group.banner.url}","name":"#{group.name}","url":"#{group.url}"}</script><link href="#{Routes.feed_url(Endpoint, :actor, Actor.preferred_username_and_domain(group), "atom")}" rel="alternate" title="#{group.name}'s feed" type="application/atom+xml"><link href="#{Routes.feed_url(Endpoint, :actor, Actor.preferred_username_and_domain(group), "ics")}" rel="alternate" title="#{group.name}'s feed" type="text/calendar"><link href="#{group.url}" rel="alternate" type="application/activity+json"><link href="#{group.url}" rel="canonical"><meta content="noindex" name="robots">
<meta content="#{group.name}" property="og:title"><meta content="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}")}" property="og:url"><meta content="The event organizer didn&#39;t add any description." property="og:description"><meta content="profile" property="og:type"><meta content="#{Actor.preferred_username_and_domain(group)}" property="profile:username"><meta content="summary" property="twitter:card"><meta content="@joinmobilizon" property="twitter:site"><meta content="#{group.avatar.url}" property="og:image"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"#{group.name}","position":1}]}</script><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"My Country","addressLocality":"My Locality","addressRegion":"My Region","postalCode":"My Postal Code","streetAddress":"My Street Address"},"image":"#{group.banner.url}","name":"#{group.name}","url":"#{group.url}"}</script><link href="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/atom")}" rel="alternate" title="#{group.name}'s feed" type="application/atom+xml"><link href="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/ics")}" rel="alternate" title="#{group.name}'s feed" type="text/calendar"><link href="#{group.url}" rel="alternate" type="application/activity+json"><link href="#{group.url}" rel="canonical"><meta content="noindex" name="robots">
""")
assert group
@@ -26,7 +26,7 @@ defmodule Mobilizon.Service.MetadataTest do
|> Metadata.build_tags()
|> Metadata.Utils.stringify_tags() ==
String.trim("""
<meta content="#{group.name}" property="og:title"><meta content="#{URI.decode(Routes.page_url(Endpoint, :actor, Actor.preferred_username_and_domain(group)))}" property="og:url"><meta content="The event organizer didn&#39;t add any description." property="og:description"><meta content="profile" property="og:type"><meta content="#{Actor.preferred_username_and_domain(group)}" property="profile:username"><meta content="summary" property="twitter:card"><meta content="@joinmobilizon" property="twitter:site"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"#{group.name}","position":1}]}</script><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"My Country","addressLocality":"My Locality","addressRegion":"My Region","postalCode":"My Postal Code","streetAddress":"My Street Address"},"image":"#{group.banner.url}","name":"#{group.name}","url":"#{group.url}"}</script><link href="#{Routes.feed_url(Endpoint, :actor, Actor.preferred_username_and_domain(group), "atom")}" rel="alternate" title="#{group.name}'s feed" type="application/atom+xml"><link href="#{Routes.feed_url(Endpoint, :actor, Actor.preferred_username_and_domain(group), "ics")}" rel="alternate" title="#{group.name}'s feed" type="text/calendar"><link href="#{group.url}" rel="alternate" type="application/activity+json"><link href="#{group.url}" rel="canonical"><meta content="noindex" name="robots">
<meta content="#{group.name}" property="og:title"><meta content="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}")}" property="og:url"><meta content="The event organizer didn&#39;t add any description." property="og:description"><meta content="profile" property="og:type"><meta content="#{Actor.preferred_username_and_domain(group)}" property="profile:username"><meta content="summary" property="twitter:card"><meta content="@joinmobilizon" property="twitter:site"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"#{group.name}","position":1}]}</script><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"My Country","addressLocality":"My Locality","addressRegion":"My Region","postalCode":"My Postal Code","streetAddress":"My Street Address"},"image":"#{group.banner.url}","name":"#{group.name}","url":"#{group.url}"}</script><link href="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/atom")}" rel="alternate" title="#{group.name}'s feed" type="application/atom+xml"><link href="#{URI.decode(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/ics")}" rel="alternate" title="#{group.name}'s feed" type="text/calendar"><link href="#{group.url}" rel="alternate" type="application/activity+json"><link href="#{group.url}" rel="canonical"><meta content="noindex" name="robots">
""")
end

View File

@@ -9,7 +9,7 @@ defmodule Mobilizon.Factory do
alias Mobilizon.Crypto
alias Mobilizon.Web.{Endpoint, Upload}
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
@spec user_factory :: Mobilizon.Users.User.t()
def user_factory do
@@ -173,7 +173,7 @@ defmodule Mobilizon.Factory do
origin_comment: nil,
is_announcement: false,
published_at: DateTime.utc_now(),
url: Routes.page_url(Endpoint, :comment, uuid)
url: url(~p"/comments/#{uuid}")
}
end
@@ -199,7 +199,7 @@ defmodule Mobilizon.Factory do
metadata: build_list(2, :event_metadata),
local: true,
publish_at: DateTime.utc_now(),
url: Routes.page_url(Endpoint, :event, uuid),
url: url(~p"/events/#{uuid}"),
picture: insert(:media),
uuid: uuid,
join_options: :free,
@@ -344,7 +344,7 @@ defmodule Mobilizon.Factory do
title: sequence("todo list"),
actor: build(:group),
id: uuid,
url: Routes.page_url(Endpoint, :todo_list, uuid),
url: url(~p"/todo-list/#{uuid}"),
published_at: DateTime.utc_now()
}
end
@@ -360,7 +360,7 @@ defmodule Mobilizon.Factory do
status: false,
due_date: Timex.shift(DateTime.utc_now(), hours: 2),
assigned_to: build(:actor),
url: Routes.page_url(Endpoint, :todo, uuid),
url: url(~p"/todo/#{uuid}"),
creator: build(:actor),
published_at: DateTime.utc_now()
}
@@ -379,7 +379,7 @@ defmodule Mobilizon.Factory do
actor: build(:group),
creator: build(:actor),
parent: nil,
url: Routes.page_url(Endpoint, :resource, uuid),
url: url(~p"/resource/#{uuid}"),
published_at: DateTime.utc_now(),
path: "/#{title}"
}
@@ -411,7 +411,7 @@ defmodule Mobilizon.Factory do
publish_at: DateTime.utc_now(),
picture: insert(:media),
media: [],
url: Routes.page_url(Endpoint, :post, uuid)
url: url(~p"/p/#{uuid}")
}
end
@@ -440,7 +440,7 @@ defmodule Mobilizon.Factory do
id: uuid,
last_comment: nil,
comments: [],
url: Routes.page_url(Endpoint, :discussion, group.preferred_username, slug)
url: ~p"/@#{group.preferred_username}/c/#{slug}"
}
end

View File

@@ -71,7 +71,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> get(Routes.page_url(Endpoint, :event, event.uuid))
|> get(url(~p"/events/#{event.uuid}"))
assert json_response(conn, 200) ==
PageView.render("event.activity-json", %{conn: %{assigns: %{object: event}}})
@@ -83,7 +83,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.page_url(Endpoint, :event, event.uuid))
|> get(url(~p"/events/#{event.uuid}"))
assert json_response(conn, 404)
end
@@ -94,7 +94,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.page_url(Endpoint, :event, event.uuid))
|> get(url(~p"/events/#{event.uuid}"))
assert redirected_to(conn) == "https://someremote.url/events/here"
end
@@ -107,7 +107,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.page_url(Endpoint, :comment, comment.uuid))
|> get(url(~p"/comments/#{comment.uuid}"))
assert json_response(conn, 200) ==
PageView.render("comment.activity-json", %{conn: %{assigns: %{object: comment}}})
@@ -119,7 +119,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.page_url(Endpoint, :comment, comment.uuid))
|> get(url(~p"/comments/#{comment.uuid}"))
assert redirected_to(conn) == "https://someremote.url/comments/here"
end
@@ -130,7 +130,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.page_url(Endpoint, :comment, comment.uuid))
|> get(url(~p"/comments/#{comment.uuid}"))
assert json_response(conn, 404)
end
@@ -567,7 +567,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn
|> assign(:actor, remote_actor_2)
|> put_req_header("accept", "application/activity+json")
|> get(Routes.activity_pub_url(Endpoint, :member, member.id))
|> get(url(~p"/member/#{member.id}"))
assert json_response(conn, 200) ==
ActorView.render("member.json", %{member: member})
@@ -590,7 +590,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn
|> assign(:actor, remote_actor_2)
|> put_req_header("accept", "application/activity+json")
|> get(Routes.activity_pub_url(Endpoint, :member, member.id))
|> get(url(~p"/member/#{member.id}"))
assert redirected_to(conn) == "https://someremote.url/member/here"
end
@@ -601,7 +601,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(Routes.activity_pub_url(Endpoint, :member, member.id))
|> get(url(~p"/member/#{member.id}"))
assert json_response(conn, 404)
end

View File

@@ -134,7 +134,7 @@ defmodule Mobilizon.Web.ApplicationControllerTest do
res = json_response(conn, 200)
verification_uri = Routes.page_url(Mobilizon.Web.Endpoint, :auth_device)
verification_uri = url(~p"/login/device")
assert %{
"device_code" => _device_code,
@@ -158,7 +158,7 @@ defmodule Mobilizon.Web.ApplicationControllerTest do
res = json_response(conn, 200)
verification_uri = Routes.page_url(Mobilizon.Web.Endpoint, :auth_device)
verification_uri = url(~p"/login/device")
assert %{
"device_code" => _device_code,

View File

@@ -26,7 +26,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn
|> get(
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "atom")
|> ~p"/@#{actor.preferred_username}/feed/atom"
|> URI.decode()
)
@@ -63,7 +63,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn
|> get(
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "atom")
|> ~p"/@#{actor.preferred_username}/feed/atom"
|> URI.decode()
)
@@ -79,7 +79,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
|> put_req_header("accept", "application/atom+xml")
|> get(
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "atom")
|> ~p"/@#{actor.preferred_username}/feed/atom"
|> URI.decode()
)
@@ -132,11 +132,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> get(
Endpoint
|> Routes.feed_url(:actor, group.preferred_username, "ics")
|> URI.decode()
)
|> get(URI.decode(~p"/@#{group.preferred_username}/feed/ics"))
assert res = response(conn, 200)
assert res =~ "BEGIN:VCALENDAR"
@@ -163,11 +159,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> get(
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "ics")
|> URI.decode()
)
|> get(URI.decode(~p"/@#{actor.preferred_username}/feed/ics"))
assert response(conn, 404)
end
@@ -179,11 +171,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> put_req_header("accept", "text/calendar")
|> get(
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "ics")
|> URI.decode()
)
|> get(URI.decode(~p"/@#{actor.preferred_username}/feed/ics"))
assert response(conn, 200) =~ "BEGIN:VCALENDAR"
assert response_content_type(conn, :calendar) =~ "charset=utf-8"
@@ -209,7 +197,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn
|> get(
Endpoint
|> Routes.feed_url(:event, event1.uuid, "ics")
|> ~p"/events/#{event1.uuid}/export/ics"
|> URI.decode()
)
@@ -241,11 +229,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> get(
Endpoint
|> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "atom")
|> URI.decode()
)
|> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "atom"))
assert response(conn, 200) =~ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
assert response_content_type(conn, :xml) =~ "charset=utf-8"
@@ -279,11 +263,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> put_req_header("accept", "application/atom+xml")
|> get(
Endpoint
|> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "atom")
|> URI.decode()
)
|> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "atom"))
assert response(conn, 200) =~ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
assert response_content_type(conn, :xml) =~ "charset=utf-8"
@@ -301,11 +281,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
test "it returns 404 for an not existing feed", %{conn: conn} do
conn =
conn
|> get(
Endpoint
|> Routes.feed_url(:going, "not existing", "atom")
|> URI.decode()
)
|> get(URI.decode(~p"/events/going/not_existing/atom"))
assert response(conn, 404)
end
@@ -329,11 +305,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> put_req_header("accept", "text/calendar")
|> get(
Endpoint
|> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "ics")
|> URI.decode()
)
|> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "ics"))
assert response(conn, 200) =~ "BEGIN:VCALENDAR"
assert response_content_type(conn, :calendar) =~ "charset=utf-8"
@@ -363,11 +335,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn =
conn
|> put_req_header("accept", "text/calendar")
|> get(
Endpoint
|> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "ics")
|> URI.decode()
)
|> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "ics"))
assert response(conn, 200) =~ "BEGIN:VCALENDAR"
assert response_content_type(conn, :calendar) =~ "charset=utf-8"
@@ -383,7 +351,7 @@ defmodule Mobilizon.Web.FeedControllerTest do
conn
|> get(
Endpoint
|> Routes.feed_url(:going, "not existing", "ics")
|> ~p"/events/going/not_existing/ics"
|> URI.decode()
)

View File

@@ -12,11 +12,11 @@ defmodule Mobilizon.Web.NodeInfoControllerTest do
assert json_response(conn, 200) == %{
"links" => [
%{
"href" => Routes.node_info_url(Endpoint, :nodeinfo, "2.0"),
"href" => ~p"/.well-known/nodeinfo/2.0Ã",
"rel" => "http://nodeinfo.diaspora.software/ns/schema/2.0"
},
%{
"href" => Routes.node_info_url(Endpoint, :nodeinfo, "2.1"),
"href" => ~p"/.well-known/nodeinfo/2.1",
"rel" => "http://nodeinfo.diaspora.software/ns/schema/2.1"
}
]

View File

@@ -53,42 +53,42 @@ defmodule Mobilizon.Web.PageControllerTest do
test "GET /events/:uuid", %{conn: conn} do
event = insert(:event, visibility: :public)
conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid))
conn = get(conn, url(~p"/events/#{event.uuid}"))
assert html_response(conn, 200) =~ event.title
end
test "GET /events/:uuid with unlisted event", %{conn: conn} do
event = insert(:event, visibility: :unlisted)
conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid))
conn = get(conn, url(~p"/events/#{event.uuid}"))
assert html_response(conn, 200) =~ event.title
assert ["noindex"] == get_resp_header(conn, "x-robots-tag")
end
test "GET /events/:uuid with not existing event", %{conn: conn} do
conn = get(conn, Routes.page_url(Endpoint, :event, "not_existing_event"))
conn = get(conn, ~p"/events/not_existing_event")
assert html_response(conn, 404)
end
test "GET /events/:uuid with event not public", %{conn: conn} do
event = insert(:event, visibility: :restricted)
conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid))
conn = get(conn, url(~p"/events/#{event.uuid}"))
assert html_response(conn, 404)
end
test "GET /comments/:uuid", %{conn: conn} do
comment = insert(:comment)
conn = get(conn, Routes.page_url(Endpoint, :comment, comment.uuid))
conn = get(conn, url(~p"/comments/#{comment.uuid}"))
assert html_response(conn, 200) =~ comment.text
end
test "GET /comments/:uuid with not existing comment", %{conn: conn} do
conn = get(conn, Routes.page_url(Endpoint, :comment, "not_existing_comment"))
conn = get(conn, ~p"/comments/not_existing_comment")
assert html_response(conn, 404)
end
test "GET /comments/:uuid with comment not public", %{conn: conn} do
comment = insert(:comment, visibility: :private)
conn = get(conn, Routes.page_url(Endpoint, :comment, comment.uuid))
conn = get(conn, url(~p"/comments/#{comment.uuid}"))
assert html_response(conn, 404)
end
end