Make tests great again !

(Also use only one field for public/private key pem)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2018-06-14 17:25:55 +02:00
parent 32596c3624
commit ca36dd12e2
43 changed files with 498 additions and 656 deletions

View File

@@ -23,6 +23,13 @@ defmodule EventosWeb.ConnCase do
# The default endpoint for testing
@endpoint EventosWeb.Endpoint
def auth_conn(%Plug.Conn{} = conn, %Eventos.Actors.User{} = user) do
{:ok, token, _claims} = EventosWeb.Guardian.encode_and_sign(user)
conn
|> Plug.Conn.put_req_header("authorization", "Bearer #{token}")
|> Plug.Conn.put_req_header("accept", "application/json")
end
end
end

View File

@@ -38,7 +38,7 @@ defmodule Eventos.DataCase do
@doc """
A helper that transform changeset errors to a map of messages.
assert {:error, changeset} = Accounts.create_user(%{password: "short"})
assert {:error, changeset} = Actors.create_user(%{password: "short"})
assert "password is too short" in errors_on(changeset).password
assert %{password: ["password is too short"]} = errors_on(changeset)

View File

@@ -15,13 +15,17 @@ defmodule Eventos.Factory do
end
def actor_factory do
{:ok, {_, pubkey}} = RsaEx.generate_keypair("4096")
username = sequence("thomas")
key = :public_key.generate_key({:rsa, 2048, 65537})
entry = :public_key.pem_entry_encode(:RSAPrivateKey, key)
pem = :public_key.pem_encode([entry]) |> String.trim_trailing()
preferred_username = sequence("thomas")
%Eventos.Actors.Actor{
preferred_username: username,
preferred_username: preferred_username,
domain: nil,
public_key: pubkey,
url: EventosWeb.Endpoint.url() <> "/@#{username}"
keys: pem,
url: EventosWeb.Endpoint.url() <> "/@#{preferred_username}"
}
end
@@ -45,6 +49,15 @@ defmodule Eventos.Factory do
}
end
def comment_factory do
%Eventos.Events.Comment{
text: "My Comment",
actor: build(:actor),
event: build(:event),
uuid: Ecto.UUID.generate(),
}
end
def event_factory do
actor = build(:actor)
slug = sequence("my-event")
@@ -58,7 +71,7 @@ defmodule Eventos.Factory do
organizer_actor: actor,
category: build(:category),
address: build(:address),
url: EventosWeb.Endpoint.url() <> "/@" <> actor.username <> "/" <> slug
url: "#{EventosWeb.Endpoint.url()}/@#{actor.url}/#{Ecto.UUID.generate()}"
}
end
@@ -77,14 +90,12 @@ defmodule Eventos.Factory do
}
end
def group_factory do
username = sequence("My Group")
%Eventos.Actors.Actor{
preferred_username: username,
summary: "My group",
suspended: false,
url: EventosWeb.Endpoint.url() <> "/@#{username}",
type: "Group",
def bot_factory do
%Eventos.Actors.Bot{
source: "https://mysource.tld/feed.ics",
type: "ics",
user: build(:user),
actor: build(:actor),
}
end
end