2023-05-05 05:29:08 +00:00
|
|
|
// @ts-check
|
|
|
|
|
2023-08-18 05:00:40 +00:00
|
|
|
const fs = require("fs")
|
2023-09-30 12:24:05 +00:00
|
|
|
const {join} = require("path")
|
2024-03-01 04:28:14 +00:00
|
|
|
const stp = require("stream").promises
|
2023-05-05 05:29:08 +00:00
|
|
|
const sqlite = require("better-sqlite3")
|
2024-09-12 05:11:35 +00:00
|
|
|
const migrate = require("../src/db/migrate")
|
2023-05-05 05:29:08 +00:00
|
|
|
const HeatSync = require("heatsync")
|
2023-09-30 12:24:05 +00:00
|
|
|
const {test} = require("supertape")
|
|
|
|
const data = require("./data")
|
2024-02-18 12:24:21 +00:00
|
|
|
/** @type {import("node-fetch").default} */
|
|
|
|
// @ts-ignore
|
|
|
|
const fetch = require("node-fetch")
|
2024-03-01 04:28:14 +00:00
|
|
|
const {green} = require("colorette")
|
2023-05-05 05:29:08 +00:00
|
|
|
|
2024-09-12 05:11:35 +00:00
|
|
|
const passthrough = require("../src/passthrough")
|
2023-08-18 05:00:40 +00:00
|
|
|
const db = new sqlite(":memory:")
|
|
|
|
|
2024-09-12 05:11:35 +00:00
|
|
|
const {reg} = require("../src/matrix/read-registration")
|
2023-09-12 09:37:36 +00:00
|
|
|
reg.ooye.server_origin = "https://matrix.cadence.moe" // so that tests will pass even when hard-coded
|
2024-01-20 05:23:48 +00:00
|
|
|
reg.ooye.server_name = "cadence.moe"
|
2024-06-06 00:12:48 +00:00
|
|
|
reg.id = "baby" // don't actually take authenticated actions on the server
|
|
|
|
reg.as_token = "baby"
|
|
|
|
reg.hs_token = "baby"
|
2024-09-12 04:59:48 +00:00
|
|
|
reg.ooye.bridge_origin = "https://bridge.example.org"
|
2024-08-27 14:53:27 +00:00
|
|
|
reg.ooye.invite = []
|
2023-09-12 09:37:36 +00:00
|
|
|
|
2023-05-08 05:22:20 +00:00
|
|
|
const sync = new HeatSync({watchFS: false})
|
2023-05-05 05:29:08 +00:00
|
|
|
|
2023-09-30 12:24:05 +00:00
|
|
|
const discord = {
|
|
|
|
guilds: new Map([
|
|
|
|
[data.guild.general.id, data.guild.general]
|
2023-10-10 01:03:53 +00:00
|
|
|
]),
|
|
|
|
application: {
|
|
|
|
id: "684280192553844747"
|
2023-11-30 03:27:40 +00:00
|
|
|
},
|
|
|
|
channels: new Map([
|
|
|
|
["497161350934560778", {
|
|
|
|
guild_id: "497159726455455754"
|
2024-02-13 22:57:01 +00:00
|
|
|
}],
|
|
|
|
["498323546729086986", {
|
|
|
|
guild_id: "497159726455455754",
|
|
|
|
name: "bad-boots-prison"
|
2023-11-30 03:27:40 +00:00
|
|
|
}]
|
|
|
|
])
|
2023-09-30 12:24:05 +00:00
|
|
|
}
|
|
|
|
|
2024-09-13 11:47:11 +00:00
|
|
|
Object.assign(passthrough, { discord, sync, db })
|
2023-05-05 05:29:08 +00:00
|
|
|
|
2024-09-12 05:11:35 +00:00
|
|
|
const orm = sync.require("../src/db/orm")
|
2023-09-14 00:32:27 +00:00
|
|
|
passthrough.from = orm.from
|
|
|
|
passthrough.select = orm.select
|
|
|
|
|
2024-09-12 05:11:35 +00:00
|
|
|
const file = sync.require("../src/matrix/file")
|
2024-03-04 04:02:38 +00:00
|
|
|
/* c8 ignore next */
|
2023-08-18 05:00:40 +00:00
|
|
|
file._actuallyUploadDiscordFileToMxc = function(url, res) { throw new Error(`Not allowed to upload files during testing.\nURL: ${url}`) }
|
|
|
|
|
2023-09-30 12:24:05 +00:00
|
|
|
;(async () => {
|
2024-03-01 04:28:14 +00:00
|
|
|
/* c8 ignore start - maybe download some more test files in slow mode */
|
|
|
|
if (process.argv.includes("--slow")) {
|
|
|
|
test("test files: download", async t => {
|
|
|
|
/** @param {{url: string, to: string}[]} files */
|
|
|
|
async function allReporter(files) {
|
|
|
|
return new Promise(resolve => {
|
|
|
|
let resolved = 0
|
|
|
|
const report = files.map(file => file.to.split("/").slice(-1)[0][0])
|
|
|
|
files.map(download).forEach((p, i) => {
|
|
|
|
p.then(() => {
|
|
|
|
report[i] = green(".")
|
|
|
|
process.stderr.write("\r" + report.join(""))
|
|
|
|
if (++resolved === files.length) resolve(null)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
async function download({url, to}) {
|
|
|
|
if (await fs.existsSync(to)) return
|
|
|
|
const res = await fetch(url)
|
|
|
|
await stp.pipeline(res.body, fs.createWriteStream(to, {encoding: "binary"}))
|
|
|
|
}
|
|
|
|
await allReporter([
|
2024-09-15 10:56:55 +00:00
|
|
|
{url: "https://cadence.moe/friends/ooye_test/RLMgJGfgTPjIQtvvWZsYjhjy.png", to: "test/res/RLMgJGfgTPjIQtvvWZsYjhjy.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/bZFuuUSEebJYXUMSxuuSuLTa.png", to: "test/res/bZFuuUSEebJYXUMSxuuSuLTa.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/qWmbXeRspZRLPcjseyLmeyXC.png", to: "test/res/qWmbXeRspZRLPcjseyLmeyXC.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/wcouHVjbKJJYajkhJLsyeJAA.png", to: "test/res/wcouHVjbKJJYajkhJLsyeJAA.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/WbYqNlACRuicynBfdnPYtmvc.gif", to: "test/res/WbYqNlACRuicynBfdnPYtmvc.gif"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/HYcztccFIPgevDvoaWNsEtGJ.png", to: "test/res/HYcztccFIPgevDvoaWNsEtGJ.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/lHfmJpzgoNyNtYHdAmBHxXix.png", to: "test/res/lHfmJpzgoNyNtYHdAmBHxXix.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/MtRdXixoKjKKOyHJGWLsWLNU.png", to: "test/res/MtRdXixoKjKKOyHJGWLsWLNU.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/HXfFuougamkURPPMflTJRxGc.png", to: "test/res/HXfFuougamkURPPMflTJRxGc.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/ikYKbkhGhMERAuPPbsnQzZiX.png", to: "test/res/ikYKbkhGhMERAuPPbsnQzZiX.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/AYPpqXzVJvZdzMQJGjioIQBZ.png", to: "test/res/AYPpqXzVJvZdzMQJGjioIQBZ.png"},
|
|
|
|
{url: "https://cadence.moe/friends/ooye_test/UVuzvpVUhqjiueMxYXJiFEAj.png", to: "test/res/UVuzvpVUhqjiueMxYXJiFEAj.png"},
|
2024-03-01 04:28:14 +00:00
|
|
|
{url: "https://ezgif.com/images/format-demo/butterfly.gif", to: "test/res/butterfly.gif"},
|
2024-03-04 04:02:38 +00:00
|
|
|
{url: "https://ezgif.com/images/format-demo/butterfly.png", to: "test/res/butterfly.png"},
|
2024-03-01 04:28:14 +00:00
|
|
|
])
|
|
|
|
}, {timeout: 60000})
|
|
|
|
}
|
|
|
|
/* c8 ignore end */
|
|
|
|
|
2023-09-30 12:24:05 +00:00
|
|
|
const p = migrate.migrate(db)
|
|
|
|
test("migrate: migration works", async t => {
|
|
|
|
await p
|
|
|
|
t.pass("it did not throw an error")
|
|
|
|
})
|
|
|
|
await p
|
2024-02-02 02:55:02 +00:00
|
|
|
|
|
|
|
test("migrate: migration works the second time", async t => {
|
|
|
|
await migrate.migrate(db)
|
|
|
|
t.pass("it did not throw an error")
|
|
|
|
})
|
|
|
|
|
2023-09-30 12:24:05 +00:00
|
|
|
db.exec(fs.readFileSync(join(__dirname, "ooye-test-data.sql"), "utf8"))
|
2024-02-18 12:24:21 +00:00
|
|
|
|
2024-09-12 05:11:35 +00:00
|
|
|
require("../src/db/orm.test")
|
|
|
|
require("../src/discord/utils.test")
|
|
|
|
require("../src/matrix/kstate.test")
|
|
|
|
require("../src/matrix/api.test")
|
|
|
|
require("../src/matrix/file.test")
|
|
|
|
require("../src/matrix/power.test")
|
|
|
|
require("../src/matrix/read-registration.test")
|
|
|
|
require("../src/matrix/txnid.test")
|
|
|
|
require("../src/d2m/actions/create-room.test")
|
|
|
|
require("../src/d2m/actions/create-space.test")
|
|
|
|
require("../src/d2m/actions/register-user.test")
|
|
|
|
require("../src/d2m/converters/edit-to-changes.test")
|
|
|
|
require("../src/d2m/converters/emoji-to-key.test")
|
|
|
|
require("../src/d2m/converters/lottie.test")
|
|
|
|
require("../src/d2m/converters/message-to-event.test")
|
|
|
|
require("../src/d2m/converters/message-to-event.embeds.test")
|
|
|
|
require("../src/d2m/converters/message-to-event.pk.test")
|
|
|
|
require("../src/d2m/converters/pins-to-list.test")
|
|
|
|
require("../src/d2m/converters/remove-reaction.test")
|
|
|
|
require("../src/d2m/converters/thread-to-announcement.test")
|
|
|
|
require("../src/d2m/converters/user-to-mxid.test")
|
|
|
|
require("../src/m2d/converters/event-to-message.test")
|
|
|
|
require("../src/m2d/converters/utils.test")
|
|
|
|
require("../src/m2d/converters/emoji-sheet.test")
|
2023-09-30 12:24:05 +00:00
|
|
|
})()
|