@@ -185,5 +185,57 @@ defmodule GroupherServer.Test.Mutation.Repo do
185185
186186 assert rule_conn |> mutation_get_error? ( @ update_repo_query , variables , ecode ( :passport ) )
187187 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
188240 end
189241end
0 commit comments