Various refactoring and typespec improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -249,11 +249,11 @@ defmodule Mobilizon.Federation.ActivityPub.AudienceTest do
|
||||
end
|
||||
|
||||
test "reply to a remote comment" do
|
||||
%Actor{id: remote_actor_id, url: remote_actor_url} =
|
||||
%Actor{} =
|
||||
remote_actor =
|
||||
insert(:actor, domain: "somewhere.else", url: "https://somewhere.else/@someone")
|
||||
|
||||
%Actor{id: remote_group_id, url: remote_group_url} =
|
||||
%Actor{} =
|
||||
remote_group =
|
||||
insert(:group, domain: "somewhere.else", url: "https://somewhere.else/@somegroup")
|
||||
|
||||
|
||||
@@ -88,10 +88,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.DeleteTest do
|
||||
%Actor{url: url} =
|
||||
actor = insert(:actor, url: "https://framapiaf.org/users/admin", domain: "framapiaf.org")
|
||||
|
||||
%Event{url: event1_url} = event1 = insert(:event, organizer_actor: actor)
|
||||
%Event{} = event1 = insert(:event, organizer_actor: actor)
|
||||
insert(:event, organizer_actor: actor)
|
||||
|
||||
%Comment{url: comment1_url} = comment1 = insert(:comment, actor: actor)
|
||||
%Comment{} = comment1 = insert(:comment, actor: actor)
|
||||
insert(:comment, actor: actor)
|
||||
|
||||
data =
|
||||
|
||||
@@ -24,7 +24,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.InviteTest do
|
||||
|> Map.put("object", group_url)
|
||||
|> Map.put("target", invitee_url)
|
||||
|
||||
assert {:ok, activity, %Member{}} = Transmogrifier.handle_incoming(invite_data)
|
||||
assert {:ok, _activity, %Member{}} = Transmogrifier.handle_incoming(invite_data)
|
||||
assert %Member{} = member = Actors.get_member_by_url(invite_data["id"])
|
||||
assert member.actor.id == invitee_id
|
||||
assert member.parent.id == group_id
|
||||
@@ -49,7 +49,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.InviteTest do
|
||||
|> Map.put("object", group_url)
|
||||
|> Map.put("target", invitee_url)
|
||||
|
||||
assert {:ok, activity, %Member{}} = Transmogrifier.handle_incoming(invite_data)
|
||||
assert {:ok, _activity, %Member{}} = Transmogrifier.handle_incoming(invite_data)
|
||||
assert %Member{} = member = Actors.get_member_by_url(invite_data["id"])
|
||||
assert member.actor.id == invitee_id
|
||||
assert member.parent.id == group_id
|
||||
|
||||
@@ -120,7 +120,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.UpdateTest do
|
||||
)
|
||||
|
||||
group = insert(:group)
|
||||
%Member{} = member = insert(:member, actor: remote_actor, parent: group, role: :moderator)
|
||||
%Member{} = _member = insert(:member, actor: remote_actor, parent: group, role: :moderator)
|
||||
%Post{} = post = insert(:post, attributed_to: group)
|
||||
|
||||
data = Convertible.model_to_as(post)
|
||||
@@ -157,7 +157,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.UpdateTest do
|
||||
)
|
||||
|
||||
group = insert(:group)
|
||||
%Member{} = member = insert(:member, actor: remote_actor, parent: group)
|
||||
%Member{} = _member = insert(:member, actor: remote_actor, parent: group)
|
||||
%Post{} = post = insert(:post, attributed_to: group)
|
||||
|
||||
data = Convertible.model_to_as(post)
|
||||
|
||||
@@ -173,7 +173,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
get_or_fetch_actor_by_url: fn url ->
|
||||
case url do
|
||||
@mobilizon_group_url -> {:ok, group}
|
||||
actor_url -> {:ok, actor}
|
||||
^actor_url -> {:ok, actor}
|
||||
end
|
||||
end do
|
||||
activity = %{
|
||||
@@ -279,7 +279,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
get_or_fetch_actor_by_url: fn url ->
|
||||
case url do
|
||||
@mobilizon_group_url -> {:ok, group}
|
||||
actor_url -> {:ok, actor}
|
||||
^actor_url -> {:ok, actor}
|
||||
end
|
||||
end do
|
||||
activity = %{
|
||||
@@ -379,7 +379,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
}
|
||||
}
|
||||
|
||||
assert {:ok, %Activity{data: data, local: false}, %Resource{} = resource} =
|
||||
assert {:ok, %Activity{data: _data, local: false}, %Resource{} = resource} =
|
||||
Transmogrifier.handle_incoming(activity)
|
||||
|
||||
assert resource.actor_id == group.id
|
||||
@@ -420,7 +420,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
}
|
||||
}
|
||||
|
||||
assert {:ok, %Activity{data: data, local: false}, %Resource{} = resource} =
|
||||
assert {:ok, %Activity{data: _data, local: false}, %Resource{} = resource} =
|
||||
Transmogrifier.handle_incoming(activity)
|
||||
|
||||
assert resource.actor_id == group.id
|
||||
@@ -475,7 +475,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
}
|
||||
}
|
||||
|
||||
assert {:ok, %Activity{data: data, local: false}, %Resource{} = resource} =
|
||||
assert {:ok, %Activity{data: _data, local: false}, %Resource{} = resource} =
|
||||
Transmogrifier.handle_incoming(activity)
|
||||
|
||||
assert resource.actor_id == group.id
|
||||
@@ -643,7 +643,7 @@ defmodule Mobilizon.Federation.ActivityPub.TransmogrifierTest do
|
||||
|
||||
Mock
|
||||
|> expect(:call, fn
|
||||
%{method: :get, url: actor_url}, _opts ->
|
||||
%{method: :get, url: ^actor_url}, _opts ->
|
||||
{:ok, %Tesla.Env{status: 200, body: actor_data}}
|
||||
end)
|
||||
|
||||
|
||||
@@ -406,7 +406,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.EventsTest do
|
||||
%Actor{url: organizer_group_url, members_url: members_url, followers_url: followers_url} =
|
||||
organizer_group = insert(:group, domain: nil)
|
||||
|
||||
%Actor{url: organizer_actor_url} =
|
||||
%Actor{url: _organizer_actor_url} =
|
||||
organizer_actor =
|
||||
insert(:actor, domain: "somewhere.else", url: "https://somewhere.else/@someone")
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ defmodule Mobilizon.GraphQL.API.ReportTest do
|
||||
|
||||
%Comment{id: comment_1_id} = _comment_1 = insert(:comment, actor: reported)
|
||||
|
||||
assert {:ok, %Activity{} = flag_activity, %Report{id: report_id} = _report} =
|
||||
assert {:ok, %Activity{}, %Report{id: report_id} = _report} =
|
||||
Reports.report(%{
|
||||
reporter_id: reporter_id,
|
||||
reported_id: reported_id,
|
||||
@@ -152,7 +152,7 @@ defmodule Mobilizon.GraphQL.API.ReportTest do
|
||||
|
||||
%Comment{id: comment_1_id} = _comment_1 = insert(:comment, actor: reported)
|
||||
|
||||
assert {:ok, %Activity{} = flag_activity, %Report{id: report_id} = _report} =
|
||||
assert {:ok, %Activity{}, %Report{id: report_id} = _report} =
|
||||
Reports.report(%{
|
||||
reporter_id: reporter_id,
|
||||
reported_id: reported_id,
|
||||
|
||||
@@ -34,7 +34,6 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
|
||||
|
||||
test "create_comment/3 creates a comment", %{
|
||||
conn: conn,
|
||||
actor: actor,
|
||||
user: user,
|
||||
event: event
|
||||
} do
|
||||
@@ -51,7 +50,6 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
|
||||
|
||||
test "create_comment/3 doesn't allow creating events if it's disabled", %{
|
||||
conn: conn,
|
||||
actor: actor,
|
||||
user: user,
|
||||
event: event
|
||||
} do
|
||||
@@ -93,8 +91,6 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
|
||||
conn: conn,
|
||||
event: event
|
||||
} do
|
||||
actor = insert(:actor)
|
||||
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
@@ -108,7 +104,6 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do
|
||||
|
||||
test "create_comment/3 creates a reply to a comment", %{
|
||||
conn: conn,
|
||||
actor: actor,
|
||||
user: user,
|
||||
event: event
|
||||
} do
|
||||
|
||||
@@ -150,7 +150,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
variables: %{id: media_id}
|
||||
)
|
||||
|
||||
assert is_nil(res["errors"])
|
||||
assert res["errors"] == nil
|
||||
assert res["data"]["removeMedia"]["id"] == to_string(media_id)
|
||||
|
||||
res =
|
||||
|
||||
@@ -298,10 +298,10 @@ defmodule Mobilizon.ActorsTest do
|
||||
test "delete_actor/1 deletes the actor", %{
|
||||
actor: %Actor{avatar: %{url: avatar_url}, banner: %{url: banner_url}, id: actor_id} = actor
|
||||
} do
|
||||
%Event{url: event1_url} = event1 = insert(:event, organizer_actor: actor)
|
||||
%Event{} = event1 = insert(:event, organizer_actor: actor)
|
||||
insert(:event, organizer_actor: actor)
|
||||
|
||||
%Comment{url: comment1_url} = comment1 = insert(:comment, actor: actor)
|
||||
%Comment{} = comment1 = insert(:comment, actor: actor)
|
||||
insert(:comment, actor: actor)
|
||||
|
||||
%URI{path: "/media/" <> avatar_path} = URI.parse(avatar_url)
|
||||
@@ -386,25 +386,25 @@ defmodule Mobilizon.ActorsTest do
|
||||
test "create_group/1 with an existing profile username fails" do
|
||||
_actor = insert(:actor, preferred_username: @valid_attrs.preferred_username)
|
||||
|
||||
assert {:error, :insert_group,
|
||||
assert {:error,
|
||||
%Ecto.Changeset{
|
||||
errors: [preferred_username: {"This username is already taken.", []}]
|
||||
}, %{}} = Actors.create_group(@valid_attrs)
|
||||
}} = Actors.create_group(@valid_attrs)
|
||||
end
|
||||
|
||||
test "create_group/1 with an existing group username fails" do
|
||||
%Actor{id: actor_id} = insert(:actor)
|
||||
attrs = Map.put(@valid_attrs, :creator_actor_id, actor_id)
|
||||
assert {:ok, %Actor{} = group} = Actors.create_group(attrs)
|
||||
assert {:ok, %Actor{}} = Actors.create_group(attrs)
|
||||
|
||||
assert {:error, :insert_group,
|
||||
assert {:error,
|
||||
%Ecto.Changeset{
|
||||
errors: [preferred_username: {"This username is already taken.", []}]
|
||||
}, %{}} = Actors.create_group(attrs)
|
||||
}} = Actors.create_group(attrs)
|
||||
end
|
||||
|
||||
test "create_group/1 with invalid data returns error changeset" do
|
||||
assert {:error, :insert_group, %Ecto.Changeset{}, %{}} = Actors.create_group(@invalid_attrs)
|
||||
assert {:error, %Ecto.Changeset{}} = Actors.create_group(@invalid_attrs)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -456,7 +456,7 @@ defmodule Mobilizon.ActorsTest do
|
||||
test "update_bot/2 with invalid data returns error changeset" do
|
||||
bot = insert(:bot)
|
||||
assert {:error, %Ecto.Changeset{}} = Actors.update_bot(bot, @invalid_attrs)
|
||||
assert bot = Actors.get_bot!(bot.id)
|
||||
assert bot.id == Actors.get_bot!(bot.id).id
|
||||
end
|
||||
|
||||
test "delete_bot/1 deletes the bot" do
|
||||
@@ -483,7 +483,7 @@ defmodule Mobilizon.ActorsTest do
|
||||
|
||||
test "get_follower!/1 returns the follower with given id", context do
|
||||
follower = create_test_follower(context)
|
||||
assert follower = Actors.get_follower!(follower.id)
|
||||
assert follower.id == Actors.get_follower!(follower.id).id
|
||||
end
|
||||
|
||||
test "create_follower/1 with valid data creates a follower", %{
|
||||
@@ -498,8 +498,12 @@ defmodule Mobilizon.ActorsTest do
|
||||
assert {:ok, %Follower{} = follower} = Actors.create_follower(valid_attrs)
|
||||
assert follower.approved == true
|
||||
|
||||
assert %{total: 1, elements: [target_actor]} = Actors.build_followings_for_actor(actor)
|
||||
assert %{total: 1, elements: [actor]} = Actors.build_followers_for_actor(target_actor)
|
||||
assert %{total: 1, elements: followings} = Actors.build_followings_for_actor(actor)
|
||||
followings_ids = Enum.map(followings, & &1.id)
|
||||
assert followings_ids == [target_actor.id]
|
||||
assert %{total: 1, elements: followers} = Actors.build_followers_for_actor(target_actor)
|
||||
followers_ids = Enum.map(followers, & &1.id)
|
||||
assert followers_ids == [actor.id]
|
||||
end
|
||||
|
||||
test "create_follower/1 with valid data but same actors fails to create a follower", %{
|
||||
@@ -538,7 +542,7 @@ defmodule Mobilizon.ActorsTest do
|
||||
test "update_follower/2 with invalid data returns error changeset", context do
|
||||
follower = create_test_follower(context)
|
||||
assert {:error, %Ecto.Changeset{}} = Actors.update_follower(follower, @invalid_attrs)
|
||||
assert follower = Actors.get_follower!(follower.id)
|
||||
assert follower.id == Actors.get_follower!(follower.id).id
|
||||
end
|
||||
|
||||
test "delete_follower/1 deletes the follower", context do
|
||||
@@ -563,13 +567,11 @@ defmodule Mobilizon.ActorsTest do
|
||||
assert actor.followings |> Enum.map(& &1.target_actor_id) == [target_actor.id]
|
||||
|
||||
# Test if actor is already following target actor
|
||||
assert {:error, :already_following, msg} = Actors.follow(target_actor, actor)
|
||||
assert msg =~ "already following"
|
||||
assert {:error, :already_following} = Actors.follow(target_actor, actor)
|
||||
|
||||
# Test if target actor is suspended
|
||||
target_actor = %{target_actor | suspended: true}
|
||||
assert {:error, :suspended, msg} = Actors.follow(target_actor, actor)
|
||||
assert msg =~ "suspended"
|
||||
assert {:error, :followed_suspended} = Actors.follow(target_actor, actor)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -590,7 +592,7 @@ defmodule Mobilizon.ActorsTest do
|
||||
|
||||
test "get_member!/1 returns the member with given id", context do
|
||||
member = create_test_member(context)
|
||||
assert member = Actors.get_member!(member.id)
|
||||
assert member.id == Actors.get_member!(member.id).id
|
||||
end
|
||||
|
||||
test "create_member/1 with valid data creates a member", %{
|
||||
@@ -606,7 +608,9 @@ defmodule Mobilizon.ActorsTest do
|
||||
assert member.role == :member
|
||||
|
||||
assert [group] = Actors.list_groups_member_of(actor)
|
||||
assert %Page{elements: [actor], total: 1} = Actors.list_members_for_group(group)
|
||||
assert %Page{elements: members, total: 1} = Actors.list_members_for_group(group)
|
||||
members_ids = Enum.map(members, & &1.id)
|
||||
assert members_ids == [member.id]
|
||||
end
|
||||
|
||||
test "create_member/1 with valid data but same actors just updates the member", %{
|
||||
|
||||
@@ -19,28 +19,32 @@ defmodule Mobilizon.Service.Admin.ActionLogTest do
|
||||
|
||||
describe "action_log_creation" do
|
||||
test "log a report update", %{moderator: moderator} do
|
||||
%Report{id: _report_id} = report = insert(:report)
|
||||
%Report{id: report_id} = report = insert(:report)
|
||||
|
||||
assert {:ok,
|
||||
%ActionLog{
|
||||
target_type: "Elixir.Mobilizon.Reports.Report",
|
||||
target_id: report_id,
|
||||
target_id: found_report_id,
|
||||
action: :update,
|
||||
actor: moderator
|
||||
actor: _moderator
|
||||
}} = Admin.log_action(moderator, "update", report)
|
||||
|
||||
assert found_report_id == report_id
|
||||
end
|
||||
|
||||
test "log the creation of a report note", %{moderator: moderator} do
|
||||
%Report{} = report = insert(:report)
|
||||
%Note{id: _note_id} = report = insert(:report_note, report: report)
|
||||
%Note{id: note_id} = report = insert(:report_note, report: report)
|
||||
|
||||
assert {:ok,
|
||||
%ActionLog{
|
||||
target_type: "Elixir.Mobilizon.Reports.Note",
|
||||
target_id: note_id,
|
||||
target_id: found_note_id,
|
||||
action: :create,
|
||||
actor: moderator
|
||||
actor: _moderator
|
||||
}} = Admin.log_action(moderator, "create", report)
|
||||
|
||||
assert found_note_id == note_id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -424,7 +424,7 @@ defmodule Mobilizon.EventsTest do
|
||||
end
|
||||
|
||||
test "delete_participant/1 deletes the participant", %{participant: participant} do
|
||||
assert {:ok, %Participant{}} = Events.delete_participant(participant)
|
||||
assert {:ok, %{participant: %Participant{}}} = Events.delete_participant(participant)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@ defmodule Mobilizon.UsersTest do
|
||||
end
|
||||
|
||||
test "get_user!/1 returns the user with given id" do
|
||||
user = insert(:user)
|
||||
assert user = Users.get_user!(user.id)
|
||||
%User{id: user_id} = user = insert(:user)
|
||||
assert user == Users.get_user!(user_id)
|
||||
end
|
||||
|
||||
# There's no create_user/1, just register/1
|
||||
test "register/1 with valid data creates a user" do
|
||||
assert {:ok, %User{email: email} = user} = Users.register(@valid_attrs)
|
||||
assert {:ok, %User{email: email}} = Users.register(@valid_attrs)
|
||||
|
||||
assert email == @valid_attrs.email
|
||||
end
|
||||
@@ -48,9 +48,9 @@ defmodule Mobilizon.UsersTest do
|
||||
end
|
||||
|
||||
test "update_user/2 with invalid data returns error changeset" do
|
||||
user = insert(:user)
|
||||
%User{id: user_id} = user = insert(:user)
|
||||
assert {:error, %Ecto.Changeset{}} = Users.update_user(user, @invalid_attrs)
|
||||
assert user = Users.get_user!(user.id)
|
||||
assert user == Users.get_user!(user_id)
|
||||
end
|
||||
|
||||
test "delete_user/1 empties the user" do
|
||||
@@ -65,11 +65,6 @@ defmodule Mobilizon.UsersTest do
|
||||
assert_raise Ecto.NoResultsError, fn -> Users.get_user!(user.id) end
|
||||
end
|
||||
|
||||
# test "change_user/1 returns a user changeset" do
|
||||
# user = insert(:user)
|
||||
# assert %Ecto.Changeset{} = Users.change_user(user)
|
||||
# end
|
||||
|
||||
@email "email@domain.tld"
|
||||
@password "password"
|
||||
|
||||
|
||||
@@ -156,30 +156,30 @@ defmodule Mobilizon.Service.DateTimeTest do
|
||||
|
||||
describe "check if we're between hours" do
|
||||
test "basic" do
|
||||
refute DateTimeTools.is_between_hours(
|
||||
refute DateTimeTools.is_between_hours?(
|
||||
compare_to_datetime: ~U[2021-06-22 15:00:00Z],
|
||||
compare_to_day: ~D[2021-06-22]
|
||||
)
|
||||
|
||||
assert DateTimeTools.is_between_hours(
|
||||
assert DateTimeTools.is_between_hours?(
|
||||
compare_to_datetime: ~U[2021-06-22 08:00:00Z],
|
||||
compare_to_day: ~D[2021-06-22]
|
||||
)
|
||||
|
||||
assert DateTimeTools.is_between_hours(
|
||||
assert DateTimeTools.is_between_hours?(
|
||||
compare_to_datetime: ~U[2021-06-22 08:01:00Z],
|
||||
compare_to_day: ~D[2021-06-22]
|
||||
)
|
||||
end
|
||||
|
||||
test "with special timezone" do
|
||||
refute DateTimeTools.is_between_hours(
|
||||
refute DateTimeTools.is_between_hours?(
|
||||
compare_to_datetime: ~U[2021-06-22 08:01:00Z],
|
||||
compare_to_day: ~D[2021-06-22],
|
||||
timezone: "Asia/Brunei"
|
||||
)
|
||||
|
||||
assert DateTimeTools.is_between_hours(
|
||||
assert DateTimeTools.is_between_hours?(
|
||||
compare_to_datetime: ~U[2021-06-22 00:01:00Z],
|
||||
compare_to_day: ~D[2021-06-22],
|
||||
timezone: "Asia/Brunei"
|
||||
@@ -189,12 +189,12 @@ defmodule Mobilizon.Service.DateTimeTest do
|
||||
|
||||
describe "check if we're between hours on right day" do
|
||||
test "basic" do
|
||||
assert DateTimeTools.is_between_hours_on_first_day(
|
||||
assert DateTimeTools.is_between_hours_on_first_day?(
|
||||
compare_to_datetime: ~U[2021-06-20 08:00:00Z],
|
||||
compare_to_day: ~D[2021-06-20]
|
||||
)
|
||||
|
||||
assert DateTimeTools.is_between_hours_on_first_day(
|
||||
assert DateTimeTools.is_between_hours_on_first_day?(
|
||||
compare_to_datetime: ~U[2021-06-21 08:00:00Z],
|
||||
compare_to_day: ~D[2021-06-21],
|
||||
locale: "fr"
|
||||
@@ -202,14 +202,14 @@ defmodule Mobilizon.Service.DateTimeTest do
|
||||
end
|
||||
|
||||
test "with special timezone" do
|
||||
refute DateTimeTools.is_between_hours_on_first_day(
|
||||
refute DateTimeTools.is_between_hours_on_first_day?(
|
||||
compare_to_datetime: ~U[2021-06-21 08:00:00Z],
|
||||
compare_to_day: ~D[2021-06-21],
|
||||
locale: "fr",
|
||||
timezone: "Asia/Srednekolymsk"
|
||||
)
|
||||
|
||||
assert DateTimeTools.is_between_hours_on_first_day(
|
||||
assert DateTimeTools.is_between_hours_on_first_day?(
|
||||
compare_to_datetime: ~U[2021-06-20 21:00:00Z],
|
||||
compare_to_day: ~D[2021-06-21],
|
||||
locale: "fr",
|
||||
|
||||
@@ -56,7 +56,7 @@ defmodule Mobilizon.Service.Workers.NotificationTest do
|
||||
actor = Map.put(participant.actor, :user, user)
|
||||
participant = Map.put(participant, :actor, actor)
|
||||
|
||||
assert {:ok, %Participant{}} = Events.delete_participant(participant)
|
||||
assert {:ok, %{participant: %Participant{}}} = Events.delete_participant(participant)
|
||||
|
||||
Notification.perform(%Oban.Job{
|
||||
args: %{"op" => "before_event_notification", "participant_id" => participant_id}
|
||||
@@ -131,7 +131,7 @@ defmodule Mobilizon.Service.Workers.NotificationTest do
|
||||
actor = Map.put(participant.actor, :user, user)
|
||||
participant = Map.put(participant, :actor, actor)
|
||||
|
||||
assert {:ok, %Participant{}} = Events.delete_participant(participant)
|
||||
assert {:ok, %{participant: %Participant{}}} = Events.delete_participant(participant)
|
||||
|
||||
Notification.perform(%Oban.Job{
|
||||
args: %{"op" => "on_day_notification", "user_id" => user_id}
|
||||
@@ -243,7 +243,7 @@ defmodule Mobilizon.Service.Workers.NotificationTest do
|
||||
actor = Map.put(participant.actor, :user, user)
|
||||
participant = Map.put(participant, :actor, actor)
|
||||
|
||||
assert {:ok, %Participant{}} = Events.delete_participant(participant)
|
||||
assert {:ok, %{participant: %Participant{}}} = Events.delete_participant(participant)
|
||||
|
||||
Notification.perform(%Oban.Job{
|
||||
args: %{"op" => "weekly_notification", "user_id" => user_id}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
defmodule Mobilizon.Web.ActivityPubControllerTest do
|
||||
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||
import Mox
|
||||
|
||||
use Mobilizon.Web.ConnCase
|
||||
|
||||
@@ -14,7 +15,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
|
||||
alias Mobilizon.Actors.Actor
|
||||
|
||||
alias Mobilizon.Federation.ActivityPub
|
||||
|
||||
alias Mobilizon.Service.HTTP.ActivityPub.Mock
|
||||
alias Mobilizon.Web.ActivityPub.ActorView
|
||||
alias Mobilizon.Web.{Endpoint, PageView}
|
||||
alias Mobilizon.Web.Router.Helpers, as: Routes
|
||||
@@ -119,18 +120,55 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do
|
||||
|
||||
describe "/@:preferred_username/inbox" do
|
||||
test "it inserts an incoming event into the database", %{conn: conn} do
|
||||
use_cassette "activity_pub_controller/mastodon-post-activity_actor_call" do
|
||||
data = File.read!("test/fixtures/mastodon-post-activity.json") |> Jason.decode!()
|
||||
# use_cassette "activity_pub_controller/mastodon-post-activity_actor_call" do
|
||||
data = File.read!("test/fixtures/mastodon-post-activity.json") |> Jason.decode!()
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> assign(:valid_signature, true)
|
||||
|> post("#{Endpoint.url()}/inbox", data)
|
||||
%Actor{url: remote_actor_url} =
|
||||
remote_actor =
|
||||
insert(:actor,
|
||||
domain: "framapiaf.org",
|
||||
url: "https://framapiaf.org/users/admin",
|
||||
preferred_username: "admin"
|
||||
)
|
||||
|
||||
assert "ok" == json_response(conn, 200)
|
||||
:timer.sleep(500)
|
||||
assert ActivityPub.fetch_object_from_url(data["object"]["id"])
|
||||
end
|
||||
remote_actor_data =
|
||||
Mobilizon.Federation.ActivityStream.Converter.Actor.model_to_as(remote_actor)
|
||||
|
||||
%Actor{url: local_actor_url} =
|
||||
local_actor =
|
||||
insert(:actor, domain: nil, url: "http://mobilizon.com/@tcit", preferred_username: "tcit")
|
||||
|
||||
local_actor_data =
|
||||
Mobilizon.Federation.ActivityStream.Converter.Actor.model_to_as(local_actor)
|
||||
|
||||
Mock
|
||||
|> expect(:call, fn
|
||||
%{method: :get, url: url}, _opts ->
|
||||
case url do
|
||||
^remote_actor_url ->
|
||||
{:ok, %Tesla.Env{status: 200, body: remote_actor_data}}
|
||||
|
||||
^local_actor_url ->
|
||||
{:ok, %Tesla.Env{status: 200, body: local_actor_data}}
|
||||
|
||||
"https://framapiaf.org/users/admin/statuses/99512778738411822" ->
|
||||
{:ok, %Tesla.Env{status: 404, body: ""}}
|
||||
end
|
||||
end)
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> assign(:valid_signature, true)
|
||||
|> post("#{Endpoint.url()}/inbox", data)
|
||||
|
||||
assert "ok" == json_response(conn, 200)
|
||||
:timer.sleep(500)
|
||||
|
||||
assert {:ok, %Mobilizon.Discussions.Comment{} = comment} =
|
||||
ActivityPub.fetch_object_from_url(data["object"]["id"])
|
||||
|
||||
assert comment.actor.id == remote_actor.id
|
||||
# end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -8,6 +8,15 @@ defmodule Mobilizon.Web.Upload.Uploader.LocalTest do
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Uploader.Local
|
||||
|
||||
@file_path "local_upload/files/image.jpg"
|
||||
@local_path Path.join([Local.upload_path(), @file_path])
|
||||
|
||||
setup do
|
||||
File.rm(@local_path)
|
||||
|
||||
:ok
|
||||
end
|
||||
|
||||
describe "get_file/1" do
|
||||
test "it returns path to local folder for files" do
|
||||
assert Local.get_file("") == {:ok, {:static_dir, "test/uploads"}}
|
||||
@@ -17,42 +26,44 @@ defmodule Mobilizon.Web.Upload.Uploader.LocalTest do
|
||||
describe "put_file/1" do
|
||||
test "put file to local folder" do
|
||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||
file_path = "local_upload/files/image.jpg"
|
||||
|
||||
file = %Upload{
|
||||
name: "image.jpg",
|
||||
content_type: "image/jpeg",
|
||||
path: file_path,
|
||||
path: @file_path,
|
||||
tempfile: Path.absname("test/fixtures/image_tmp.jpg")
|
||||
}
|
||||
|
||||
assert Local.put_file(file) == :ok
|
||||
assert {:ok, {:file, @file_path}} == Local.put_file(file)
|
||||
|
||||
assert [Local.upload_path(), file_path]
|
||||
|> Path.join()
|
||||
|> File.exists?()
|
||||
assert File.exists?(@local_path)
|
||||
|
||||
assert :ok == Local.put_file(file)
|
||||
|
||||
assert File.exists?(@local_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe "remove_file/1" do
|
||||
test "removes local file" do
|
||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||
file_path = "local_upload/files/image.jpg"
|
||||
|
||||
file = %Upload{
|
||||
name: "image.jpg",
|
||||
content_type: "image/jpeg",
|
||||
path: file_path,
|
||||
path: @file_path,
|
||||
tempfile: Path.absname("test/fixtures/image_tmp.jpg")
|
||||
}
|
||||
|
||||
:ok = Local.put_file(file)
|
||||
local_path = Path.join([Local.upload_path(), file_path])
|
||||
assert File.exists?(local_path)
|
||||
refute File.exists?(@local_path)
|
||||
|
||||
Local.remove_file(file_path)
|
||||
assert {:ok, {:file, @file_path}} = Local.put_file(file)
|
||||
|
||||
refute File.exists?(local_path)
|
||||
assert File.exists?(@local_path)
|
||||
|
||||
Local.remove_file(@file_path)
|
||||
|
||||
refute File.exists?(@local_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user