summaryrefslogtreecommitdiffstats
path: root/ui/src/api_tests
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-05-05 22:06:24 -0400
committerDessalines <tyhou13@gmx.com>2020-05-05 22:06:24 -0400
commit15f1920b2515f1f7046d4e6cbb57487d41817163 (patch)
tree82c4cfdefdd43c4faec9db158817e4d0195c3ebd /ui/src/api_tests
parent21407260a4bfc3c173d4f17b6540805fe60f3519 (diff)
Federated private messages.
Diffstat (limited to 'ui/src/api_tests')
-rw-r--r--ui/src/api_tests/api.spec.ts142
1 files changed, 142 insertions, 0 deletions
diff --git a/ui/src/api_tests/api.spec.ts b/ui/src/api_tests/api.spec.ts
index a3826504..8734169a 100644
--- a/ui/src/api_tests/api.spec.ts
+++ b/ui/src/api_tests/api.spec.ts
@@ -18,6 +18,10 @@ import {
GetCommunityResponse,
CommentLikeForm,
CreatePostLikeForm,
+ PrivateMessageForm,
+ EditPrivateMessageForm,
+ PrivateMessageResponse,
+ PrivateMessagesResponse,
} from '../interfaces';
let lemmyAlphaUrl = 'http://localhost:8540';
@@ -158,6 +162,7 @@ describe('main', () => {
body: wrapper(unfollowForm),
}
).then(d => d.json());
+ expect(unfollowRes.community.local).toBe(false);
// Check that you are unsubscribed to it locally
let followedCommunitiesResAgain: GetFollowedCommunitiesResponse = await fetch(
@@ -965,6 +970,143 @@ describe('main', () => {
expect(getCommunityResAgain.community.removed).toBe(false);
});
});
+
+ describe('private message', () => {
+ test('/u/lemmy_alpha creates/updates/deletes/undeletes a private_message to /u/lemmy_beta, its on both instances', async () => {
+ let content = 'A jest test federated private message';
+ let privateMessageForm: PrivateMessageForm = {
+ content,
+ recipient_id: 3,
+ auth: lemmyAlphaAuth,
+ };
+
+ let createRes: PrivateMessageResponse = await fetch(
+ `${lemmyAlphaApiUrl}/private_message`,
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: wrapper(privateMessageForm),
+ }
+ ).then(d => d.json());
+ expect(createRes.message.content).toBe(content);
+ expect(createRes.message.local).toBe(true);
+ expect(createRes.message.creator_local).toBe(true);
+ expect(createRes.message.recipient_local).toBe(false);
+
+ // Get it from beta
+ let getPrivateMessagesUrl = `${lemmyBetaApiUrl}/private_message/list?auth=${lemmyBetaAuth}&unread_only=false`;
+
+ let getPrivateMessagesRes: PrivateMessagesResponse = await fetch(
+ getPrivateMessagesUrl,
+ {
+ method: 'GET',
+ }
+ ).then(d => d.json());
+
+ expect(getPrivateMessagesRes.messages[0].content).toBe(content);
+ expect(getPrivateMessagesRes.messages[0].local).toBe(false);
+ expect(getPrivateMessagesRes.messages[0].creator_local).toBe(false);
+ expect(getPrivateMessagesRes.messages[0].recipient_local).toBe(true);
+
+ // lemmy alpha updates the private message
+ let updatedContent = 'A jest test federated private message edited';
+ let updatePrivateMessageForm: EditPrivateMessageForm = {
+ content: updatedContent,
+ edit_id: createRes.message.id,
+ auth: lemmyAlphaAuth,
+ };
+
+ let updateRes: PrivateMessageResponse = await fetch(
+ `${lemmyAlphaApiUrl}/private_message`,
+ {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: wrapper(updatePrivateMessageForm),
+ }
+ ).then(d => d.json());
+
+ expect(updateRes.message.content).toBe(updatedContent);
+
+ // Fetch from beta again
+ let getPrivateMessagesUpdatedRes: PrivateMessagesResponse = await fetch(
+ getPrivateMessagesUrl,
+ {
+ method: 'GET',
+ }
+ ).then(d => d.json());
+
+ expect(getPrivateMessagesUpdatedRes.messages[0].content).toBe(
+ updatedContent
+ );
+
+ // lemmy alpha deletes the private message
+ let deletePrivateMessageForm: EditPrivateMessageForm = {
+ deleted: true,
+ edit_id: createRes.message.id,
+ auth: lemmyAlphaAuth,
+ };
+
+ let deleteRes: PrivateMessageResponse = await fetch(
+ `${lemmyAlphaApiUrl}/private_message`,
+ {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: wrapper(deletePrivateMessageForm),
+ }
+ ).then(d => d.json());
+
+ expect(deleteRes.message.deleted).toBe(true);
+
+ // Fetch from beta again
+ let getPrivateMessagesDeletedRes: PrivateMessagesResponse = await fetch(
+ getPrivateMessagesUrl,
+ {
+ method: 'GET',
+ }
+ ).then(d => d.json());
+
+ // The GetPrivateMessages filters out deleted,
+ // even though they are in the actual database.
+ // no reason to show them
+ expect(getPrivateMessagesDeletedRes.messages.length).toBe(0);
+
+ // lemmy alpha undeletes the private message
+ let undeletePrivateMessageForm: EditPrivateMessageForm = {
+ deleted: false,
+ edit_id: createRes.message.id,
+ auth: lemmyAlphaAuth,
+ };
+
+ let undeleteRes: PrivateMessageResponse = await fetch(
+ `${lemmyAlphaApiUrl}/private_message`,
+ {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: wrapper(undeletePrivateMessageForm),
+ }
+ ).then(d => d.json());
+
+ expect(undeleteRes.message.deleted).toBe(false);
+
+ // Fetch from beta again
+ let getPrivateMessagesUnDeletedRes: PrivateMessagesResponse = await fetch(
+ getPrivateMessagesUrl,
+ {
+ method: 'GET',
+ }
+ ).then(d => d.json());
+
+ expect(getPrivateMessagesUnDeletedRes.messages[0].deleted).toBe(false);
+ });
+ });
});
function wrapper(form: any): string {