Extract User from Actors context
Mobilizon.Actors.User -> Mobilizon.Users.User Also Mobilizon.Actors.Service now become Mobilizon.User.Service And Mobilizon.Users and Mobilizon.UsersTest is introduced. Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -2,7 +2,8 @@ defmodule Mobilizon.ActorsTest do
|
||||
use Mobilizon.DataCase
|
||||
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Actors.{Actor, Member, Follower, User, Bot}
|
||||
alias Mobilizon.Actors.{Actor, Member, Follower, Bot}
|
||||
alias Mobilizon.Users
|
||||
import Mobilizon.Factory
|
||||
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||
|
||||
@@ -60,13 +61,13 @@ defmodule Mobilizon.ActorsTest do
|
||||
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
|
||||
assert actor_id == Users.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_id = insert(:actor, user: user).id
|
||||
assert actor_id == Actors.get_actor_for_user(user).id
|
||||
assert actor_id == Users.get_actor_for_user(user).id
|
||||
end
|
||||
|
||||
test "get_actor_with_everything/1 returns the actor with it's organized events", %{
|
||||
@@ -265,104 +266,6 @@ defmodule Mobilizon.ActorsTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "users" do
|
||||
alias Mobilizon.Actors.{User, Actor}
|
||||
|
||||
@valid_attrs %{email: "foo@bar.tld", password: "some password"}
|
||||
@update_attrs %{email: "foo@fighters.tld", password: "some updated password"}
|
||||
@invalid_attrs %{email: nil, password: nil}
|
||||
|
||||
test "list_users/0 returns all users" do
|
||||
user = insert(:user)
|
||||
users = Actors.list_users(nil, nil, :id, :desc)
|
||||
assert [user.id] == users |> Enum.map(& &1.id)
|
||||
end
|
||||
|
||||
test "get_user!/1 returns the user with given id" do
|
||||
user = insert(:user)
|
||||
assert user = Actors.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} = Actors.register(@valid_attrs)
|
||||
|
||||
assert email == @valid_attrs.email
|
||||
end
|
||||
|
||||
test "create_user/1 with invalid data returns error changeset" do
|
||||
assert {:error,
|
||||
%Ecto.Changeset{
|
||||
errors: [
|
||||
password: {"can't be blank", [validation: :required]},
|
||||
email: {"can't be blank", [validation: :required]}
|
||||
],
|
||||
valid?: false
|
||||
}} = Actors.register(@invalid_attrs)
|
||||
end
|
||||
|
||||
test "update_user/2 with valid data updates the user" do
|
||||
user = insert(:user)
|
||||
assert {:ok, %User{email: email}} = Actors.update_user(user, @update_attrs)
|
||||
assert email == "foo@fighters.tld"
|
||||
end
|
||||
|
||||
test "update_user/2 with invalid data returns error changeset" do
|
||||
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 = 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 = insert(:user)
|
||||
# assert %Ecto.Changeset{} = Actors.change_user(user)
|
||||
# end
|
||||
|
||||
@email "email@domain.tld"
|
||||
@password "password"
|
||||
test "authenticate/1 checks the user's password" do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
assert {:ok, _, _} = Actors.authenticate(%{user: user, password: @password})
|
||||
|
||||
assert {:error, :unauthorized} ==
|
||||
Actors.authenticate(%{user: user, password: "bad password"})
|
||||
end
|
||||
|
||||
test "get_user_by_email/1 finds an user by it's email" do
|
||||
{:ok, %User{email: email} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
assert email == @email
|
||||
{:ok, %User{id: id}} = Actors.get_user_by_email(@email)
|
||||
assert id == user.id
|
||||
assert {:error, :user_not_found} = Actors.get_user_by_email("no email")
|
||||
end
|
||||
|
||||
test "get_user_by_email/1 finds an activated user by it's email" do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
{:ok, %User{id: id}} = Actors.get_user_by_email(@email, false)
|
||||
assert id == user.id
|
||||
assert {:error, :user_not_found} = Actors.get_user_by_email(@email, true)
|
||||
|
||||
Actors.update_user(user, %{
|
||||
"confirmed_at" => DateTime.utc_now() |> DateTime.truncate(:second),
|
||||
"confirmation_sent_at" => nil,
|
||||
"confirmation_token" => nil
|
||||
})
|
||||
|
||||
assert {:error, :user_not_found} = Actors.get_user_by_email(@email, false)
|
||||
{:ok, %User{id: id}} = Actors.get_user_by_email(@email, true)
|
||||
assert id == user.id
|
||||
end
|
||||
end
|
||||
|
||||
describe "groups" do
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Actors.Actor
|
||||
|
||||
105
test/mobilizon/users/users_test.exs
Normal file
105
test/mobilizon/users/users_test.exs
Normal file
@@ -0,0 +1,105 @@
|
||||
defmodule Mobilizon.UsersTest do
|
||||
use Mobilizon.DataCase
|
||||
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Users
|
||||
alias Mobilizon.Users.User
|
||||
import Mobilizon.Factory
|
||||
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||
|
||||
describe "users" do
|
||||
@valid_attrs %{email: "foo@bar.tld", password: "some password"}
|
||||
@update_attrs %{email: "foo@fighters.tld", password: "some updated password"}
|
||||
@invalid_attrs %{email: nil, password: nil}
|
||||
|
||||
test "list_users/0 returns all users" do
|
||||
user = insert(:user)
|
||||
users = Users.list_users(nil, nil, :id, :desc)
|
||||
assert [user.id] == users |> Enum.map(& &1.id)
|
||||
end
|
||||
|
||||
test "get_user!/1 returns the user with given id" do
|
||||
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} = Actors.register(@valid_attrs)
|
||||
|
||||
assert email == @valid_attrs.email
|
||||
end
|
||||
|
||||
test "create_user/1 with invalid data returns error changeset" do
|
||||
assert {:error,
|
||||
%Ecto.Changeset{
|
||||
errors: [
|
||||
password: {"can't be blank", [validation: :required]},
|
||||
email: {"can't be blank", [validation: :required]}
|
||||
],
|
||||
valid?: false
|
||||
}} = Actors.register(@invalid_attrs)
|
||||
end
|
||||
|
||||
test "update_user/2 with valid data updates the user" do
|
||||
user = insert(:user)
|
||||
assert {:ok, %User{email: email}} = Users.update_user(user, @update_attrs)
|
||||
assert email == "foo@fighters.tld"
|
||||
end
|
||||
|
||||
test "update_user/2 with invalid data returns error changeset" do
|
||||
user = insert(:user)
|
||||
assert {:error, %Ecto.Changeset{}} = Users.update_user(user, @invalid_attrs)
|
||||
assert user = Users.get_user!(user.id)
|
||||
end
|
||||
|
||||
test "delete_user/1 deletes the user" do
|
||||
user = insert(:user)
|
||||
assert {:ok, %User{}} = Users.delete_user(user)
|
||||
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"
|
||||
test "authenticate/1 checks the user's password" do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
assert {:ok, _, _} = Users.authenticate(%{user: user, password: @password})
|
||||
|
||||
assert {:error, :unauthorized} ==
|
||||
Users.authenticate(%{user: user, password: "bad password"})
|
||||
end
|
||||
|
||||
test "get_user_by_email/1 finds an user by it's email" do
|
||||
{:ok, %User{email: email} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
assert email == @email
|
||||
{:ok, %User{id: id}} = Users.get_user_by_email(@email)
|
||||
assert id == user.id
|
||||
assert {:error, :user_not_found} = Users.get_user_by_email("no email")
|
||||
end
|
||||
|
||||
test "get_user_by_email/1 finds an activated user by it's email" do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: @email, password: @password})
|
||||
|
||||
{:ok, %User{id: id}} = Users.get_user_by_email(@email, false)
|
||||
assert id == user.id
|
||||
assert {:error, :user_not_found} = Users.get_user_by_email(@email, true)
|
||||
|
||||
Users.update_user(user, %{
|
||||
"confirmed_at" => DateTime.utc_now() |> DateTime.truncate(:second),
|
||||
"confirmation_sent_at" => nil,
|
||||
"confirmation_token" => nil
|
||||
})
|
||||
|
||||
assert {:error, :user_not_found} = Users.get_user_by_email(@email, false)
|
||||
{:ok, %User{id: id}} = Users.get_user_by_email(@email, true)
|
||||
assert id == user.id
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,8 +1,10 @@
|
||||
defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
use MobilizonWeb.ConnCase
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Actors.{User, Actor}
|
||||
alias Mobilizon.{Actors, Users}
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Users.User
|
||||
alias MobilizonWeb.AbsintheHelpers
|
||||
alias Mobilizon.Users.Service.ResetPassword
|
||||
import Mobilizon.Factory
|
||||
use Bamboo.Test
|
||||
|
||||
@@ -431,7 +433,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
"You requested again a confirmation email too soon"
|
||||
|
||||
# Hammer time !
|
||||
Mobilizon.Actors.update_user(user, %{
|
||||
Mobilizon.Users.update_user(user, %{
|
||||
confirmation_sent_at: Timex.shift(user.confirmation_sent_at, hours: -3)
|
||||
})
|
||||
|
||||
@@ -503,8 +505,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
test "test reset_password/3 with valid email", context do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: "toto@tata.tld", password: "p4ssw0rd"})
|
||||
%Actor{} = insert(:actor, user: user)
|
||||
{:ok, _email_sent} = Mobilizon.Actors.Service.ResetPassword.send_password_reset_email(user)
|
||||
%User{reset_password_token: reset_password_token} = Mobilizon.Actors.get_user!(user.id)
|
||||
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
|
||||
%User{reset_password_token: reset_password_token} = Mobilizon.Users.get_user!(user.id)
|
||||
|
||||
mutation = """
|
||||
mutation {
|
||||
@@ -528,8 +530,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
|
||||
test "test reset_password/3 with a password too short", context do
|
||||
%User{} = user = insert(:user)
|
||||
{:ok, _email_sent} = Mobilizon.Actors.Service.ResetPassword.send_password_reset_email(user)
|
||||
%User{reset_password_token: reset_password_token} = Mobilizon.Actors.get_user!(user.id)
|
||||
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
|
||||
%User{reset_password_token: reset_password_token} = Mobilizon.Users.get_user!(user.id)
|
||||
|
||||
mutation = """
|
||||
mutation {
|
||||
@@ -554,8 +556,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
|
||||
test "test reset_password/3 with an invalid token", context do
|
||||
%User{} = user = insert(:user)
|
||||
{:ok, _email_sent} = Mobilizon.Actors.Service.ResetPassword.send_password_reset_email(user)
|
||||
%User{} = Mobilizon.Actors.get_user!(user.id)
|
||||
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
|
||||
%User{} = Mobilizon.Users.get_user!(user.id)
|
||||
|
||||
mutation = """
|
||||
mutation {
|
||||
@@ -584,7 +586,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: "toto@tata.tld", password: "p4ssw0rd"})
|
||||
|
||||
{:ok, %User{} = _user} =
|
||||
Actors.update_user(user, %{
|
||||
Users.update_user(user, %{
|
||||
"confirmed_at" => DateTime.utc_now() |> DateTime.truncate(:second),
|
||||
"confirmation_sent_at" => nil,
|
||||
"confirmation_token" => nil
|
||||
@@ -616,7 +618,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
{:ok, %User{} = user} = Actors.register(%{email: "toto@tata.tld", password: "p4ssw0rd"})
|
||||
|
||||
{:ok, %User{} = _user} =
|
||||
Actors.update_user(user, %{
|
||||
Users.update_user(user, %{
|
||||
"confirmed_at" => DateTime.utc_now() |> DateTime.truncate(:second),
|
||||
"confirmation_sent_at" => nil,
|
||||
"confirmation_token" => nil
|
||||
@@ -677,12 +679,12 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
|
||||
user = insert(:user)
|
||||
insert(:actor, user: user)
|
||||
|
||||
assert {:ok, %User{actors: actors}} = Actors.get_user_with_actors(user.id)
|
||||
assert {:ok, %User{actors: actors}} = Users.get_user_with_actors(user.id)
|
||||
|
||||
actor_params = @valid_single_actor_params |> Map.put(:user_id, user.id)
|
||||
assert {:ok, %Actor{} = actor2} = Actors.create_actor(actor_params)
|
||||
|
||||
assert {:ok, %User{actors: actors}} = Actors.get_user_with_actors(user.id)
|
||||
assert {:ok, %User{actors: actors}} = Users.get_user_with_actors(user.id)
|
||||
assert length(actors) == 2
|
||||
|
||||
mutation = """
|
||||
|
||||
@@ -24,7 +24,7 @@ defmodule MobilizonWeb.ConnCase do
|
||||
# The default endpoint for testing
|
||||
@endpoint MobilizonWeb.Endpoint
|
||||
|
||||
def auth_conn(%Plug.Conn{} = conn, %Mobilizon.Actors.User{} = user) do
|
||||
def auth_conn(%Plug.Conn{} = conn, %Mobilizon.Users.User{} = user) do
|
||||
{:ok, token, _claims} = MobilizonWeb.Guardian.encode_and_sign(user)
|
||||
|
||||
conn
|
||||
|
||||
@@ -6,7 +6,7 @@ defmodule Mobilizon.Factory do
|
||||
use ExMachina.Ecto, repo: Mobilizon.Repo
|
||||
|
||||
def user_factory do
|
||||
%Mobilizon.Actors.User{
|
||||
%Mobilizon.Users.User{
|
||||
password_hash: "Jane Smith",
|
||||
email: sequence(:email, &"email-#{&1}@example.com"),
|
||||
role: 0,
|
||||
|
||||
Reference in New Issue
Block a user