]> Untitled Git - lemmy.git/blobdiff - api_tests/src/user.spec.ts
Adding diesel enums for SortType and ListingType (#2808)
[lemmy.git] / api_tests / src / user.spec.ts
index bfd56fcbd750a67862e605f141fa2babc568522b..b2083c66c20e0a86386b7c968b6e9037fef8b199 100644 (file)
@@ -1,78 +1,97 @@
 jest.setTimeout(120000);
+import { PersonView } from "lemmy-js-client";
+
 import {
   alpha,
   beta,
   registerUser,
-  searchForUser,
-  saveUserSettingsBio,
-  saveUserSettings,
+  resolvePerson,
   getSite,
-} from './shared';
-import {
-  UserView,
-  UserSettingsForm,
-} from 'lemmy-js-client';
+  createPost,
+  resolveCommunity,
+  createComment,
+  resolveBetaCommunity,
+  deleteUser,
+  resolvePost,
+  API,
+  resolveComment,
+  saveUserSettingsFederated,
+  setupLogins,
+} from "./shared";
+
+beforeAll(async () => {
+  await setupLogins();
+});
 
-let auth: string;
 let apShortname: string;
 
-function assertUserFederation(
-  userOne: UserView,
-  userTwo: UserView) {
-  expect(userOne.name).toBe(userTwo.name);
-  expect(userOne.preferred_username).toBe(userTwo.preferred_username);
-  expect(userOne.bio).toBe(userTwo.bio);
-  expect(userOne.actor_id).toBe(userTwo.actor_id);
-  expect(userOne.avatar).toBe(userTwo.avatar);
-  expect(userOne.banner).toBe(userTwo.banner);
-  expect(userOne.published).toBe(userTwo.published);
+function assertUserFederation(userOne?: PersonView, userTwo?: PersonView) {
+  expect(userOne?.person.name).toBe(userTwo?.person.name);
+  expect(userOne?.person.display_name).toBe(userTwo?.person.display_name);
+  expect(userOne?.person.bio).toBe(userTwo?.person.bio);
+  expect(userOne?.person.actor_id).toBe(userTwo?.person.actor_id);
+  expect(userOne?.person.avatar).toBe(userTwo?.person.avatar);
+  expect(userOne?.person.banner).toBe(userTwo?.person.banner);
+  expect(userOne?.person.published).toBe(userTwo?.person.published);
 }
 
-test('Create user', async () => {
+test("Create user", async () => {
   let userRes = await registerUser(alpha);
   expect(userRes.jwt).toBeDefined();
-  auth = userRes.jwt;
+  alpha.auth = userRes.jwt ?? "";
 
-  let site = await getSite(alpha, auth);
+  let site = await getSite(alpha);
   expect(site.my_user).toBeDefined();
-  apShortname = `@${site.my_user.name}@lemmy-alpha:8541`;
+  if (!site.my_user) {
+    throw "Missing site user";
+  }
+  apShortname = `@${site.my_user.local_user_view.person.name}@lemmy-alpha:8541`;
 });
 
-test('Save user settings, check changed bio from beta', async () => {
-  let bio = 'a changed bio';
-  let userRes = await saveUserSettingsBio(alpha, auth);
-  expect(userRes.jwt).toBeDefined();
+test("Set some user settings, check that they are federated", async () => {
+  await saveUserSettingsFederated(alpha);
+  let alphaPerson = (await resolvePerson(alpha, apShortname)).person;
+  let betaPerson = (await resolvePerson(beta, apShortname)).person;
+  assertUserFederation(alphaPerson, betaPerson);
+});
 
-  let site = await getSite(alpha, auth);
-  expect(site.my_user.bio).toBe(bio);
-  let searchAlpha = await searchForUser(alpha, site.my_user.actor_id);
+test("Delete user", async () => {
+  let userRes = await registerUser(alpha);
+  expect(userRes.jwt).toBeDefined();
+  let user: API = {
+    client: alpha.client,
+    auth: userRes.jwt ?? "",
+  };
 
-  // Make sure beta sees this bio is changed
-  let searchBeta = await searchForUser(beta, apShortname);
-  assertUserFederation(searchAlpha.users[0], searchBeta.users[0]);
-});
+  // make a local post and comment
+  let alphaCommunity = (await resolveCommunity(user, "!main@lemmy-alpha:8541"))
+    .community;
+  if (!alphaCommunity) {
+    throw "Missing alpha community";
+  }
+  let localPost = (await createPost(user, alphaCommunity.community.id))
+    .post_view.post;
+  expect(localPost).toBeDefined();
+  let localComment = (await createComment(user, localPost.id)).comment_view
+    .comment;
+  expect(localComment).toBeDefined();
 
-test('Set avatar and banner, check that they are federated', async () => {
-  let avatar = 'https://image.flaticon.com/icons/png/512/35/35896.png';
-  let banner = 'https://image.flaticon.com/icons/png/512/36/35896.png';
-  let form: UserSettingsForm = {
-    show_nsfw: false,
-    theme: "",
-    default_sort_type: 0,
-    default_listing_type: 0,
-    lang: "",
-    avatar,
-    banner,
-    preferred_username: "user321",
-    show_avatars: false,
-    send_notifications_to_email: false,
-    auth,
+  // make a remote post and comment
+  let betaCommunity = (await resolveBetaCommunity(user)).community;
+  if (!betaCommunity) {
+    throw "Missing beta community";
   }
-  let settingsRes = await saveUserSettings(alpha, form);
+  let remotePost = (await createPost(user, betaCommunity.community.id))
+    .post_view.post;
+  expect(remotePost).toBeDefined();
+  let remoteComment = (await createComment(user, remotePost.id)).comment_view
+    .comment;
+  expect(remoteComment).toBeDefined();
+
+  await deleteUser(user);
 
-  let searchAlpha = await searchForUser(beta, apShortname);
-  let userOnAlpha = searchAlpha.users[0];
-  let searchBeta = await searchForUser(beta, apShortname);
-  let userOnBeta = searchBeta.users[0];
-  assertUserFederation(userOnAlpha, userOnBeta);
+  expect((await resolvePost(alpha, localPost)).post).toBeUndefined();
+  expect((await resolveComment(alpha, localComment)).comment).toBeUndefined();
+  expect((await resolvePost(alpha, remotePost)).post).toBeUndefined();
+  expect((await resolveComment(alpha, remoteComment)).comment).toBeUndefined();
 });