Skip to content

Commit

Permalink
Fixing private message reports. (#4279)
Browse files Browse the repository at this point in the history
  • Loading branch information
dessalines committed Dec 18, 2023
1 parent aab3ca4 commit bc32b40
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
2 changes: 1 addition & 1 deletion api_tests/prepare-drone-federation-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export RUST_LOG="warn,lemmy_server=debug,lemmy_federate=debug,lemmy_api=debug,le
export LEMMY_TEST_FAST_FEDERATION=1 # by default, the persistent federation queue has delays in the scale of 30s-5min

# pictrs setup
if ! [ -f "pict-rs" ]; then
if [ ! -f "pict-rs" ]; then
curl "https://git.asonix.dog/asonix/pict-rs/releases/download/v0.5.0-beta.2/pict-rs-linux-amd64" -o api_tests/pict-rs
chmod +x api_tests/pict-rs
fi
Expand Down
40 changes: 40 additions & 0 deletions api_tests/src/private_message.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
deletePrivateMessage,
unfollowRemotes,
waitUntil,
reportPrivateMessage,
} from "./shared";

let recipient_id: number;
Expand Down Expand Up @@ -109,3 +110,42 @@ test("Delete a private message", async () => {
betaPms1.private_messages.length,
);
});

test("Create a private message report", async () => {
let pmRes = await createPrivateMessage(alpha, recipient_id);
let betaPms1 = await waitUntil(
() => listPrivateMessages(beta),
m =>
!!m.private_messages.find(
e =>
e.private_message.ap_id ===
pmRes.private_message_view.private_message.ap_id,
),
);
let betaPm = betaPms1.private_messages[0];
expect(betaPm).toBeDefined();

// Make sure that only the recipient can report it, so this should fail
await expect(
reportPrivateMessage(
alpha,
pmRes.private_message_view.private_message.id,
"a reason",
),
).rejects.toStrictEqual(Error("couldnt_create_report"));

// This one should pass
let reason = "another reason";
let report = await reportPrivateMessage(
beta,
betaPm.private_message.id,
reason,
);

expect(report.private_message_report_view.private_message.id).toBe(
betaPm.private_message.id,
);
expect(report.private_message_report_view.private_message_report.reason).toBe(
reason,
);
});
14 changes: 14 additions & 0 deletions api_tests/src/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import {
BlockInstance,
BlockInstanceResponse,
CommunityId,
CreatePrivateMessageReport,
GetReplies,
GetRepliesResponse,
GetUnreadCountResponse,
InstanceId,
LemmyHttp,
PostView,
PrivateMessageReportResponse,
SuccessResponse,
} from "lemmy-js-client";
import { CreatePost } from "lemmy-js-client/dist/types/CreatePost";
Expand Down Expand Up @@ -781,6 +783,18 @@ export async function reportComment(
return api.createCommentReport(form);
}

export async function reportPrivateMessage(
api: LemmyHttp,
private_message_id: number,
reason: string,
): Promise<PrivateMessageReportResponse> {
let form: CreatePrivateMessageReport = {
private_message_id,
reason,
};
return api.createPrivateMessageReport(form);
}

export async function listCommentReports(
api: LemmyHttp,
): Promise<ListCommentReportsResponse> {
Expand Down
5 changes: 5 additions & 0 deletions crates/api/src/private_message_report/create.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ pub async fn create_pm_report(
let private_message_id = data.private_message_id;
let private_message = PrivateMessage::read(&mut context.pool(), private_message_id).await?;

// Make sure that only the recipient of the private message can create a report
if person_id != private_message.recipient_id {
Err(LemmyErrorType::CouldntCreateReport)?
}

let report_form = PrivateMessageReportForm {
creator_id: person_id,
private_message_id,
Expand Down

0 comments on commit bc32b40

Please sign in to comment.