only include necessary data for testing
This commit is contained in:
		
							parent
							
								
									e08262388b
								
							
						
					
					
						commit
						36adc30990
					
				
					 4 changed files with 114 additions and 9 deletions
				
			
		
							
								
								
									
										94
									
								
								db/data-for-test.sql
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								db/data-for-test.sql
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "guild_space" (
 | 
				
			||||||
 | 
						"guild_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"space_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						PRIMARY KEY("guild_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "file" (
 | 
				
			||||||
 | 
						"discord_url"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"mxc_url"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						PRIMARY KEY("discord_url")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "sim" (
 | 
				
			||||||
 | 
						"discord_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"sim_name"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"localpart"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"mxid"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						PRIMARY KEY("discord_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "sim_member" (
 | 
				
			||||||
 | 
						"mxid"	TEXT NOT NULL,
 | 
				
			||||||
 | 
						"room_id"	TEXT NOT NULL,
 | 
				
			||||||
 | 
						"profile_event_content_hash"	BLOB,
 | 
				
			||||||
 | 
						PRIMARY KEY("mxid","room_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "webhook" (
 | 
				
			||||||
 | 
						"channel_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"webhook_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"webhook_token"	TEXT NOT NULL,
 | 
				
			||||||
 | 
						PRIMARY KEY("channel_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "channel_room" (
 | 
				
			||||||
 | 
						"channel_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"room_id"	TEXT NOT NULL UNIQUE,
 | 
				
			||||||
 | 
						"name"	TEXT,
 | 
				
			||||||
 | 
						"nick"	TEXT,
 | 
				
			||||||
 | 
						PRIMARY KEY("channel_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS "event_message" (
 | 
				
			||||||
 | 
						"event_id"	TEXT NOT NULL,
 | 
				
			||||||
 | 
						"event_type"	TEXT,
 | 
				
			||||||
 | 
						"event_subtype"	TEXT,
 | 
				
			||||||
 | 
						"message_id"	TEXT NOT NULL,
 | 
				
			||||||
 | 
						"channel_id"	TEXT,
 | 
				
			||||||
 | 
						"part"	INTEGER NOT NULL,
 | 
				
			||||||
 | 
						"source"	INTEGER NOT NULL,
 | 
				
			||||||
 | 
						PRIMARY KEY("event_id","message_id")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					COMMIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO guild_space (guild_id, space_id) VALUES
 | 
				
			||||||
 | 
					('112760669178241024', '!jjWAGMeQdNrVZSSfvz:cadence.moe');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO channel_room (channel_id, room_id, name, nick) VALUES
 | 
				
			||||||
 | 
					('112760669178241024', '!kLRqKKUQXcibIMtOpl:cadence.moe', 'heave', 'main'),
 | 
				
			||||||
 | 
					('497161350934560778', '!edUxjVdzgUvXDUIQCK:cadence.moe', 'amanda-spam', NULL),
 | 
				
			||||||
 | 
					('160197704226439168', '!uCtjHhfGlYbVnPVlkG:cadence.moe', 'the-stanley-parable-channel', 'bots');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO sim (discord_id, sim_name, localpart, mxid) VALUES
 | 
				
			||||||
 | 
					('0', 'bot', '_ooye_bot', '@_ooye_bot:cadence.moe'),
 | 
				
			||||||
 | 
					('820865262526005258', 'crunch_god', '_ooye_crunch_god', '@_ooye_crunch_god:cadence.moe'),
 | 
				
			||||||
 | 
					('771520384671416320', 'bojack_horseman', '_ooye_bojack_horseman', '@_ooye_bojack_horseman:cadence.moe'),
 | 
				
			||||||
 | 
					('112890272819507200', '.wing.', '_ooye_.wing.', '@_ooye_.wing.:cadence.moe'),
 | 
				
			||||||
 | 
					('114147806469554185', 'extremity', '_ooye_extremity', '@_ooye_extremity:cadence.moe');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO sim_member (mxid, room_id, profile_event_content_hash) VALUES
 | 
				
			||||||
 | 
					('@_ooye_bojack_horseman:cadence.moe', '!uCtjHhfGlYbVnPVlkG:cadence.moe', NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO event_message (event_id, event_type, event_subtype, message_id, channel_id, part, source) VALUES
 | 
				
			||||||
 | 
					('$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg', 'm.room.message', 'm.text', '1126786462646550579', '112760669178241024', 0, 1),
 | 
				
			||||||
 | 
					('$Ij3qo7NxMA4VPexlAiIx2CB9JbsiGhJeyt-2OvkAUe4', 'm.room.message', 'm.text', '1128118177155526666', '112760669178241024', 0, 0),
 | 
				
			||||||
 | 
					('$zXSlyI78DQqQwwfPUSzZ1b-nXzbUrCDljJgnGDdoI10', 'm.room.message', 'm.text', '1141619794500649020', '497161350934560778', 0, 1),
 | 
				
			||||||
 | 
					('$fdD9OZ55xg3EAsfvLZza5tMhtjUO91Wg3Otuo96TplY', 'm.room.message', 'm.text', '1141206225632112650', '160197704226439168', 0, 1),
 | 
				
			||||||
 | 
					('$mtR8cJqM4fKno1bVsm8F4wUVqSntt2sq6jav1lyavuA', 'm.room.message', 'm.text', '1141501302736695316', '112760669178241024', 0, 1),
 | 
				
			||||||
 | 
					('$51f4yqHinwnSbPEQ9dCgoyy4qiIJSX0QYYVUnvwyTCI', 'm.room.message', 'm.image', '1141501302736695316', '112760669178241024', 1, 1),
 | 
				
			||||||
 | 
					('$51f4yqHinwnSbPEQ9dCgoyy4qiIJSX0QYYVUnvwyTCJ', 'm.room.message', 'm.image', '1141501302736695317', '112760669178241024', 0, 1),
 | 
				
			||||||
 | 
					('$vgTKOR5ZTYNMKaS7XvgEIDaOWZtVCEyzLLi5Pc5Gz4M', 'm.room.message', 'm.text', '1128084851279536279', '112760669178241024', 0, 1),
 | 
				
			||||||
 | 
					('$YUJFa5j0ZJe7PUvD2DykRt9g51RoadUEYmuJLdSEbJ0', 'm.room.message', 'm.image', '1128084851279536279', '112760669178241024', 1, 1),
 | 
				
			||||||
 | 
					('$oLyUTyZ_7e_SUzGNWZKz880ll9amLZvXGbArJCKai2Q', 'm.room.message', 'm.text', '1128084748338741392', '112760669178241024', 0, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO file (discord_url, mxc_url) VALUES
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/attachments/122155380120748034/1106366167486038016/image.png', 'mxc://cadence.moe/ZDCNYnkPszxGKgObUIFmvjus'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/stickers/1106323941183717586.png', 'mxc://cadence.moe/UuUaLwXhkxFRwwWCXipDlBHn'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/attachments/112760669178241024/1128084747910918195/skull.webp', 'mxc://cadence.moe/sDxWmDErBhYBxtDcJQgBETes'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/attachments/112760669178241024/1141501302497615912/piper_2.png', 'mxc://cadence.moe/KQYdXKRcHWjDYDLPkTOOWOjA'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/attachments/112760669178241024/1128084851023675515/RDT_20230704_0936184915846675925224905.jpg', 'mxc://cadence.moe/WlAbFSiNRIHPDEwKdyPeGywa'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/guilds/112760669178241024/users/134826546694193153/avatars/38dd359aa12bcd52dd3164126c587f8c.png?size=1024', 'mxc://cadence.moe/rfemHmAtcprjLEiPiEuzPhpl'),
 | 
				
			||||||
 | 
					('https://cdn.discordapp.com/icons/112760669178241024/a_f83622e09ead74f0c5c527fe241f8f8c.png?size=1024', 'mxc://cadence.moe/zKXGZhmImMHuGQZWJEFKJbsF');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COMMIT;
 | 
				
			||||||
| 
						 | 
					@ -40,15 +40,8 @@ async function uploadDiscordFileToMxc(path) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Download from Discord
 | 
						// Download from Discord
 | 
				
			||||||
	const promise = fetch(url, {}).then(/** @param {import("node-fetch").Response} res */ async res => {
 | 
						const promise = fetch(url, {}).then(/** @param {import("node-fetch").Response} res */ async res => {
 | 
				
			||||||
		const body = res.body
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Upload to Matrix
 | 
							// Upload to Matrix
 | 
				
			||||||
		/** @type {import("../types").R.FileUploaded} */
 | 
							const root = await module.exports._actuallyUploadDiscordFileToMxc(url, res)
 | 
				
			||||||
		const root = await mreq.mreq("POST", "/media/v3/upload", body, {
 | 
					 | 
				
			||||||
			headers: {
 | 
					 | 
				
			||||||
				"Content-Type": res.headers.get("content-type")
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Store relationship in database
 | 
							// Store relationship in database
 | 
				
			||||||
		db.prepare("INSERT INTO file (discord_url, mxc_url) VALUES (?, ?)").run(url, root.content_uri)
 | 
							db.prepare("INSERT INTO file (discord_url, mxc_url) VALUES (?, ?)").run(url, root.content_uri)
 | 
				
			||||||
| 
						 | 
					@ -61,6 +54,17 @@ async function uploadDiscordFileToMxc(path) {
 | 
				
			||||||
	return promise
 | 
						return promise
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function _actuallyUploadDiscordFileToMxc(url, res) {
 | 
				
			||||||
 | 
						const body = res.body
 | 
				
			||||||
 | 
						/** @type {import("../types").R.FileUploaded} */
 | 
				
			||||||
 | 
						const root = await mreq.mreq("POST", "/media/v3/upload", body, {
 | 
				
			||||||
 | 
							headers: {
 | 
				
			||||||
 | 
								"Content-Type": res.headers.get("content-type")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return root
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function guildIcon(guild) {
 | 
					function guildIcon(guild) {
 | 
				
			||||||
	return `/icons/${guild.id}/${guild.icon}.png?size=${IMAGE_SIZE}`
 | 
						return `/icons/${guild.id}/${guild.icon}.png?size=${IMAGE_SIZE}`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -102,3 +106,4 @@ module.exports.emoji = emoji
 | 
				
			||||||
module.exports.stickerFormat = stickerFormat
 | 
					module.exports.stickerFormat = stickerFormat
 | 
				
			||||||
module.exports.sticker = sticker
 | 
					module.exports.sticker = sticker
 | 
				
			||||||
module.exports.uploadDiscordFileToMxc = uploadDiscordFileToMxc
 | 
					module.exports.uploadDiscordFileToMxc = uploadDiscordFileToMxc
 | 
				
			||||||
 | 
					module.exports._actuallyUploadDiscordFileToMxc = _actuallyUploadDiscordFileToMxc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1,16 +1,22 @@
 | 
				
			||||||
// @ts-check
 | 
					// @ts-check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const fs = require("fs")
 | 
				
			||||||
const sqlite = require("better-sqlite3")
 | 
					const sqlite = require("better-sqlite3")
 | 
				
			||||||
const HeatSync = require("heatsync")
 | 
					const HeatSync = require("heatsync")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const config = require("../config")
 | 
					const config = require("../config")
 | 
				
			||||||
const passthrough = require("../passthrough")
 | 
					const passthrough = require("../passthrough")
 | 
				
			||||||
const db = new sqlite("db/ooye.db")
 | 
					const db = new sqlite(":memory:")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					db.exec(fs.readFileSync("db/data-for-test.sql", "utf8"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const sync = new HeatSync({watchFS: false})
 | 
					const sync = new HeatSync({watchFS: false})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Object.assign(passthrough, { config, sync, db })
 | 
					Object.assign(passthrough, { config, sync, db })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const file = sync.require("../matrix/file")
 | 
				
			||||||
 | 
					file._actuallyUploadDiscordFileToMxc = function(url, res) { throw new Error(`Not allowed to upload files during testing.\nURL: ${url}`) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require("../matrix/kstate.test")
 | 
					require("../matrix/kstate.test")
 | 
				
			||||||
require("../matrix/api.test")
 | 
					require("../matrix/api.test")
 | 
				
			||||||
require("../matrix/read-registration.test")
 | 
					require("../matrix/read-registration.test")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue