@@ -185,5 +185,57 @@ defmodule GroupherServer.Test.Mutation.Repo do
185
185
186
186
assert rule_conn |> mutation_get_error? ( @ update_repo_query , variables , ecode ( :passport ) )
187
187
end
188
+
189
+ @ query """
190
+ mutation($id: ID!){
191
+ deleteRepo(id: $id) {
192
+ id
193
+ }
194
+ }
195
+ """
196
+ @ tag :wip2
197
+ test "delete a repo by repo's owner" , ~m( owner_conn repo) a do
198
+ deleted = owner_conn |> mutation_result ( @ query , % { id: repo . id } , "deleteRepo" )
199
+
200
+ assert deleted [ "id" ] == to_string ( repo . id )
201
+ assert { :error , _ } = ORM . find ( CMS.Repo , deleted [ "id" ] )
202
+ end
203
+
204
+ @ tag :wip2
205
+ test "can delete a repo by auth user" , ~m( repo) a do
206
+ belongs_community_title = repo . communities |> List . first ( ) |> Map . get ( :title )
207
+ rule_conn = simu_conn ( :user , cms: % { belongs_community_title => % { "repo.delete" => true } } )
208
+
209
+ deleted = rule_conn |> mutation_result ( @ query , % { id: repo . id } , "deleteRepo" )
210
+
211
+ assert deleted [ "id" ] == to_string ( repo . id )
212
+ assert { :error , _ } = ORM . find ( CMS.Repo , deleted [ "id" ] )
213
+ end
214
+
215
+ @ tag :wip2
216
+ test "delete a repo without login user fails" , ~m( guest_conn repo) a do
217
+ assert guest_conn |> mutation_get_error? ( @ query , % { id: repo . id } , ecode ( :account_login ) )
218
+ end
219
+
220
+ test "login user with auth passport delete a repo" , ~m( repo) a do
221
+ repo_communities_0 = repo . communities |> List . first ( ) |> Map . get ( :title )
222
+ passport_rules = % { repo_communities_0 => % { "repo.delete" => true } }
223
+ rule_conn = simu_conn ( :user , cms: passport_rules )
224
+
225
+ # assert conn |> mutation_get_error?(@query, %{id: repo.id})
226
+
227
+ deleted = rule_conn |> mutation_result ( @ query , % { id: repo . id } , "deleteRepo" )
228
+
229
+ assert deleted [ "id" ] == to_string ( repo . id )
230
+ end
231
+
232
+ test "unauth user delete repo fails" , ~m( user_conn guest_conn repo) a do
233
+ variables = % { id: repo . id }
234
+ rule_conn = simu_conn ( :user , cms: % { "what.ever" => true } )
235
+
236
+ assert user_conn |> mutation_get_error? ( @ query , variables , ecode ( :passport ) )
237
+ assert guest_conn |> mutation_get_error? ( @ query , variables , ecode ( :account_login ) )
238
+ assert rule_conn |> mutation_get_error? ( @ query , variables , ecode ( :passport ) )
239
+ end
188
240
end
189
241
end
0 commit comments