mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
Test for Update support
This commit is contained in:
parent
d92764d81a
commit
aad3ee78d1
|
|
@ -78,17 +78,26 @@ export default async (
|
||||||
// Replace the object in database with the new provided object
|
// Replace the object in database with the new provided object
|
||||||
// TODO: Add authentication
|
// TODO: Add authentication
|
||||||
|
|
||||||
const object = await RawObject.findOneBy({
|
const object = await RawObject.createQueryBuilder("object")
|
||||||
data: {
|
.where("object.data->>'id' = :id", {
|
||||||
id: (body.object as RawObject).id,
|
id: (body.object as APObject).id,
|
||||||
},
|
})
|
||||||
});
|
.getOne();
|
||||||
|
|
||||||
if (!object) return errorResponse("Object not found", 404);
|
if (!object) return errorResponse("Object not found", 404);
|
||||||
|
|
||||||
object.data = body.object as APObject;
|
object.data = body.object as APObject;
|
||||||
|
|
||||||
|
// Store the Update event in database
|
||||||
|
const activity = new RawActivity();
|
||||||
|
activity.data = {
|
||||||
|
...body,
|
||||||
|
object: undefined,
|
||||||
|
};
|
||||||
|
activity.objects = [object];
|
||||||
|
|
||||||
await object.save();
|
await object.save();
|
||||||
|
await activity.save();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Delete" as APDelete: {
|
case "Delete" as APDelete: {
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,71 @@ describe("POST /@test/inbox", () => {
|
||||||
published: "2021-01-01T00:00:00.000Z",
|
published: "2021-01-01T00:00:00.000Z",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("should try to update that Note object", async () => {
|
||||||
|
const response = await fetch(
|
||||||
|
`${config.http.base_url}:${config.http.port}/@test/inbox/`,
|
||||||
|
{
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/activity+json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
"@context": "https://www.w3.org/ns/activitystreams",
|
||||||
|
type: "Update",
|
||||||
|
id: "https://example.com/notes/1/activity",
|
||||||
|
actor: `${config.http.base_url}:${config.http.port}/@test`,
|
||||||
|
to: ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
cc: [],
|
||||||
|
published: "2021-01-02T00:00:00.000Z",
|
||||||
|
object: {
|
||||||
|
"@context": "https://www.w3.org/ns/activitystreams",
|
||||||
|
id: "https://example.com/notes/1",
|
||||||
|
type: "Note",
|
||||||
|
content: "This note has been edited!",
|
||||||
|
summary: null,
|
||||||
|
inReplyTo: null,
|
||||||
|
published: "2021-01-01T00:00:00.000Z",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.headers.get("content-type")).toBe("application/json");
|
||||||
|
|
||||||
|
const activity = await RawActivity.createQueryBuilder("activity")
|
||||||
|
// Where id is part of the jsonb column 'data'
|
||||||
|
.where("activity.data->>'id' = :id", {
|
||||||
|
id: "https://example.com/notes/1/activity",
|
||||||
|
})
|
||||||
|
.leftJoinAndSelect("activity.objects", "objects")
|
||||||
|
// Sort by most recent
|
||||||
|
.orderBy("activity.data->>'published'", "DESC")
|
||||||
|
.getOne();
|
||||||
|
|
||||||
|
expect(activity).not.toBeUndefined();
|
||||||
|
expect(activity?.data).toEqual({
|
||||||
|
"@context": "https://www.w3.org/ns/activitystreams",
|
||||||
|
type: "Update",
|
||||||
|
id: "https://example.com/notes/1/activity",
|
||||||
|
actor: `${config.http.base_url}:${config.http.port}/@test`,
|
||||||
|
to: ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
cc: [],
|
||||||
|
published: "2021-01-02T00:00:00.000Z",
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(activity?.objects).toHaveLength(1);
|
||||||
|
expect(activity?.objects[0].data).toEqual({
|
||||||
|
"@context": "https://www.w3.org/ns/activitystreams",
|
||||||
|
id: "https://example.com/notes/1",
|
||||||
|
type: "Note",
|
||||||
|
content: "This note has been edited!",
|
||||||
|
summary: null,
|
||||||
|
inReplyTo: null,
|
||||||
|
published: "2021-01-01T00:00:00.000Z",
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue