Added mix commands to manage users and view actors
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
52
test/tasks/actors_test.exs
Normal file
52
test/tasks/actors_test.exs
Normal file
@@ -0,0 +1,52 @@
|
||||
defmodule Mix.Tasks.Mobilizon.ActorsTest do
|
||||
use Mobilizon.DataCase
|
||||
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mix.Tasks.Mobilizon.Actors.Show
|
||||
import Mobilizon.Factory
|
||||
|
||||
Mix.shell(Mix.Shell.Process)
|
||||
|
||||
@username "someone"
|
||||
@domain "somewhere.tld"
|
||||
|
||||
describe "show actor" do
|
||||
test "show existing local actor" do
|
||||
%Actor{} = actor = insert(:actor, preferred_username: @username)
|
||||
|
||||
output = """
|
||||
Informations for the actor #{@username}:
|
||||
- Type: Person
|
||||
- Domain: Local
|
||||
- Name: #{actor.name}
|
||||
- Summary: #{actor.summary}
|
||||
- User: #{actor.user.email}
|
||||
"""
|
||||
|
||||
Show.run([@username])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
assert output_received == output
|
||||
end
|
||||
|
||||
test "show existing remote actor" do
|
||||
%Actor{} = actor = insert(:actor, preferred_username: @username, user: nil, domain: @domain)
|
||||
|
||||
output = """
|
||||
Informations for the actor #{@username}:
|
||||
- Type: Person
|
||||
- Domain: #{@domain}
|
||||
- Name: #{actor.name}
|
||||
- Summary: #{actor.summary}
|
||||
- User: Remote
|
||||
"""
|
||||
|
||||
Show.run(["#{@username}@#{@domain}"])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
assert output_received == output
|
||||
end
|
||||
|
||||
test "show non-existing actor" do
|
||||
assert_raise Mix.Error, "Error: No such actor", fn -> Show.run([@username]) end
|
||||
end
|
||||
end
|
||||
end
|
||||
158
test/tasks/users_test.exs
Normal file
158
test/tasks/users_test.exs
Normal file
@@ -0,0 +1,158 @@
|
||||
defmodule Mix.Tasks.Mobilizon.UsersTest do
|
||||
use Mobilizon.DataCase
|
||||
|
||||
alias Mobilizon.Users
|
||||
alias Mobilizon.Users.User
|
||||
alias Mix.Tasks.Mobilizon.Users.{New, Delete, Show, Modify}
|
||||
import Mobilizon.Factory
|
||||
|
||||
Mix.shell(Mix.Shell.Process)
|
||||
|
||||
@email "test@email.tld"
|
||||
describe "create user" do
|
||||
test "create with no options" do
|
||||
New.run([@email])
|
||||
|
||||
assert {:ok, %User{email: email, role: role, confirmed_at: confirmed_at}} =
|
||||
Users.get_user_by_email(@email)
|
||||
|
||||
assert email == @email
|
||||
assert role == :user
|
||||
refute is_nil(confirmed_at)
|
||||
end
|
||||
|
||||
test "create a moderator" do
|
||||
New.run([@email, "--moderator"])
|
||||
|
||||
assert {:ok, %User{email: email, role: role}} = Users.get_user_by_email(@email)
|
||||
assert email == @email
|
||||
assert role == :moderator
|
||||
end
|
||||
|
||||
test "create an administrator" do
|
||||
New.run([@email, "--admin"])
|
||||
|
||||
assert {:ok, %User{email: email, role: role}} = Users.get_user_by_email(@email)
|
||||
assert email == @email
|
||||
assert role == :administrator
|
||||
end
|
||||
|
||||
test "create with already used email" do
|
||||
insert(:user, email: @email)
|
||||
|
||||
assert_raise Mix.Error, "User has not been created because of the above reason.", fn ->
|
||||
New.run([@email])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "delete user" do
|
||||
test "delete existing user" do
|
||||
insert(:user, email: @email)
|
||||
Delete.run([@email, "-y"])
|
||||
assert {:error, :user_not_found} == Users.get_user_by_email(@email)
|
||||
end
|
||||
|
||||
test "delete non-existing user" do
|
||||
assert_raise Mix.Error, "Error: No such user", fn -> Delete.run([@email, "-y"]) end
|
||||
end
|
||||
end
|
||||
|
||||
describe "show user" do
|
||||
test "show existing user" do
|
||||
%User{confirmed_at: confirmed_at, role: role} = user = insert(:user, email: @email)
|
||||
actor1 = insert(:actor, user: user)
|
||||
actor2 = insert(:actor, user: user)
|
||||
|
||||
output =
|
||||
"Informations for the user #{@email}:\n - Activated: #{confirmed_at}\n - Role: #{role}\n Identities (2):\n - @#{
|
||||
actor1.preferred_username
|
||||
} / \n - @#{actor2.preferred_username} / \n\n\n"
|
||||
|
||||
Show.run([@email])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
assert output_received == output
|
||||
end
|
||||
|
||||
test "show non-existing user" do
|
||||
assert_raise Mix.Error, "Error: No such user", fn -> Show.run([@email]) end
|
||||
end
|
||||
end
|
||||
|
||||
describe "modify user" do
|
||||
test "modify existing user without any changes" do
|
||||
insert(:user, email: @email)
|
||||
|
||||
Modify.run([@email])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
assert output_received == "No change has been made"
|
||||
end
|
||||
|
||||
test "promote an user to moderator" do
|
||||
insert(:user, email: @email)
|
||||
|
||||
Modify.run([@email, "--moderator"])
|
||||
assert {:ok, %User{role: role}} = Users.get_user_by_email(@email)
|
||||
assert role == :moderator
|
||||
end
|
||||
|
||||
test "promote an user to administrator" do
|
||||
insert(:user, email: @email)
|
||||
|
||||
Modify.run([@email, "--admin"])
|
||||
assert {:ok, %User{role: role}} = Users.get_user_by_email(@email)
|
||||
assert role == :administrator
|
||||
|
||||
Modify.run([@email, "--user"])
|
||||
assert {:ok, %User{role: role}} = Users.get_user_by_email(@email)
|
||||
assert role == :user
|
||||
end
|
||||
|
||||
test "disable and enable an user" do
|
||||
user = insert(:user, email: @email)
|
||||
|
||||
Modify.run([@email, "--disable"])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
|
||||
assert output_received ==
|
||||
"An user has been modified with the following information:\n - email: #{
|
||||
user.email
|
||||
}\n - Role: #{user.role}\n - Activated: False\n"
|
||||
|
||||
assert {:ok, %User{email: email, confirmed_at: confirmed_at}} =
|
||||
Users.get_user_by_email(@email)
|
||||
|
||||
assert is_nil(confirmed_at)
|
||||
|
||||
Modify.run([@email, "--enable"])
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
|
||||
assert {:ok, %User{email: email, confirmed_at: confirmed_at}} =
|
||||
Users.get_user_by_email(@email)
|
||||
|
||||
assert output_received ==
|
||||
"An user has been modified with the following information:\n - email: #{
|
||||
user.email
|
||||
}\n - Role: #{user.role}\n - Activated: #{confirmed_at}\n"
|
||||
|
||||
refute is_nil(confirmed_at)
|
||||
|
||||
Modify.run([@email, "--enable"])
|
||||
|
||||
assert {:ok, %User{email: email, confirmed_at: confirmed_at}} =
|
||||
Users.get_user_by_email(@email)
|
||||
|
||||
refute is_nil(confirmed_at)
|
||||
assert_received {:mix_shell, :info, [output_received]}
|
||||
assert output_received == "No change has been made"
|
||||
end
|
||||
|
||||
test "enable and disable at the same time" do
|
||||
assert_raise Mix.Error,
|
||||
"Can't use both --enabled and --disable options at the same time.",
|
||||
fn ->
|
||||
Modify.run([@email, "--disable", "--enable"])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user