Fixing private message reports. (#4279)
This commit is contained in:
parent
aab3ca4eb0
commit
bc32b408b5
4 changed files with 60 additions and 1 deletions
|
@ -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
|
export LEMMY_TEST_FAST_FEDERATION=1 # by default, the persistent federation queue has delays in the scale of 30s-5min
|
||||||
|
|
||||||
# pictrs setup
|
# 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
|
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
|
chmod +x api_tests/pict-rs
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -10,6 +10,7 @@ import {
|
||||||
deletePrivateMessage,
|
deletePrivateMessage,
|
||||||
unfollowRemotes,
|
unfollowRemotes,
|
||||||
waitUntil,
|
waitUntil,
|
||||||
|
reportPrivateMessage,
|
||||||
} from "./shared";
|
} from "./shared";
|
||||||
|
|
||||||
let recipient_id: number;
|
let recipient_id: number;
|
||||||
|
@ -109,3 +110,42 @@ test("Delete a private message", async () => {
|
||||||
betaPms1.private_messages.length,
|
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,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
|
@ -4,12 +4,14 @@ import {
|
||||||
BlockInstance,
|
BlockInstance,
|
||||||
BlockInstanceResponse,
|
BlockInstanceResponse,
|
||||||
CommunityId,
|
CommunityId,
|
||||||
|
CreatePrivateMessageReport,
|
||||||
GetReplies,
|
GetReplies,
|
||||||
GetRepliesResponse,
|
GetRepliesResponse,
|
||||||
GetUnreadCountResponse,
|
GetUnreadCountResponse,
|
||||||
InstanceId,
|
InstanceId,
|
||||||
LemmyHttp,
|
LemmyHttp,
|
||||||
PostView,
|
PostView,
|
||||||
|
PrivateMessageReportResponse,
|
||||||
SuccessResponse,
|
SuccessResponse,
|
||||||
} from "lemmy-js-client";
|
} from "lemmy-js-client";
|
||||||
import { CreatePost } from "lemmy-js-client/dist/types/CreatePost";
|
import { CreatePost } from "lemmy-js-client/dist/types/CreatePost";
|
||||||
|
@ -781,6 +783,18 @@ export async function reportComment(
|
||||||
return api.createCommentReport(form);
|
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(
|
export async function listCommentReports(
|
||||||
api: LemmyHttp,
|
api: LemmyHttp,
|
||||||
): Promise<ListCommentReportsResponse> {
|
): Promise<ListCommentReportsResponse> {
|
||||||
|
|
|
@ -31,6 +31,11 @@ pub async fn create_pm_report(
|
||||||
let private_message_id = data.private_message_id;
|
let private_message_id = data.private_message_id;
|
||||||
let private_message = PrivateMessage::read(&mut context.pool(), private_message_id).await?;
|
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 {
|
let report_form = PrivateMessageReportForm {
|
||||||
creator_id: person_id,
|
creator_id: person_id,
|
||||||
private_message_id,
|
private_message_id,
|
||||||
|
|
Loading…
Reference in a new issue