Fix tests

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2018-11-12 18:17:53 +01:00
parent 0900eb730e
commit a04dfc5293
29 changed files with 645 additions and 508 deletions

View File

@@ -1,12 +1,11 @@
defmodule Mobilizon.ActorsTest do
use Mobilizon.DataCase
import Mobilizon.Factory
alias Mobilizon.Actors
alias Mobilizon.Actors.{Actor, Member, Follower, User, Bot}
import Mobilizon.Factory
describe "actors" do
alias Mobilizon.Actors.Actor
@valid_attrs %{
summary: "some description",
name: "Bobby Blank",
@@ -49,24 +48,24 @@ defmodule Mobilizon.ActorsTest do
{:ok, actor: actor}
end
test "list_actors/0 returns all actors", %{actor: actor} do
actors = Actors.list_actors()
assert actors = [actor]
test "list_actors/0 returns all actors", %{actor: %Actor{id: actor_id}} do
assert actor_id == hd(Actors.list_actors()).id
end
test "get_actor!/1 returns the actor with given id", %{actor: actor} do
actor_fetched = Actors.get_actor!(actor.id)
assert actor_fetched = actor
test "get_actor!/1 returns the actor with given id", %{actor: %Actor{id: actor_id} = actor} do
assert actor_id == Actors.get_actor!(actor.id).id
end
test "get_actor_for_user/1 returns the actor for an user", %{actor: %{user: user} = actor} do
assert actor = Actors.get_actor_for_user(user)
test "get_actor_for_user/1 returns the actor for an user", %{
actor: %{user: user, id: actor_id} = _actor
} do
assert actor_id == Actors.get_actor_for_user(user).id
end
test "get_actor_for_user/1 returns the actor for an user with no default actor defined" do
user = insert(:user)
actor = insert(:actor, user: user)
assert actor = Actors.get_actor_for_user(user)
actor_id = insert(:actor, user: user).id
assert actor_id == Actors.get_actor_for_user(user).id
end
test "get_actor_with_everything!/1 returns the actor with it's organized events", %{
@@ -74,19 +73,28 @@ defmodule Mobilizon.ActorsTest do
} do
assert Actors.get_actor_with_everything!(actor.id).organized_events == []
event = insert(:event, organizer_actor: actor)
events = Actors.get_actor_with_everything!(actor.id).organized_events
assert events = [event]
event_found_id =
Actors.get_actor_with_everything!(actor.id).organized_events |> hd |> Map.get(:id)
assert event_found_id == event.id
end
test "get_actor_by_name/1 returns a local actor", %{actor: actor} do
actor_found = Actors.get_actor_by_name(actor.preferred_username)
assert actor_found = actor
test "get_actor_by_name/1 returns a local actor", %{
actor: %Actor{id: actor_id, preferred_username: preferred_username}
} do
actor_found_id = Actors.get_actor_by_name(preferred_username).id
assert actor_found_id == actor_id
end
test "get_actor_by_name/1 returns a remote actor" do
assert {:ok, %Actor{} = actor} = Actors.get_or_fetch_by_url(@remote_account_url)
actor_found = Actors.get_actor_by_name("#{actor.preferred_username}@#{actor.domain}")
assert actor_found = actor
with {:ok,
%Actor{id: actor_id, preferred_username: preferred_username, domain: domain} = _actor} <-
Actors.get_or_fetch_by_url(@remote_account_url),
%Actor{id: actor_found_id} <-
Actors.get_actor_by_name("#{preferred_username}@#{domain}").id do
assert actor_found_id == actor_id
end
end
test "get_local_actor_by_name_with_everything!/1 returns the local actor with it's organized events",
@@ -98,10 +106,12 @@ defmodule Mobilizon.ActorsTest do
event = insert(:event, organizer_actor: actor)
events =
event_found_id =
Actors.get_local_actor_by_name_with_everything(actor.preferred_username).organized_events
|> hd
|> Map.get(:id)
assert events = [event]
assert event_found_id == event.id
end
test "get_actor_by_name_with_everything!/1 returns the local actor with it's organized events",
@@ -112,8 +122,13 @@ defmodule Mobilizon.ActorsTest do
[]
event = insert(:event, organizer_actor: actor)
events = Actors.get_actor_by_name_with_everything(actor.preferred_username).organized_events
assert events = [event]
event_found_id =
Actors.get_actor_by_name_with_everything(actor.preferred_username).organized_events
|> hd
|> Map.get(:id)
assert event_found_id == event.id
end
test "get_actor_by_name_with_everything!/1 returns the remote actor with it's organized events" do
@@ -125,75 +140,83 @@ defmodule Mobilizon.ActorsTest do
event = insert(:event, organizer_actor: actor)
events =
event_found_id =
Actors.get_actor_by_name_with_everything("#{actor.preferred_username}@#{actor.domain}").organized_events
|> hd
|> Map.get(:id)
assert events = [event]
assert event_found_id == event.id
end
test "get_or_fetch_by_url/1 returns the local actor for the url", %{
actor: actor
actor: %Actor{preferred_username: preferred_username} = actor
} do
preferred_username = actor.preferred_username
assert {:ok, %Actor{preferred_username: preferred_username, domain: nil} = actor_found} =
Actors.get_or_fetch_by_url(actor.url)
with {:ok, %Actor{domain: domain} = actor} <- Actors.get_or_fetch_by_url(actor.url) do
assert preferred_username == actor.preferred_username
assert is_nil(domain)
end
end
test "get_or_fetch_by_url/1 returns the remote actor for the url" do
assert {:ok,
%Actor{preferred_username: @remote_account_username, domain: @remote_account_domain}} =
Actors.get_or_fetch_by_url(@remote_account_url)
with {:ok, %Actor{preferred_username: preferred_username, domain: domain}} <-
Actors.get_or_fetch_by_url!(@remote_account_url) do
assert preferred_username == @remote_account_username
assert domain == @remote_account_domain
end
end
test "test find_local_by_username/1 returns local actors with similar usernames", %{
actor: actor
} do
actor2 = insert(:actor)
actors = Actors.find_local_by_username("thomas")
assert actors = [actor, actor2]
[%Actor{id: actor_found_id} | tail] = Actors.find_local_by_username("thomas")
%Actor{id: actor2_found_id} = hd(tail)
assert actor_found_id == actor.id
assert actor2_found_id == actor2.id
end
test "test find_actors_by_username_or_name/1 returns actors with similar usernames", %{
actor: actor
actor: %Actor{id: actor_id}
} do
{:ok, %Actor{} = actor2} = Actors.get_or_fetch_by_url(@remote_account_url)
actors = Actors.find_actors_by_username_or_name("t")
assert actors = [actor, actor2]
{:ok, %Actor{id: actor2_id}} = Actors.get_or_fetch_by_url(@remote_account_url)
actors_ids = Actors.find_actors_by_username_or_name("t") |> Enum.map(& &1.id)
assert MapSet.new(actors_ids) == MapSet.new([actor2_id, actor_id])
end
test "test find_actors_by_username_or_name/1 returns actors with similar names", %{
actor: actor
} do
test "test find_actors_by_username_or_name/1 returns actors with similar names" do
actors = Actors.find_actors_by_username_or_name("ohno")
assert actors == []
end
test "test search/1 returns accounts for search with existing accounts", %{actor: actor} do
assert {:ok, [actor]} = Actors.search("t")
with {:ok, [%Actor{id: actor_found_id}]} <- Actors.search("t") do
assert actor_found_id == actor.id
end
end
test "test search/1 returns accounts for search with non existent accounts" do
assert {:ok, []} = Actors.search("nonexistent")
assert {:ok, []} == Actors.search("nonexistent")
end
test "test search/1 returns accounts for search with existing remote accounts" do
assert {:ok, [%Actor{preferred_username: "tcit", domain: "framapiaf.org"}]} =
Actors.search("tcit@framapiaf.org")
with {:ok, [%Actor{preferred_username: username}]} <- Actors.search("tcit@framapiaf.org") do
assert username == "tcit"
end
end
test "test search/1 returns accounts for search with non existent remote accounts" do
assert {:error, _} = Actors.search("tcit@yolo.tld")
assert {:error, "No ActivityPub URL found in WebFinger"} == Actors.search("tcit@yolo.tld")
end
test "test get_public_key_for_url/1 with local actor", %{actor: actor} do
assert Actor.get_public_key_for_url(actor.url) ==
actor.keys |> Mobilizon.Service.ActivityPub.Utils.pem_to_public_key()
actor.keys |> Mobilizon.Actors.Actor.prepare_public_key()
end
@remote_actor_key {:RSAPublicKey,
20_890_513_599_005_517_665_557_846_902_571_022_168_782_075_040_010_449_365_706_450_877_170_130_373_892_202_874_869_873_999_284_399_697_282_332_064_948_148_602_583_340_776_692_090_472_558_740_998_357_203_838_580_321_412_679_020_304_645_826_371_196_718_081_108_049_114_160_630_664_514_340_729_769_453_281_682_773_898_619_827_376_232_969_899_348_462_205_389_310_883_299_183_817_817_999_273_916_446_620_095_414_233_374_619_948_098_516_821_650_069_821_783_810_210_582_035_456_563_335_930_330_252_551_528_035_801_173_640_288_329_718_719_895_926_309_416_142_129_926_226_047_930_429_802_084_560_488_897_717_417_403_272_782_469_039_131_379_953_278_833_320_195_233_761_955_815_307_522_871_787_339_192_744_439_894_317_730_207_141_881_699_363_391_788_150_650_217_284_777_541_358_381_165_360_697_136_307_663_640_904_621_178_632_289_787,
65537}
@remote_actor_key {:ok,
{:RSAPublicKey,
20_890_513_599_005_517_665_557_846_902_571_022_168_782_075_040_010_449_365_706_450_877_170_130_373_892_202_874_869_873_999_284_399_697_282_332_064_948_148_602_583_340_776_692_090_472_558_740_998_357_203_838_580_321_412_679_020_304_645_826_371_196_718_081_108_049_114_160_630_664_514_340_729_769_453_281_682_773_898_619_827_376_232_969_899_348_462_205_389_310_883_299_183_817_817_999_273_916_446_620_095_414_233_374_619_948_098_516_821_650_069_821_783_810_210_582_035_456_563_335_930_330_252_551_528_035_801_173_640_288_329_718_719_895_926_309_416_142_129_926_226_047_930_429_802_084_560_488_897_717_417_403_272_782_469_039_131_379_953_278_833_320_195_233_761_955_815_307_522_871_787_339_192_744_439_894_317_730_207_141_881_699_363_391_788_150_650_217_284_777_541_358_381_165_360_697_136_307_663_640_904_621_178_632_289_787,
65537}}
test "test get_public_key_for_url/1 with remote actor" do
assert Actor.get_public_key_for_url(@remote_account_url) == @remote_actor_key
end
@@ -260,18 +283,14 @@ defmodule Mobilizon.ActorsTest do
@update_attrs %{email: "foo@fighters.tld", password: "some updated password", role: 43}
@invalid_attrs %{email: nil, password_hash: nil, role: nil}
def user_fixture(attrs \\ %{}) do
insert(:user)
end
test "list_users/0 returns all users" do
user = user_fixture()
user = insert(:user)
users = Actors.list_users()
assert users = [user]
assert users == [user]
end
test "get_user!/1 returns the user with given id" do
user = user_fixture()
user = insert(:user)
assert user = Actors.get_user!(user.id)
end
@@ -288,7 +307,7 @@ defmodule Mobilizon.ActorsTest do
end
test "update_user/2 with valid data updates the user" do
user = user_fixture()
user = insert(:user)
assert {:ok, user} = Actors.update_user(user, @update_attrs)
assert %User{} = user
assert user.email == "foo@fighters.tld"
@@ -296,19 +315,19 @@ defmodule Mobilizon.ActorsTest do
end
test "update_user/2 with invalid data returns error changeset" do
user = user_fixture()
user = insert(:user)
assert {:error, %Ecto.Changeset{}} = Actors.update_user(user, @invalid_attrs)
assert user = Actors.get_user!(user.id)
end
test "delete_user/1 deletes the user" do
user = user_fixture()
user = insert(:user)
assert {:ok, %User{}} = Actors.delete_user(user)
assert_raise Ecto.NoResultsError, fn -> Actors.get_user!(user.id) end
end
test "change_user/1 returns a user changeset" do
user = user_fixture()
user = insert(:user)
assert %Ecto.Changeset{} = Actors.change_user(user)
end
@@ -335,7 +354,7 @@ defmodule Mobilizon.ActorsTest do
end
test "get_user_by_email/1 finds an activated user by it's email" do
{:ok, %Actor{user: %User{email: email} = user} = _actor} =
{:ok, %Actor{user: user}} =
Actors.register(%{email: @email, password: @password, username: "yolo"})
{:ok, %User{id: id}} = Actors.get_user_by_email(@email, false)
@@ -393,19 +412,15 @@ defmodule Mobilizon.ActorsTest do
@update_attrs %{source: "some updated source", type: "some updated type"}
@invalid_attrs %{source: nil, type: nil}
def bot_fixture(attrs \\ %{}) do
insert(:bot)
end
test "list_bots/0 returns all bots" do
bot = bot_fixture()
bots = Actors.list_bots()
assert bots = [bot]
bot = insert(:bot)
bot_found_id = Actors.list_bots() |> hd |> Map.get(:id)
assert bot_found_id == bot.id
end
test "get_bot!/1 returns the bot with given id" do
bot = bot_fixture()
assert bot = Actors.get_bot!(bot.id)
%Bot{id: bot_id} = bot = insert(:bot)
assert bot_id == Actors.get_bot!(bot.id).id
end
test "create_bot/1 with valid data creates a bot" do
@@ -420,31 +435,36 @@ defmodule Mobilizon.ActorsTest do
end
test "create_bot/1 with invalid data returns error changeset" do
assert {:error, %Ecto.Changeset{}} = Actors.create_bot(@invalid_attrs)
with {:error, %Ecto.Changeset{}} <- Actors.create_bot(@invalid_attrs) do
assert true
else
_ ->
assert false
end
end
test "update_bot/2 with valid data updates the bot" do
bot = bot_fixture()
assert {:ok, bot} = Actors.update_bot(bot, @update_attrs)
assert %Bot{} = bot
assert bot.source == "some updated source"
assert bot.type == "some updated type"
with bot <- insert(:bot),
{:ok, %Bot{source: source, type: type}} <- Actors.update_bot(bot, @update_attrs) do
assert source == "some updated source"
assert type == "some updated type"
end
end
test "update_bot/2 with invalid data returns error changeset" do
bot = bot_fixture()
bot = insert(:bot)
assert {:error, %Ecto.Changeset{}} = Actors.update_bot(bot, @invalid_attrs)
assert bot = Actors.get_bot!(bot.id)
end
test "delete_bot/1 deletes the bot" do
bot = bot_fixture()
bot = insert(:bot)
assert {:ok, %Bot{}} = Actors.delete_bot(bot)
assert_raise Ecto.NoResultsError, fn -> Actors.get_bot!(bot.id) end
end
test "change_bot/1 returns a bot changeset" do
bot = bot_fixture()
bot = insert(:bot)
assert %Ecto.Changeset{} = Actors.change_bot(bot)
end
end
@@ -463,12 +483,12 @@ defmodule Mobilizon.ActorsTest do
{:ok, actor: actor, target_actor: target_actor}
end
defp create_follower(%{actor: actor, target_actor: target_actor}) do
defp create_test_follower(%{actor: actor, target_actor: target_actor}) do
insert(:follower, actor: actor, target_actor: target_actor)
end
test "get_follower!/1 returns the follower with given id", context do
follower = create_follower(context)
follower = create_test_follower(context)
assert follower = Actors.get_follower!(follower.id)
end
@@ -493,7 +513,7 @@ defmodule Mobilizon.ActorsTest do
actor: actor,
target_actor: target_actor
} do
create_follower(%{actor: actor, target_actor: target_actor})
create_test_follower(%{actor: actor, target_actor: target_actor})
valid_attrs =
@valid_attrs
@@ -516,7 +536,7 @@ defmodule Mobilizon.ActorsTest do
end
test "update_follower/2 with valid data updates the follower", context do
follower = create_follower(context)
follower = create_test_follower(context)
assert {:ok, follower} = Actors.update_follower(follower, @update_attrs)
assert %Follower{} = follower
assert follower.approved == false
@@ -524,19 +544,19 @@ defmodule Mobilizon.ActorsTest do
end
test "update_follower/2 with invalid data returns error changeset", context do
follower = create_follower(context)
follower = create_test_follower(context)
assert {:error, %Ecto.Changeset{}} = Actors.update_follower(follower, @invalid_attrs)
assert follower = Actors.get_follower!(follower.id)
end
test "delete_follower/1 deletes the follower", context do
follower = create_follower(context)
follower = create_test_follower(context)
assert {:ok, %Follower{}} = Actors.delete_follower(follower)
assert_raise Ecto.NoResultsError, fn -> Actors.get_follower!(follower.id) end
end
test "change_follower/1 returns a follower changeset", context do
follower = create_follower(context)
follower = create_test_follower(context)
assert %Ecto.Changeset{} = Actors.change_follower(follower)
end
end
@@ -555,12 +575,12 @@ defmodule Mobilizon.ActorsTest do
{:ok, actor: actor, group: group}
end
defp create_member(%{actor: actor, group: group}) do
defp create_test_member(%{actor: actor, group: group}) do
insert(:member, actor: actor, parent: group)
end
test "get_member!/1 returns the member with given id", context do
member = create_member(context)
member = create_test_member(context)
assert member = Actors.get_member!(member.id)
end
@@ -585,7 +605,7 @@ defmodule Mobilizon.ActorsTest do
actor: actor,
group: group
} do
create_member(%{actor: actor, group: group})
create_test_member(%{actor: actor, group: group})
valid_attrs =
@valid_attrs
@@ -595,10 +615,7 @@ defmodule Mobilizon.ActorsTest do
assert {:error, _member} = Actors.create_member(valid_attrs)
end
test "create_member/1 with invalid data returns error changeset", %{
actor: actor,
group: group
} do
test "create_member/1 with invalid data returns error changeset" do
invalid_attrs =
@invalid_attrs
|> Map.put(:actor_id, nil)
@@ -608,7 +625,7 @@ defmodule Mobilizon.ActorsTest do
end
test "update_member/2 with valid data updates the member", context do
member = create_member(context)
member = create_test_member(context)
assert {:ok, member} = Actors.update_member(member, @update_attrs)
assert %Member{} = member
assert member.approved == false
@@ -623,13 +640,13 @@ defmodule Mobilizon.ActorsTest do
# end
test "delete_member/1 deletes the member", context do
member = create_member(context)
member = create_test_member(context)
assert {:ok, %Member{}} = Actors.delete_member(member)
assert_raise Ecto.NoResultsError, fn -> Actors.get_member!(member.id) end
end
test "change_member/1 returns a member changeset", context do
member = create_member(context)
member = create_test_member(context)
assert %Ecto.Changeset{} = Actors.change_member(member)
end
end

