Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 45da7fd

Browse files
authored
refactor(cms-mutations): missing delete test for CMS.Repo (#345)
1 parent 5b592b4 commit 45da7fd

File tree

2 files changed

+53
-11
lines changed
  • lib/groupher_server_web/schema/cms/mutations
  • test/groupher_server_web/mutation/cms

2 files changed

+53
-11
lines changed

lib/groupher_server_web/schema/cms/mutations/repo.ex

+1-11
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,7 @@ defmodule GroupherServerWeb.Schema.CMS.Mutations.Repo do
7373
#############
7474
article_pin_mutation(:repo)
7575
article_trash_mutation(:repo)
76+
article_delete_mutation(:repo)
7677
#############
77-
78-
@desc "delete a repo"
79-
field :delete_repo, :repo do
80-
arg(:id, non_null(:id))
81-
82-
middleware(M.Authorize, :login)
83-
middleware(M.PassportLoader, source: :repo)
84-
middleware(M.Passport, claim: "owner;cms->c?->repo.delete")
85-
86-
resolve(&R.CMS.delete_content/3)
87-
end
8878
end
8979
end

test/groupher_server_web/mutation/cms/repo_test.exs

+52
Original file line numberDiff line numberDiff line change
@@ -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
189241
end

0 commit comments

Comments
 (0)