Allow multiple identities (accounts actors) for one user.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2018-07-10 10:00:07 +02:00
parent a71b81af91
commit dee437e4f3
45 changed files with 155 additions and 156 deletions

View File

@@ -6,15 +6,15 @@ defmodule EventosWeb.ActorControllerTest do
alias Eventos.Actors
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
{:ok, conn: conn, user: user}
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user, actor: actor}
end
describe "index" do
test "lists all actors", %{conn: conn, user: user} do
test "lists all actors", %{conn: conn, user: user, actor: actor} do
conn = get conn, actor_path(conn, :index)
assert hd(json_response(conn, 200)["data"])["username"] == user.actor.preferred_username
assert hd(json_response(conn, 200)["data"])["username"] == actor.preferred_username
end
end
@@ -41,9 +41,4 @@ defmodule EventosWeb.ActorControllerTest do
# assert response(conn, 200)
# end
# end
defp create_actor(_) do
actor = insert(:actor)
{:ok, actor: actor}
end
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.AddressControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user}
end

View File

@@ -11,8 +11,8 @@ defmodule EventosWeb.BotControllerTest do
@invalid_attrs %{source: nil, type: nil, name: nil}
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: put_req_header(conn, "accept", "application/json"), user: user}
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.CategoryControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user}
end

View File

@@ -11,15 +11,14 @@ defmodule EventosWeb.CommentControllerTest do
@invalid_attrs %{text: nil, url: nil}
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
{:ok, conn: put_req_header(conn, "accept", "application/json"), user: user}
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: put_req_header(conn, "accept", "application/json"), user: user, actor: actor}
end
describe "create comment" do
test "renders comment when data is valid", %{conn: conn, user: user} do
test "renders comment when data is valid", %{conn: conn, user: user, actor: actor} do
conn = auth_conn(conn, user)
actor = insert(:actor)
attrs = Map.merge(@create_attrs, %{actor_id: actor.id})
conn = post conn, comment_path(conn, :create), comment: attrs
assert %{"uuid" => uuid, "id" => id} = json_response(conn, 201)["data"]
@@ -43,9 +42,8 @@ defmodule EventosWeb.CommentControllerTest do
describe "update comment" do
setup [:create_comment]
test "renders comment when data is valid", %{conn: conn, comment: %Comment{id: id, uuid: uuid} = comment, user: user} do
test "renders comment when data is valid", %{conn: conn, comment: %Comment{id: id, uuid: uuid} = comment, user: user, actor: actor} do
conn = auth_conn(conn, user)
actor = insert(:actor)
attrs = Map.merge(@update_attrs, %{actor_id: actor.id})
conn = put conn, comment_path(conn, :update, uuid), comment: attrs
assert %{"uuid" => uuid, "id" => id} = json_response(conn, 200)["data"]

View File

@@ -21,9 +21,9 @@ defmodule EventosWeb.EventControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
{:ok, conn: conn, user: user}
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user, actor: actor}
end
describe "index" do
@@ -34,8 +34,8 @@ defmodule EventosWeb.EventControllerTest do
end
describe "create event" do
test "renders event when data is valid", %{conn: conn, user: user} do
attrs = Map.put(@create_attrs, :organizer_actor_id, user.actor.id)
test "renders event when data is valid", %{conn: conn, user: user, actor: actor} do
attrs = Map.put(@create_attrs, :organizer_actor_id, actor.id)
attrs = Map.put(attrs, "physical_address", @create_address_attrs)
category = insert(:category)
@@ -55,9 +55,9 @@ defmodule EventosWeb.EventControllerTest do
} = json_response(conn, 200)["data"]
end
test "renders errors when data is invalid", %{conn: conn, user: user} do
test "renders errors when data is invalid", %{conn: conn, user: user, actor: actor} do
conn = auth_conn(conn, user)
attrs = Map.put(@invalid_attrs, :organizer_actor_id, user.actor.id)
attrs = Map.put(@invalid_attrs, :organizer_actor_id, actor.id)
attrs = Map.put(attrs, :address, @create_address_attrs)
conn = post conn, event_path(conn, :create), event: attrs
assert json_response(conn, 422)["errors"] != %{}
@@ -78,10 +78,10 @@ defmodule EventosWeb.EventControllerTest do
describe "update event" do
setup [:create_event]
test "renders event when data is valid", %{conn: conn, event: %Event{uuid: uuid} = event, user: user} do
test "renders event when data is valid", %{conn: conn, event: %Event{uuid: uuid} = event, user: user, actor: actor} do
conn = auth_conn(conn, user)
address = address_fixture()
attrs = Map.put(@update_attrs, :organizer_actor_id, user.actor.id)
attrs = Map.put(@update_attrs, :organizer_actor_id, actor.id)
attrs = Map.put(attrs, :address_id, address.id)
conn = put conn, event_path(conn, :update, uuid), event: attrs
assert %{"uuid" => uuid} = json_response(conn, 200)["data"]
@@ -97,9 +97,9 @@ defmodule EventosWeb.EventControllerTest do
} = json_response(conn, 200)["data"]
end
test "renders errors when data is invalid", %{conn: conn, event: %Event{uuid: uuid} = event, user: user} do
test "renders errors when data is invalid", %{conn: conn, event: %Event{uuid: uuid} = event, user: user, actor: actor} do
conn = auth_conn(conn, user)
attrs = Map.put(@invalid_attrs, :organizer_actor_id, user.actor.id)
attrs = Map.put(@invalid_attrs, :organizer_actor_id, actor.id)
conn = put conn, event_path(conn, :update, uuid), event: attrs
assert json_response(conn, 422)["errors"] != %{}
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.SessionControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
event = insert(:event, organizer_actor: actor)
{:ok, conn: conn, user: user, event: event}
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.TagControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user}
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.TrackControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
event = insert(:event, organizer_actor: actor)
{:ok, conn: conn, user: user, event: event}
end

View File

@@ -16,8 +16,8 @@ defmodule EventosWeb.UserControllerTest do
end
setup %{conn: conn} do
actor = insert(:actor)
user = insert(:user, actor: actor)
user = insert(:user)
actor = insert(:actor, user: user)
{:ok, conn: conn, user: user}
end

View File

@@ -10,7 +10,6 @@ defmodule Eventos.Factory do
password_hash: "Jane Smith",
email: sequence(:email, &"email-#{&1}@example.com"),
role: 0,
actor: build(:actor)
}
end
@@ -25,7 +24,8 @@ defmodule Eventos.Factory do
preferred_username: preferred_username,
domain: nil,
keys: pem,
url: EventosWeb.Endpoint.url() <> "/@#{preferred_username}"
url: EventosWeb.Endpoint.url() <> "/@#{preferred_username}",
user: nil,
}
end