X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=test%2Fsupport%2Ffactory.ex;h=af4fff45b947c771e5d622b1ff7af73cf9108388;hb=046bcf1bf66b9ece6017b7e06f650371d0ceb860;hp=61ca4587ca46fb728216df4993edc7e2fb47705e;hpb=b40a627ab02f9f63eac42ce6fc65282fc6cb6b92;p=akkoma
diff --git a/test/support/factory.ex b/test/support/factory.ex
index 61ca4587c..af4fff45b 100644
--- a/test/support/factory.ex
+++ b/test/support/factory.ex
@@ -1,5 +1,5 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors
+# Copyright © 2017-2021 Pleroma Authors
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Factory do
@@ -24,13 +24,14 @@ defmodule Pleroma.Factory do
}
end
- def user_factory do
+ def user_factory(attrs \\ %{}) do
user = %User{
name: sequence(:name, &"Test ãã¹ã User #{&1}"),
email: sequence(:email, &"user#{&1}@example.com"),
nickname: sequence(:nickname, &"nick#{&1}"),
- password_hash: Pbkdf2.hash_pwd_salt("test"),
+ password_hash: Pleroma.Password.Pbkdf2.hash_pwd_salt("test"),
bio: sequence(:bio, &"Tester Number #{&1}"),
+ is_discoverable: true,
last_digest_emailed_at: NaiveDateTime.utc_now(),
last_refreshed_at: NaiveDateTime.utc_now(),
notification_settings: %Pleroma.User.NotificationSetting{},
@@ -38,13 +39,29 @@ defmodule Pleroma.Factory do
ap_enabled: true
}
- %{
- user
- | ap_id: User.ap_id(user),
- follower_address: User.ap_followers(user),
- following_address: User.ap_following(user),
- raw_bio: user.bio
- }
+ urls =
+ if attrs[:local] == false do
+ base_domain = Enum.random(["domain1.com", "domain2.com", "domain3.com"])
+
+ ap_id = "https://#{base_domain}/users/#{user.nickname}"
+
+ %{
+ ap_id: ap_id,
+ follower_address: ap_id <> "/followers",
+ following_address: ap_id <> "/following"
+ }
+ else
+ %{
+ ap_id: User.ap_id(user),
+ follower_address: User.ap_followers(user),
+ following_address: User.ap_following(user)
+ }
+ end
+
+ user
+ |> Map.put(:raw_bio, user.bio)
+ |> Map.merge(urls)
+ |> merge_attributes(attrs)
end
def user_relationship_factory(attrs \\ %{}) do
@@ -87,6 +104,37 @@ defmodule Pleroma.Factory do
}
end
+ def attachment_note_factory(attrs \\ %{}) do
+ user = attrs[:user] || insert(:user)
+ {length, attrs} = Map.pop(attrs, :length, 1)
+
+ data = %{
+ "attachment" =>
+ Stream.repeatedly(fn -> attachment_data(user.ap_id, attrs[:href]) end)
+ |> Enum.take(length)
+ }
+
+ build(:note, Map.put(attrs, :data, data))
+ end
+
+ defp attachment_data(ap_id, href) do
+ href = href || sequence(:href, &"#{Pleroma.Web.Endpoint.url()}/media/#{&1}.jpg")
+
+ %{
+ "url" => [
+ %{
+ "href" => href,
+ "type" => "Link",
+ "mediaType" => "image/jpeg"
+ }
+ ],
+ "name" => "some name",
+ "type" => "Document",
+ "actor" => ap_id,
+ "mediaType" => "image/jpeg"
+ }
+ end
+
def audio_factory(attrs \\ %{}) do
text = sequence(:text, &"lain radio episode #{&1}")
@@ -200,25 +248,6 @@ defmodule Pleroma.Factory do
|> Map.merge(attrs)
end
- defp expiration_offset_by_minutes(attrs, minutes) do
- scheduled_at =
- NaiveDateTime.utc_now()
- |> NaiveDateTime.add(:timer.minutes(minutes), :millisecond)
- |> NaiveDateTime.truncate(:second)
-
- %Pleroma.ActivityExpiration{}
- |> Map.merge(attrs)
- |> Map.put(:scheduled_at, scheduled_at)
- end
-
- def expiration_in_the_past_factory(attrs \\ %{}) do
- expiration_offset_by_minutes(attrs, -60)
- end
-
- def expiration_in_the_future_factory(attrs \\ %{}) do
- expiration_offset_by_minutes(attrs, 61)
- end
-
def article_activity_factory do
article = insert(:article)
@@ -261,7 +290,7 @@ defmodule Pleroma.Factory do
def like_activity_factory(attrs \\ %{}) do
note_activity = attrs[:note_activity] || insert(:note_activity)
- object = Object.normalize(note_activity)
+ object = Object.normalize(note_activity, fetch: false)
user = insert(:user)
data =
@@ -457,61 +486,8 @@ defmodule Pleroma.Factory do
%Pleroma.Filter{
user: build(:user),
filter_id: sequence(:filter_id, & &1),
- phrase: "cofe"
+ phrase: "cofe",
+ context: ["home"]
}
end
-
- def chat_factory(attrs \\ %{}) do
- user = attrs[:user] || insert(:user)
- recipient = attrs[:recipient] || insert(:user)
-
- %Pleroma.Chat{
- user_id: user.id,
- recipient: recipient.ap_id
- }
- end
-
- def chat_message_factory(attrs \\ %{}) do
- text = sequence(:text, &"This is :moominmamma: chat message #{&1}")
- chat = attrs[:chat] || insert(:chat)
-
- data = %{
- "type" => "ChatMessage",
- "content" => text,
- "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(),
- "actor" => User.get_by_id(chat.user_id).ap_id,
- "to" => [chat.recipient],
- "published" => DateTime.utc_now() |> DateTime.to_iso8601()
- }
-
- %Pleroma.Object{
- data: merge_attributes(data, Map.get(attrs, :data, %{}))
- }
- end
-
- def chat_message_activity_factory(attrs \\ %{}) do
- chat = attrs[:chat] || insert(:chat)
- chat_message = attrs[:chat_message] || insert(:chat_message, chat: chat)
-
- data_attrs = attrs[:data_attrs] || %{}
- attrs = Map.drop(attrs, [:chat, :chat_message, :data_attrs])
-
- data =
- %{
- "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
- "type" => "Create",
- "actor" => chat_message.data["actor"],
- "to" => chat_message.data["to"],
- "object" => chat_message.data["id"],
- "published" => DateTime.utc_now() |> DateTime.to_iso8601()
- }
- |> Map.merge(data_attrs)
-
- %Pleroma.Activity{
- data: data,
- actor: data["actor"],
- recipients: data["to"]
- }
- |> Map.merge(attrs)
- end
end