Skip to content

Commit

Permalink
test delete_comment route in ACL
Browse files Browse the repository at this point in the history
  • Loading branch information
mahdihaghverdi committed Mar 3, 2024
1 parent bfe3a20 commit 3667c9a
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 27 deletions.
6 changes: 3 additions & 3 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def mahdi_auth_headers(mahdi_access_token):


@pytest.fixture
def post_id(client, mahdi_auth_headers):
def post_id_fixture(client, mahdi_auth_headers):
draft_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}",
json={"title": "title", "body": "body"},
Expand All @@ -105,9 +105,9 @@ def post_id(client, mahdi_auth_headers):


@pytest.fixture
def comment_id(client, mahdi_auth_headers, post_id):
def comment_id_fixture(client, mahdi_auth_headers, post_id_fixture):
comment_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
json={"comment": "comment"},
headers=mahdi_auth_headers,
).json()["id"]
Expand Down
83 changes: 83 additions & 0 deletions tests/test_acl.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

users_basic_url = f"{settings.PREFIX}/{APIPrefixesEnum.USERS.value}"
drafts_basic_url = f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}"
comments_basic_url = f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}"


class PermissionABC(ABC):
Expand Down Expand Up @@ -192,3 +193,85 @@ def test_user_requests_another(self, client, create_admin, mahdi_auth_headers):
headers=mahdi_auth_headers,
)
assert response.status_code == 401, response.text


class TestDeleteComment(PermissionABC):
def test_admin_request_itself(self, client, admin_auth_headers):
draft_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}",
json={"title": "title", "body": "body"},
headers=admin_auth_headers,
).json()["id"]

post_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}/publish/{draft_id}",
json={"tags": ["tag1", "tag2"], "slug": "slug"},
headers=admin_auth_headers,
).json()["id"]

comment_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
json={"comment": "comment"},
headers=admin_auth_headers,
).json()["id"]

response = client.delete(
f"{comments_basic_url}/{post_id}/{comment_id}", headers=admin_auth_headers
)
assert response.status_code == 204, response.text

comments = client.get(f"{comments_basic_url}/{post_id}").json()
assert len(comments) == 0

def test_admin_request_another(
self,
client,
admin_auth_headers,
mahdi_auth_headers,
post_id_fixture,
comment_id_fixture,
):
response = client.delete(
f"{comments_basic_url}/{post_id_fixture}/{comment_id_fixture}",
headers=admin_auth_headers,
)
assert response.status_code == 204, response.text

comments = client.get(f"{comments_basic_url}/{post_id_fixture}").json()
assert len(comments) == 0

def test_user_requests_itself(
self, client, mahdi_auth_headers, post_id_fixture, comment_id_fixture
):
response = client.delete(
f"{comments_basic_url}/{post_id_fixture}/{comment_id_fixture}",
headers=mahdi_auth_headers,
)
assert response.status_code == 204, response.text

comments = client.get(f"{comments_basic_url}/{post_id_fixture}").json()
assert len(comments) == 0

def test_user_requests_another(self, client, admin_auth_headers, mahdi_auth_headers):
draft_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}",
json={"title": "title", "body": "body"},
headers=admin_auth_headers,
).json()["id"]

post_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.DRAFTS.value}/publish/{draft_id}",
json={"tags": ["tag1", "tag2"], "slug": "slug"},
headers=admin_auth_headers,
).json()["id"]

comment_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
json={"comment": "comment"},
headers=admin_auth_headers,
).json()["id"]

response = client.delete(
f"{comments_basic_url}/{post_id}/{comment_id}", headers=mahdi_auth_headers
)
assert response.status_code == 401, response.text
48 changes: 24 additions & 24 deletions tests/test_comments.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
from src.core.enums import APIPrefixesEnum


def test_add_comment(client, mahdi_auth_headers, post_id):
def test_add_comment(client, mahdi_auth_headers, post_id_fixture):
response = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
json={"comment": "comment"},
headers=mahdi_auth_headers,
)
Expand All @@ -21,9 +21,9 @@ def test_add_comment(client, mahdi_auth_headers, post_id):
assert data["reply_count"] == 0


