jam-my-stack/test/webmention/pictures.test.js

92 lines
2.1 KiB
JavaScript

const fs = require('fs');
const fsp = require('fs').promises;
const { rmdir } = require('./../utils')
const { getFiles } = require('../../src/file-utils');
const dumpdir = `${__dirname}/dump`
beforeEach(async () => {
if(fs.existsSync(dumpdir)) {
rmdir(dumpdir)
}
fs.mkdirSync(dumpdir)
})
jest.disableAutomock()
jest.unmock('got')
describe("webmention downloading of author pictures", () => {
const { getPictures } = require('./../../src/webmention/pictures')
test("getPictures does not write a file if error occurs", async () => {
await getPictures([{
author: {
picture: '/unknownshit.lolz'
}
}], {
endpoint: 'https://brainbaking.com/',
directory: dumpdir,
extension: "png"
})
const output = await getFiles(dumpdir)
expect(output.length).toBe(0)
})
test("getPictures adds extension if not yet present", async () => {
await getPictures([{
author: {
picture: '/img/avatar.jpg'
}
}], {
endpoint: 'https://brainbaking.com/',
directory: dumpdir,
extension: "png"
})
const output = fs.readFileSync(`${dumpdir}/img/avatar.jpg.png`).toString()
expect(output).not.toBe(null)
})
test("getPictures does not override existing picture if flag is set", async () => {
fs.mkdirSync(`${dumpdir}/img`)
fs.writeFileSync(`${dumpdir}/img/avatar.jpg`, "dummy", "utf8")
await getPictures([{
author: {
picture: '/img/avatar.jpg'
}
}], {
endpoint: 'https://brainbaking.com/',
directory: dumpdir
})
const output = fs.readFileSync(`${dumpdir}/img/avatar.jpg`).toString()
expect(output).toBe("dummy")
})
test("getPictures downloads author picture if present and overrides", async () => {
fs.mkdirSync(`${dumpdir}/img`)
fs.writeFileSync(`${dumpdir}/img/avatar.jpg`, "dummy", "utf8")
await getPictures([{
author: {
picture: '/img/avatar.jpg'
}
}, {
author: {
}
}], {
endpoint: 'https://brainbaking.com/',
directory: dumpdir
})
const output = await getFiles(dumpdir)
expect(output.length).toBe(1)
const firstFile = fs.readFileSync(`${dumpdir}/img/avatar.jpg`).toString()
expect(output).not.toBe("dummy")
})
})