Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
4.5KB

  1. defmodule Pleroma.Factory do
  2. use ExMachina.Ecto, repo: Pleroma.Repo
  3. def user_factory do
  4. user = %Pleroma.User{
  5. name: sequence(:name, &"Test テスト User #{&1}"),
  6. email: sequence(:email, &"user#{&1}@example.com"),
  7. nickname: sequence(:nickname, &"nick#{&1}"),
  8. password_hash: Comeonin.Pbkdf2.hashpwsalt("test"),
  9. bio: sequence(:bio, &"Tester Number #{&1}")
  10. }
  11. %{
  12. user
  13. | ap_id: Pleroma.User.ap_id(user),
  14. follower_address: Pleroma.User.ap_followers(user),
  15. following: [Pleroma.User.ap_id(user)]
  16. }
  17. end
  18. def note_factory do
  19. text = sequence(:text, &"This is :moominmamma: note #{&1}")
  20. user = insert(:user)
  21. data = %{
  22. "type" => "Note",
  23. "content" => text,
  24. "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(),
  25. "actor" => user.ap_id,
  26. "to" => ["https://www.w3.org/ns/activitystreams#Public"],
  27. "published" => DateTime.utc_now() |> DateTime.to_iso8601(),
  28. "likes" => [],
  29. "like_count" => 0,
  30. "context" => "2hu",
  31. "summary" => "2hu",
  32. "tag" => ["2hu"],
  33. "emoji" => %{
  34. "2hu" => "corndog.png"
  35. }
  36. }
  37. %Pleroma.Object{
  38. data: data
  39. }
  40. end
  41. def direct_note_factory do
  42. user2 = insert(:user)
  43. %Pleroma.Object{data: data} = note_factory()
  44. %Pleroma.Object{data: Map.merge(data, %{"to" => [user2.ap_id]})}
  45. end
  46. def direct_note_activity_factory do
  47. dm = insert(:direct_note)
  48. data = %{
  49. "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
  50. "type" => "Create",
  51. "actor" => dm.data["actor"],
  52. "to" => dm.data["to"],
  53. "object" => dm.data,
  54. "published" => DateTime.utc_now() |> DateTime.to_iso8601(),
  55. "context" => dm.data["context"]
  56. }
  57. %Pleroma.Activity{
  58. data: data,
  59. actor: data["actor"],
  60. recipients: data["to"]
  61. }
  62. end
  63. def note_activity_factory do
  64. note = insert(:note)
  65. data = %{
  66. "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
  67. "type" => "Create",
  68. "actor" => note.data["actor"],
  69. "to" => note.data["to"],
  70. "object" => note.data,
  71. "published" => DateTime.utc_now() |> DateTime.to_iso8601(),
  72. "context" => note.data["context"]
  73. }
  74. %Pleroma.Activity{
  75. data: data,
  76. actor: data["actor"],
  77. recipients: data["to"]
  78. }
  79. end
  80. def announce_activity_factory do
  81. note_activity = insert(:note_activity)
  82. user = insert(:user)
  83. data = %{
  84. "type" => "Announce",
  85. "actor" => note_activity.actor,
  86. "object" => note_activity.data["id"],
  87. "to" => [user.follower_address, note_activity.data["actor"]],
  88. "cc" => ["https://www.w3.org/ns/activitystreams#Public"],
  89. "context" => note_activity.data["context"]
  90. }
  91. %Pleroma.Activity{
  92. data: data,
  93. actor: user.ap_id,
  94. recipients: data["to"]
  95. }
  96. end
  97. def like_activity_factory do
  98. note_activity = insert(:note_activity)
  99. user = insert(:user)
  100. data = %{
  101. "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
  102. "actor" => user.ap_id,
  103. "type" => "Like",
  104. "object" => note_activity.data["object"]["id"],
  105. "published_at" => DateTime.utc_now() |> DateTime.to_iso8601()
  106. }
  107. %Pleroma.Activity{
  108. data: data
  109. }
  110. end
  111. def follow_activity_factory do
  112. follower = insert(:user)
  113. followed = insert(:user)
  114. data = %{
  115. "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
  116. "actor" => follower.ap_id,
  117. "type" => "Follow",
  118. "object" => followed.ap_id,
  119. "published_at" => DateTime.utc_now() |> DateTime.to_iso8601()
  120. }
  121. %Pleroma.Activity{
  122. data: data,
  123. actor: follower.ap_id
  124. }
  125. end
  126. def websub_subscription_factory do
  127. %Pleroma.Web.Websub.WebsubServerSubscription{
  128. topic: "http://example.org",
  129. callback: "http://example/org/callback",
  130. secret: "here's a secret",
  131. valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), 100),
  132. state: "requested"
  133. }
  134. end
  135. def websub_client_subscription_factory do
  136. %Pleroma.Web.Websub.WebsubClientSubscription{
  137. topic: "http://example.org",
  138. secret: "here's a secret",
  139. valid_until: nil,
  140. state: "requested",
  141. subscribers: []
  142. }
  143. end
  144. def oauth_app_factory do
  145. %Pleroma.Web.OAuth.App{
  146. client_name: "Some client",
  147. redirect_uris: "https://example.com/callback",
  148. scopes: "read",
  149. website: "https://example.com",
  150. client_id: "aaabbb==",
  151. client_secret: "aaa;/&bbb"
  152. }
  153. end
  154. end