def test_add_reply(client, mahdi_auth_headers, post_id, comment_id):
def test_add_reply(client, mahdi_auth_headers, post_id_fixture, comment_id_fixture):
response = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
json={"comment": "reply"},
headers=mahdi_auth_headers,
)
Expand All @@ -33,34 +33,34 @@ def test_add_reply(client, mahdi_auth_headers, post_id, comment_id):
data = response.json()
assert data["commented"]
assert data["comment"] == "reply"
assert data["path"] == f'{comment_id}.{data["id"]}'
assert data["path"] == f'{comment_id_fixture}.{data["id"]}'
assert data["updated"] is None
assert data["parent_id"] == comment_id
assert data["parent_id"] == comment_id_fixture
assert data["username"] == "mahdi"
assert data["reply_count"] == 0


def test_get_comments(client, mahdi_auth_headers, post_id):
def test_get_comments(client, mahdi_auth_headers, post_id_fixture):
c1_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
json={"comment": "comment1"},
headers=mahdi_auth_headers,
).json()["id"]

c2_id = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
json={"comment": "comment2"},
headers=mahdi_auth_headers,
).json()["id"]

_ = client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
json={"comment": "comment3"},
headers=mahdi_auth_headers,
).json()["id"]

response = client.get(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
params={"order": "first"},
)
assert response.status_code == 200, response.text
Expand All @@ -72,7 +72,7 @@ def test_get_comments(client, mahdi_auth_headers, post_id):
assert cmt["comment"] == f"comment{idx}"

response = client.get(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
params={"order": "last"},
)
assert response.status_code == 200, response.text
Expand All @@ -85,25 +85,25 @@ def test_get_comments(client, mahdi_auth_headers, post_id):

# add 2 rep to 1st
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{c1_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{c1_id}",
json={"comment": "rep1"},
headers=mahdi_auth_headers,
)
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{c1_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{c1_id}",
json={"comment": "rep2"},
headers=mahdi_auth_headers,
)

# add 1 rep to 2nd
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{c2_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{c2_id}",
json={"comment": "rep1"},
headers=mahdi_auth_headers,
)

response = client.get(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}",
params={"order": "most_replied"},
)
assert response.status_code == 200, response.text
Expand All @@ -115,25 +115,25 @@ def test_get_comments(client, mahdi_auth_headers, post_id):
assert cmt["comment"] == f"comment{idx}"


def test_get_replies(client, mahdi_auth_headers, post_id, comment_id):
def test_get_replies(client, mahdi_auth_headers, post_id_fixture, comment_id_fixture):
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
json={"comment": "reply1"},
headers=mahdi_auth_headers,
)
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
json={"comment": "reply2"},
headers=mahdi_auth_headers,
)
client.post(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
json={"comment": "reply3"},
headers=mahdi_auth_headers,
)

response = client.get(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
params={"order": "first"},
)
assert response.status_code == 200, response.text
Expand All @@ -145,7 +145,7 @@ def test_get_replies(client, mahdi_auth_headers, post_id, comment_id):
assert cmt["comment"] == f"reply{idx}"

response = client.get(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
params={"order": "last"},
)
assert response.status_code == 200, response.text
Expand All @@ -157,9 +157,9 @@ def test_get_replies(client, mahdi_auth_headers, post_id, comment_id):
assert cmt["comment"] == f"reply{idx}"


def test_update_comment(client, mahdi_auth_headers, post_id, comment_id):
def test_update_comment(client, mahdi_auth_headers, post_id_fixture, comment_id_fixture):
response = client.put(
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id}/{comment_id}",
f"{settings.PREFIX}/{APIPrefixesEnum.COMMENTS.value}/{post_id_fixture}/{comment_id_fixture}",
json={"comment": "updated comment"},
headers=mahdi_auth_headers,
)
Expand Down

0 comments on commit 3667c9a

Please sign in to comment.