View File

@@ -26,16 +26,16 @@ defmodule Mobilizon.AddressesTest do
streetAddress: "some updated streetAddress",
geom: %Geo.Point{coordinates: {20, -20}, srid: 4326}
}
@invalid_attrs %{
addressCountry: nil,
addressLocality: nil,
addressRegion: nil,
description: nil,
floor: nil,
postalCode: nil,
streetAddress: nil,
geom: nil
}
# @invalid_attrs %{
# addressCountry: nil,
# addressLocality: nil,
# addressRegion: nil,
# description: nil,
# floor: nil,
# postalCode: nil,
# streetAddress: nil,
# geom: nil
# }
def address_fixture(attrs \\ %{}) do
{:ok, address} =

View File

@@ -4,7 +4,6 @@ defmodule Mobilizon.EventsTest do
import Mobilizon.Factory
alias Mobilizon.Events
alias Mobilizon.Actors
@event_valid_attrs %{
begins_on: "2010-04-17 14:00:00.000000Z",
@@ -13,22 +12,6 @@ defmodule Mobilizon.EventsTest do
title: "some title"
}
def actor_fixture do
insert(:actor)
end
def address_fixture do
insert(:address)
end
def event_fixture do
insert(:event)
end
def category_fixture do
insert(:category)
end
describe "events" do
alias Mobilizon.Events.Event
@@ -78,14 +61,14 @@ defmodule Mobilizon.EventsTest do
assert event2.title == hd(Events.find_events_by_name(" Special ")).title
assert title = hd(Events.find_events_by_name("")).title
assert title2 = hd(tl(Events.find_events_by_name(""))).title
assert title == hd(Events.find_events_by_name("")).title
assert title2 == hd(tl(Events.find_events_by_name(""))).title
end
test "create_event/1 with valid data creates a event" do
actor = actor_fixture()
category = category_fixture()
address = address_fixture()
actor = insert(:actor)
category = insert(:category)
address = insert(:address)
valid_attrs =
@event_valid_attrs
@@ -94,11 +77,15 @@ defmodule Mobilizon.EventsTest do
|> Map.put(:category_id, category.id)
|> Map.put(:address_id, address.id)
assert {:ok, %Event{} = event} = Events.create_event(valid_attrs)
assert event.begins_on == DateTime.from_naive!(~N[2010-04-17 14:00:00.000000Z], "Etc/UTC")
assert event.description == "some description"
assert event.ends_on == DateTime.from_naive!(~N[2010-04-17 14:00:00.000000Z], "Etc/UTC")
assert event.title == "some title"
with {:ok, %Event{} = event} <- Events.create_event(valid_attrs) do
assert event.begins_on == DateTime.from_naive!(~N[2010-04-17 14:00:00.000000Z], "Etc/UTC")
assert event.description == "some description"
assert event.ends_on == DateTime.from_naive!(~N[2010-04-17 14:00:00.000000Z], "Etc/UTC")
assert event.title == "some title"
else
err ->
flunk("Failed to create an event #{inspect(err)}")
end
end
test "create_event/1 with invalid data returns error changeset" do
@@ -135,27 +122,40 @@ defmodule Mobilizon.EventsTest do
test "get_events_for_actor/3", %{actor: actor, event: event} do
event1 = insert(:event, organizer_actor: actor)
assert {:ok, [event_found, event1_found], 2} = Events.get_events_for_actor(actor, 1, 10)
with {:ok, events_found, 2} <- Events.get_events_for_actor(actor, 1, 10) do
event_ids = MapSet.new(events_found |> Enum.map(& &1.id))
assert event_ids == MapSet.new([event.id, event1.id])
else
err ->
flunk("Failed to get events for an actor #{inspect(err)}")
end
end
test "get_events_for_actor/3 with limited results", %{actor: actor, event: event} do
event1 = insert(:event, organizer_actor: actor)
assert {:ok, [event_found], 2} = Events.get_events_for_actor(actor, 1, 1)
with {:ok, [%Event{id: event_found_id}], 2} <- Events.get_events_for_actor(actor, 1, 1) do
assert event_found_id in [event.id, event1.id]
else
err ->
flunk("Failed to get limited events for an actor #{inspect(err)}")
end
end
test "get_event_by_url/1 with valid url", %{actor: actor, event: event} do
assert event = Events.get_event_by_url(event.url)
test "get_event_by_url/1 with valid url", %{event: %Event{id: event_id, url: event_url}} do
assert event_id == Events.get_event_by_url(event_url).id
end
test "get_event_by_url/1 with bad url", %{actor: actor, event: event} do
refute event == Events.get_event_by_url("not valid")
test "get_event_by_url/1 with bad url" do
assert is_nil(Events.get_event_by_url("not valid"))
end
test "get_event_by_url!/1 with valid url", %{actor: actor, event: event} do
assert event = Events.get_event_by_url!(event.url)
test "get_event_by_url!/1 with valid url", %{event: %Event{id: event_id, url: event_url}} do
assert event_id == Events.get_event_by_url!(event_url).id
end
test "get_event_by_url!/1 with bad url", %{actor: actor, event: event} do
test "get_event_by_url!/1 with bad url" do
assert_raise Ecto.NoResultsError, fn ->
Events.get_event_by_url!("not valid")
end
@@ -309,25 +309,35 @@ defmodule Mobilizon.EventsTest do
{:ok, participant: participant, event: event, actor: actor}
end
test "list_participants/0 returns all participants", %{participant: participant} do
assert [%Participant{} = participant] = Events.list_participants()
test "list_participants/0 returns all participants", %{
participant: %Participant{event_id: participant_event_id, actor_id: participant_actor_id}
} do
assert [participant_event_id] == Events.list_participants() |> Enum.map(& &1.event_id)
assert [participant_actor_id] == Events.list_participants() |> Enum.map(& &1.actor_id)
end
test "get_participant!/1 returns the participant for a given event and given actor", %{
event: %Event{id: event_id} = _event,
actor: %Actor{id: actor_id} = _actor
event: %Event{id: event_id},
actor: %Actor{id: actor_id}
} do
assert %Participant{event_id: event_id, actor_id: actor_id} =
_participant = Events.get_participant!(event_id, actor_id)
assert event_id == Events.get_participant!(event_id, actor_id).event_id
assert actor_id == Events.get_participant!(event_id, actor_id).actor_id
end
test "create_participant/1 with valid data creates a participant" do
actor = actor_fixture()
event = event_fixture()
actor = insert(:actor)
event = insert(:event)
valid_attrs = Map.put(@valid_attrs, :event_id, event.id)
valid_attrs = Map.put(valid_attrs, :actor_id, actor.id)
assert {:ok, %Participant{} = participant} = Events.create_participant(valid_attrs)
assert participant.role == 42
with {:ok, %Participant{} = participant} <- Events.create_participant(valid_attrs) do
assert participant.event_id == event.id
assert participant.actor_id == actor.id
assert participant.role == 42
else
err ->
flunk("Failed to create a participant #{inspect(err)}")
end
end
test "create_participant/1 with invalid data returns error changeset" do
@@ -337,9 +347,13 @@ defmodule Mobilizon.EventsTest do
test "update_participant/2 with valid data updates the participant", %{
participant: participant
} do
assert {:ok, participant} = Events.update_participant(participant, @update_attrs)
assert %Participant{} = participant
assert participant.role == 43
with {:ok, %Participant{} = participant} <-
Events.update_participant(participant, @update_attrs) do
assert participant.role == 43
else
err ->
flunk("Failed to update a participant #{inspect(err)}")
end
end
test "update_participant/2 with invalid data returns error changeset", %{
@@ -392,7 +406,7 @@ defmodule Mobilizon.EventsTest do
}
def session_fixture(attrs \\ %{}) do
event = event_fixture()
event = insert(:event)
valid_attrs = Map.put(@valid_attrs, :event_id, event.id)
{:ok, session} =
@@ -414,7 +428,7 @@ defmodule Mobilizon.EventsTest do
end
test "create_session/1 with valid data creates a session" do
event = event_fixture()
event = insert(:event)
valid_attrs = Map.put(@valid_attrs, :event_id, event.id)
assert {:ok, %Session{} = session} = Events.create_session(valid_attrs)
assert session.audios_urls == "some audios_urls"
@@ -475,7 +489,7 @@ defmodule Mobilizon.EventsTest do
@invalid_attrs %{color: nil, description: nil, name: nil}
def track_fixture(attrs \\ %{}) do
event = event_fixture()
event = insert(:event)
valid_attrs = Map.put(@valid_attrs, :event_id, event.id)
{:ok, track} =
@@ -497,7 +511,7 @@ defmodule Mobilizon.EventsTest do
end
test "create_track/1 with valid data creates a track" do
event = event_fixture()
event = insert(:event)
valid_attrs = Map.put(@valid_attrs, :event_id, event.id)
assert {:ok, %Track{} = track} = Events.create_track(valid_attrs)
assert track.color == "some color"
@@ -543,28 +557,29 @@ defmodule Mobilizon.EventsTest do
@update_attrs %{text: "some updated text"}
@invalid_attrs %{text: nil, url: nil}
def comment_fixture() do
insert(:comment)
end
test "list_comments/0 returns all comments" do
comment = comment_fixture()
comments = Events.list_comments()
assert comments = [comment]
%Comment{id: comment_id} = insert(:comment)
comment_ids = Events.list_comments() |> Enum.map(& &1.id)
assert comment_ids == [comment_id]
end
test "get_comment!/1 returns the comment with given id" do
comment = comment_fixture()
comment_fetched = Events.get_comment!(comment.id)
assert comment_fetched = comment
%Comment{id: comment_id} = insert(:comment)
comment_fetched = Events.get_comment!(comment_id)
assert comment_fetched.id == comment_id
end
test "create_comment/1 with valid data creates a comment" do
actor = actor_fixture()
actor = insert(:actor)
comment_data = Map.merge(@valid_attrs, %{actor_id: actor.id})
assert {:ok, %Comment{} = comment} = Events.create_comment(comment_data)
assert comment.text == "some text"
assert comment.actor_id == actor.id
with {:ok, %Comment{} = comment} <- Events.create_comment(comment_data) do
assert comment.text == "some text"
assert comment.actor_id == actor.id
else
err ->
flunk("Failed to create a comment #{inspect(err)}")
end
end
test "create_comment/1 with invalid data returns error changeset" do
@@ -572,27 +587,31 @@ defmodule Mobilizon.EventsTest do
end
test "update_comment/2 with valid data updates the comment" do
comment = comment_fixture()
assert {:ok, comment} = Events.update_comment(comment, @update_attrs)
assert %Comment{} = comment
assert comment.text == "some updated text"
comment = insert(:comment)
with {:ok, %Comment{} = comment} <- Events.update_comment(comment, @update_attrs) do
assert comment.text == "some updated text"
else
err ->
flunk("Failed to update a comment #{inspect(err)}")
end
end
test "update_comment/2 with invalid data returns error changeset" do
comment = comment_fixture()
comment = insert(:comment)
assert {:error, %Ecto.Changeset{}} = Events.update_comment(comment, @invalid_attrs)
comment_fetched = Events.get_comment!(comment.id)
assert comment = comment_fetched
end
test "delete_comment/1 deletes the comment" do
comment = comment_fixture()
comment = insert(:comment)
assert {:ok, %Comment{}} = Events.delete_comment(comment)
assert_raise Ecto.NoResultsError, fn -> Events.get_comment!(comment.id) end
end
test "change_comment/1 returns a comment changeset" do
comment = comment_fixture()
comment = insert(:comment)
assert %Ecto.Changeset{} = Events.change_comment(comment)
end
end

