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