|
|
|
@ -31,6 +31,7 @@ import {
|
|
|
|
|
waitUntil,
|
|
|
|
|
createPostWithThumbnail,
|
|
|
|
|
sampleImage,
|
|
|
|
|
sampleSite,
|
|
|
|
|
} from "./shared";
|
|
|
|
|
const downloadFileSync = require("download-file-sync");
|
|
|
|
|
|
|
|
|
@ -172,54 +173,94 @@ test("Purge post, linked image removed", async () => {
|
|
|
|
|
expect(content2).toBe("");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test("Images in remote post are proxied if setting enabled", async () => {
|
|
|
|
|
let user = await registerUser(beta, betaUrl);
|
|
|
|
|
test("Images in remote image post are proxied if setting enabled", async () => {
|
|
|
|
|
let community = await createCommunity(gamma);
|
|
|
|
|
|
|
|
|
|
const upload_form: UploadImage = {
|
|
|
|
|
image: Buffer.from("test"),
|
|
|
|
|
};
|
|
|
|
|
const upload = await user.uploadImage(upload_form);
|
|
|
|
|
let post = await createPost(
|
|
|
|
|
let postRes = await createPost(
|
|
|
|
|
gamma,
|
|
|
|
|
community.community_view.community.id,
|
|
|
|
|
upload.url,
|
|
|
|
|
sampleImage,
|
|
|
|
|
`![](${sampleImage})`,
|
|
|
|
|
);
|
|
|
|
|
expect(post.post_view.post).toBeDefined();
|
|
|
|
|
const post = postRes.post_view.post;
|
|
|
|
|
expect(post).toBeDefined();
|
|
|
|
|
|
|
|
|
|
// remote image gets proxied after upload
|
|
|
|
|
expect(
|
|
|
|
|
post.post_view.post.thumbnail_url?.startsWith(
|
|
|
|
|
post.thumbnail_url?.startsWith(
|
|
|
|
|
"http://lemmy-gamma:8561/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
expect(
|
|
|
|
|
post.post_view.post.body?.startsWith(
|
|
|
|
|
"![](http://lemmy-gamma:8561/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
post.body?.startsWith("![](http://lemmy-gamma:8561/api/v3/image_proxy?url"),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
let epsilonPost = await resolvePost(epsilon, post.post_view.post);
|
|
|
|
|
expect(epsilonPost.post).toBeDefined();
|
|
|
|
|
// Make sure that it ends with jpg, to be sure its an image
|
|
|
|
|
expect(post.thumbnail_url?.endsWith(".jpg")).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
let epsilonPostRes = await resolvePost(epsilon, postRes.post_view.post);
|
|
|
|
|
expect(epsilonPostRes.post).toBeDefined();
|
|
|
|
|
|
|
|
|
|
// Fetch the post again, the metadata should be backgrounded now
|
|
|
|
|
// Wait for the metadata to get fetched, since this is backgrounded now
|
|
|
|
|
let epsilonPost2 = await waitUntil(
|
|
|
|
|
() => getPost(epsilon, epsilonPost.post!.post.id),
|
|
|
|
|
let epsilonPostRes2 = await waitUntil(
|
|
|
|
|
() => getPost(epsilon, epsilonPostRes.post!.post.id),
|
|
|
|
|
p => p.post_view.post.thumbnail_url != undefined,
|
|
|
|
|
);
|
|
|
|
|
const epsilonPost = epsilonPostRes2.post_view.post;
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
epsilonPost2.post_view.post.thumbnail_url?.startsWith(
|
|
|
|
|
epsilonPost.thumbnail_url?.startsWith(
|
|
|
|
|
"http://lemmy-epsilon:8581/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
expect(
|
|
|
|
|
epsilonPost2.post_view.post.body?.startsWith(
|
|
|
|
|
epsilonPost.body?.startsWith(
|
|
|
|
|
"![](http://lemmy-epsilon:8581/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
// Make sure that it ends with jpg, to be sure its an image
|
|
|
|
|
expect(epsilonPost.thumbnail_url?.endsWith(".jpg")).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test("Thumbnail of remote image link is proxied if setting enabled", async () => {
|
|
|
|
|
let community = await createCommunity(gamma);
|
|
|
|
|
let postRes = await createPost(
|
|
|
|
|
gamma,
|
|
|
|
|
community.community_view.community.id,
|
|
|
|
|
// The sample site metadata thumbnail ends in png
|
|
|
|
|
sampleSite,
|
|
|
|
|
);
|
|
|
|
|
const post = postRes.post_view.post;
|
|
|
|
|
expect(post).toBeDefined();
|
|
|
|
|
|
|
|
|
|
// remote image gets proxied after upload
|
|
|
|
|
expect(
|
|
|
|
|
post.thumbnail_url?.startsWith(
|
|
|
|
|
"http://lemmy-gamma:8561/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
// Make sure that it ends with png, to be sure its an image
|
|
|
|
|
expect(post.thumbnail_url?.endsWith(".png")).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
let epsilonPostRes = await resolvePost(epsilon, postRes.post_view.post);
|
|
|
|
|
expect(epsilonPostRes.post).toBeDefined();
|
|
|
|
|
|
|
|
|
|
let epsilonPostRes2 = await waitUntil(
|
|
|
|
|
() => getPost(epsilon, epsilonPostRes.post!.post.id),
|
|
|
|
|
p => p.post_view.post.thumbnail_url != undefined,
|
|
|
|
|
);
|
|
|
|
|
const epsilonPost = epsilonPostRes2.post_view.post;
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
epsilonPost.thumbnail_url?.startsWith(
|
|
|
|
|
"http://lemmy-epsilon:8581/api/v3/image_proxy?url",
|
|
|
|
|
),
|
|
|
|
|
).toBeTruthy();
|
|
|
|
|
|
|
|
|
|
// Make sure that it ends with png, to be sure its an image
|
|
|
|
|
expect(epsilonPost.thumbnail_url?.endsWith(".png")).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test("No image proxying if setting is disabled", async () => {
|
|
|
|
|