View File

@@ -7,7 +7,6 @@ defmodule Mobilizon.Service.Activitypub.ActivitypubTest do
alias Mobilizon.Actors.Actor
alias Mobilizon.Actors
alias Mobilizon.Service.ActivityPub
alias Mobilizon.Activity
describe "fetching actor from it's url" do
test "returns an actor from nickname" do
@@ -40,12 +39,16 @@ defmodule Mobilizon.Service.Activitypub.ActivitypubTest do
end
describe "fetching an" do
test "event by url" do
test "object by url" do
{:ok, object} =
ActivityPub.fetch_event_from_url("https://social.tcit.fr/@tcit/99908779444618462")
ActivityPub.fetch_object_from_url(
"https://social.tcit.fr/users/tcit/statuses/99908779444618462"
)
{:ok, object_again} =
ActivityPub.fetch_event_from_url("https://social.tcit.fr/@tcit/99908779444618462")
ActivityPub.fetch_object_from_url(
"https://social.tcit.fr/users/tcit/statuses/99908779444618462"
)
assert object == object_again
end

View File

@@ -2,10 +2,9 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
use MobilizonWeb.ConnCase
import Mobilizon.Factory
alias MobilizonWeb.ActivityPub.{ActorView, ObjectView}
alias Mobilizon.{Repo, Actors, Actors.Actor}
alias Mobilizon.Actors
alias Mobilizon.Service.ActivityPub
alias Mobilizon.Activity
import Logger
alias Mobilizon.Service.ActivityPub.Utils
describe "/@:preferred_username" do
test "it returns a json representation of the actor", %{conn: conn} do
@@ -19,7 +18,6 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
actor = Actors.get_actor!(actor.id)
assert json_response(conn, 200) == ActorView.render("actor.json", %{actor: actor})
Logger.error(inspect(ActorView.render("actor.json", %{actor: actor})))
end
end
@@ -32,8 +30,8 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
|> put_req_header("accept", "application/activity+json")
|> get("/events/#{event.uuid}")
assert json_response(conn, 200) == ObjectView.render("event.json", %{event: event})
Logger.error(inspect(ObjectView.render("event.json", %{event: event})))
assert json_response(conn, 200) ==
ObjectView.render("event.json", %{event: event |> Utils.make_event_data()})
end
test "it returns 404 for non-public events", %{conn: conn} do
@@ -60,7 +58,7 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
assert "ok" == json_response(conn, 200)
:timer.sleep(500)
assert ActivityPub.fetch_object_from_url(data["object"]["id"], :note)
assert ActivityPub.fetch_object_from_url(data["object"]["id"])
end
end

View File

@@ -26,12 +26,13 @@ defmodule MobilizonWeb.NodeInfoControllerTest do
resp = json_response(conn, 200)
assert resp = %{
assert resp == %{
"metadata" => %{"nodeName" => Keyword.get(@instance, :name)},
"openRegistrations" => Keyword.get(@instance, :registrations_open),
"protocols" => ["activitypub"],
"services" => %{"inbound" => [], "outbound" => []},
"software" => %{"name" => "mobilizon", "version" => Keyword.get(@instance, :version)},
"usage" => %{"localComments" => 0, "localPosts" => 0, "users" => %{"total" => 0}},
"version" => "2.0"
}
end

View File

@@ -1,9 +1,7 @@
defmodule MobilizonWeb.Resolvers.ActorResolverTest do
use MobilizonWeb.ConnCase
alias Mobilizon.{Events, Actors}
alias Mobilizon.Actors.Actor
alias Mobilizon.Actors
alias MobilizonWeb.AbsintheHelpers
import Mobilizon.Factory
@valid_actor_params %{email: "test@test.tld", password: "testest", username: "test"}
@non_existent_username "nonexistent"

View File

@@ -52,7 +52,7 @@ defmodule MobilizonWeb.Resolvers.EventResolverTest do
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
assert [%{"message" => "Argument \"uuid\" has invalid value \"bad uuid\"."}] =
json_response(res, 400)["errors"]
json_response(res, 200)["errors"]
end
test "list_participants_for_event/3 returns participants for an event", context do

View File

@@ -1,13 +1,11 @@
defmodule MobilizonWeb.Resolvers.UserResolverTest do
use MobilizonWeb.ConnCase
alias Mobilizon.{Events, Actors}
alias Mobilizon.Actors.{Actor, User}
alias Mobilizon.Actors
alias MobilizonWeb.AbsintheHelpers
import Mobilizon.Factory
use Bamboo.Test
@valid_actor_params %{email: "test@test.tld", password: "testest", username: "test"}
@non_existent_username "nonexistent"
describe "User Resolver" do
test "find_user/3 returns an user by it's id", context do
@@ -161,7 +159,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
end
test "test validate_user/3 with invalid token doesn't validate an user", context do
{:ok, actor} = Actors.register(@valid_actor_params)
{:ok, _actor} = Actors.register(@valid_actor_params)
mutation = """
mutation {
@@ -219,7 +217,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
test "test resend_confirmation_email/3 with invalid email resends an validation email",
context do
{:ok, actor} = Actors.register(@valid_actor_params)
{:ok, _actor} = Actors.register(@valid_actor_params)
mutation = """
mutation {