Less Test Errors 1
This commit is contained in:
parent
d7e2604851
commit
96e100497c
2608
backend/package-lock.json
generated
2608
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -65,7 +65,7 @@
|
||||
"@types/passport": "^1.0.4",
|
||||
"@types/passport-local": "^1.0.33",
|
||||
"@types/socket.io": "^2.1.13",
|
||||
"@types/socket.io-client": "^1.4.36",
|
||||
"@types/socket.io-client": "^3.0.0",
|
||||
"@types/supertest": "^2.0.10",
|
||||
"chai": "^4.2.0",
|
||||
"chai-as-promised": "^7.1.1",
|
||||
|
@ -2,7 +2,7 @@ import { config } from 'dotenv';
|
||||
config();
|
||||
|
||||
import { connect } from 'mongoose';
|
||||
import { API } from './rest/server';
|
||||
import { REST } from './rest/server';
|
||||
import Deps from './utils/deps';
|
||||
import Log from './utils/log';
|
||||
|
||||
@ -17,4 +17,4 @@ connect(process.env.MONGO_URI, {
|
||||
: Log.info('Connected to database.')
|
||||
);
|
||||
|
||||
Deps.get<API>(API);
|
||||
Deps.get<REST>(REST);
|
||||
|
@ -20,16 +20,14 @@ export default class GuildMembers extends DBWrapper<string, GuildMemberDocument>
|
||||
return member;
|
||||
}
|
||||
|
||||
public async create(guild: GuildDocument, user: SelfUserDocument, ...roles: Entity.Role[]) {
|
||||
public async create(guildId: string, user: SelfUserDocument, ...roleIds: string[] = []) {
|
||||
const member = await GuildMember.create({
|
||||
_id: generateSnowflake(),
|
||||
guildId: guild.id,
|
||||
guildId: guildId,
|
||||
userId: user.id,
|
||||
roleIds: (roles.length > 0)
|
||||
? roles.map(r => r.id)
|
||||
: [await this.getEveryoneRoleId(guild.id) as string],
|
||||
roleIds: [await this.getEveryoneRoleId(guildId)].concat(roleIds),
|
||||
});
|
||||
await this.addToUser(user, guild.id);
|
||||
await this.addToUser(user, guildId);
|
||||
|
||||
return member;
|
||||
}
|
||||
@ -41,6 +39,6 @@ export default class GuildMembers extends DBWrapper<string, GuildMemberDocument>
|
||||
|
||||
private async getEveryoneRoleId(guildId: string) {
|
||||
const role = await Role.findOne({ guildId, name: '@everyone' });
|
||||
return role?.id;
|
||||
return role!.id;
|
||||
}
|
||||
}
|
@ -40,7 +40,7 @@ export default class Guilds extends DBWrapper<string, GuildDocument> {
|
||||
});
|
||||
const everyoneRole = await this.roles.create(guild.id, { name: '@everyone' });
|
||||
await this.channels.createText(guild.id);
|
||||
await this.members.create(guild, owner, everyoneRole);
|
||||
await this.members.create(guild.id, owner, everyoneRole);
|
||||
|
||||
return guild;
|
||||
}
|
||||
|
@ -13,18 +13,13 @@ export default class Invites extends DBWrapper<string, InviteDocument> {
|
||||
return invite;
|
||||
}
|
||||
|
||||
public async create({ guildId, options }: WS.Params.InviteCreate, userId: string) {
|
||||
const invite = await Invite.create({
|
||||
public async create({ guildId, options }: WS.Params.InviteCreate, inviterId: string) {
|
||||
return await Invite.create({
|
||||
_id: generateInvite(),
|
||||
guildId,
|
||||
inviterId: userId,
|
||||
inviterId,
|
||||
options,
|
||||
uses: 0,
|
||||
});
|
||||
await Guild.updateOne(
|
||||
{ _id: guildId },
|
||||
{ $push: { invites: invite } }
|
||||
);
|
||||
return invite;
|
||||
}
|
||||
}
|
@ -7,7 +7,6 @@ import { generateSnowflake } from '../snowflake-entity';
|
||||
export interface GuildDocument extends Document, Entity.Guild {
|
||||
id: string;
|
||||
createdAt: never;
|
||||
nameAcronym: never;
|
||||
}
|
||||
|
||||
export const Guild = model<GuildDocument>('guild', new Schema({
|
||||
|
@ -1,4 +1,4 @@
|
||||
import Deps from '../../../utils/deps';
|
||||
import Deps from '../utils/deps';
|
||||
import { Email } from './email';
|
||||
import { Verification } from './verification';
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { createTransport } from 'nodemailer';
|
||||
import Mail from 'nodemailer/lib/mailer';
|
||||
import { pugEngine } from 'nodemailer-pug-engine';
|
||||
import Log from '../../../utils/log';
|
||||
import Log from '../utils/log';
|
||||
|
||||
export class Email {
|
||||
private email: Mail;
|
@ -1,4 +1,4 @@
|
||||
import generateInvite from '../../../data/utils/generate-invite';
|
||||
import generateInvite from '../data/utils/generate-invite';
|
||||
|
||||
export class Verification {
|
||||
private codes = new Map<string, VerifyCode>();
|
@ -27,7 +27,7 @@ router.get('/:id/authorize/:botId',
|
||||
async (req, res) => {
|
||||
const guild = res.locals.guild;
|
||||
const bot = await users.get(req.params.botId);
|
||||
const member = await members.create(guild, bot);
|
||||
const member = await members.create(guild.id, bot);
|
||||
|
||||
ws.io
|
||||
.to(guild.id)
|
||||
|
@ -19,7 +19,7 @@ import { WebSocket } from '../ws/websocket';
|
||||
import { APIError } from './modules/api-error';
|
||||
import rateLimiter from './modules/rate-limiter';
|
||||
|
||||
export class API {
|
||||
export class REST {
|
||||
public app = express();
|
||||
private prefix = `/api/v2`;
|
||||
|
||||
|
@ -38,7 +38,7 @@ export default class implements WSEvent<'GUILD_MEMBER_ADD'> {
|
||||
const [a, b, member, entities] = await Promise.all([
|
||||
this.handleInvite(invite),
|
||||
this.rooms.joinGuildRooms(user, client),
|
||||
this.members.create(guild, user),
|
||||
this.members.create(guild.id, user),
|
||||
this.guilds.getEntities(guild.id),
|
||||
]);
|
||||
client.emit('GUILD_CREATE', { guild, ...entities, } as WS.Args.GuildCreate);
|
||||
|
@ -1,44 +0,0 @@
|
||||
import SendFriendRequest from '../../src/api/websocket/ws-events/send-friend-request';
|
||||
import { WebSocket } from '../../src/api/websocket/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../mock';
|
||||
import { UserDocument } from '../../src/data/models/user';
|
||||
import { GuildDocument } from '../../src/data/models/guild';
|
||||
import { expect } from 'chai';
|
||||
|
||||
describe(addeventnamehere, () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: SendFriendRequest;
|
||||
let ws: WebSocket;
|
||||
|
||||
let user: UserDocument;
|
||||
let guild: GuildDocument;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ event, ws, guild, user } = await Mock.defaultSetup(client, SendFriendRequest));
|
||||
});
|
||||
|
||||
afterEach(async () => await Mock.afterEach(ws));
|
||||
after(async () => await Mock.after(client));
|
||||
|
||||
it('fulfilled', async () => {
|
||||
const result = () => event.invoke(ws, client, {
|
||||
|
||||
});
|
||||
|
||||
await expect(result()).to.be.fulfilled;
|
||||
});
|
||||
|
||||
it('rejected', async () => {
|
||||
const result = () => event.invoke(ws, client, {
|
||||
|
||||
});
|
||||
|
||||
await expect(result()).to.be.rejectedWith();
|
||||
});
|
||||
|
||||
async function makeGuildOwner() {
|
||||
ws.sessions.set(client.id, guild.ownerId);
|
||||
await Mock.clearRolePerms(guild);
|
||||
}
|
||||
});
|
@ -2,13 +2,11 @@ import { Mock } from '../../mock/mock';
|
||||
import { EmailMock } from '../../mock/email-mock';
|
||||
import { assert, expect, spy } from 'chai';
|
||||
import Deps from '../../../src/utils/deps';
|
||||
import { API } from '../../../src/api/server';
|
||||
import request from 'supertest';
|
||||
import Users from '../../../src/data/users';
|
||||
import { User, SelfUserDocument } from '../../../src/data/models/user';
|
||||
import { generateUsername } from '../../../src/utils/utils';
|
||||
import { generateInviteCode } from '../../../src/data/models/invite';
|
||||
import { Email } from '../../../src/api/modules/email/email';
|
||||
import { REST } from '../../../src/rest/server';
|
||||
|
||||
describe.skip('auth-routes', () => {
|
||||
const endpoint = `/api/v1`;
|
||||
@ -23,7 +21,7 @@ describe.skip('auth-routes', () => {
|
||||
beforeEach(async () => {
|
||||
email = Deps.add(Email, new EmailMock());
|
||||
|
||||
app = Deps.get<API>(API).app;
|
||||
app = Deps.get<REST>(REST).app;
|
||||
users = Deps.get<Users>(Users);
|
||||
|
||||
credentials = {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import AddFriend from '../../../src/api/websocket/ws-events/add-friend';
|
||||
import RemoveFriend from '../../../src/api/websocket/ws-events/remove-friend';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import AddFriend from '../../../src/ws/ws-events/add-friend';
|
||||
import RemoveFriend from '../../../src/ws/ws-events/remove-friend';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { expect } from 'chai';
|
||||
@ -8,7 +8,7 @@ import { SelfUserDocument, User } from '../../../src/data/models/user';
|
||||
import { Channel } from '../../../src/data/models/channel';
|
||||
|
||||
describe('add-friend', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: AddFriend;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import 'mocha';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import ChannelCreate from '../../../src/api/websocket/ws-events/channel-create';
|
||||
import ChannelCreate from '../../../src/ws/ws-events/channel-create';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { expect, spy } from 'chai';
|
||||
import { Guild, GuildDocument } from '../../../src/data/models/guild';
|
||||
import { RoleDocument } from '../../../src/data/models/role';
|
||||
|
||||
describe('channel-create', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let ws: WebSocket;
|
||||
let event: ChannelCreate;
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import GuildCreate from '../../../src/api/websocket/ws-events/guild-create';
|
||||
import GuildCreate from '../../../src/ws/ws-events/guild-create';
|
||||
import { User, UserDocument } from '../../../src/data/models/user';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { expect } from 'chai';
|
||||
import { GuildMemberDocument } from '../../../src/data/models/guild-member';
|
||||
|
||||
describe('guild-create', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let ws: WebSocket;
|
||||
let event: GuildCreate;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import GuildDelete from '../../../src/api/websocket/ws-events/guild-delete';
|
||||
import GuildDelete from '../../../src/ws/ws-events/guild-delete';
|
||||
import { User, UserDocument } from '../../../src/data/models/user';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { expect } from 'chai';
|
||||
@ -11,7 +11,7 @@ import { Invite } from '../../../src/data/models/invite';
|
||||
import { Role } from '../../../src/data/models/role';
|
||||
|
||||
describe('guild-delete', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let ws: WebSocket;
|
||||
let event: GuildDelete;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import GuildMemberAdd from '../../../src/api/websocket/ws-events/guild-member-add';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import GuildMemberAdd from '../../../src/ws/ws-events/guild-member-add';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import Deps from '../../../src/utils/deps';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
@ -11,7 +11,7 @@ import Guilds from '../../../src/data/guilds';
|
||||
import Users from '../../../src/data/users';
|
||||
|
||||
describe('guild-member-add', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: GuildMemberAdd;
|
||||
let guilds: Guilds;
|
||||
let users: Users;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import GuildMemberRemove from '../../../src/api/websocket/ws-events/guild-member-remove';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import GuildMemberRemove from '../../../src/ws/ws-events/guild-member-remove';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { GuildDocument } from '../../../src/data/models/guild';
|
||||
@ -8,7 +8,7 @@ import { GuildMemberDocument } from '../../../src/data/models/guild-member';
|
||||
import { User, UserDocument } from '../../../src/data/models/user';
|
||||
|
||||
describe('guild-member-remove', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let event: GuildMemberRemove;
|
||||
let ws: WebSocket;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import GuildMemberUpdate from '../../../src/api/websocket/ws-events/guild-member-update';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import GuildMemberUpdate from '../../../src/ws/ws-events/guild-member-update';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { GuildDocument } from '../../../src/data/models/guild';
|
||||
@ -8,7 +8,7 @@ import { GuildMember, GuildMemberDocument } from '../../../src/data/models/guild
|
||||
import { Role, RoleDocument } from '../../../src/data/models/role';
|
||||
|
||||
describe('guild-member-update', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let event: GuildMemberUpdate;
|
||||
let ws: WebSocket;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import GuildUpdate from '../../../src/api/websocket/ws-events/guild-update';
|
||||
import GuildUpdate from '../../../src/ws/ws-events/guild-update';
|
||||
import { Guild, GuildDocument } from '../../../src/data/models/guild';
|
||||
import { UserDocument } from '../../../src/data/models/user';
|
||||
import { Mock } from '../../mock/mock';
|
||||
@ -9,7 +9,7 @@ import { GuildMemberDocument } from '../../../src/data/models/guild-member';
|
||||
import { generateSnowflake } from '../../../src/data/snowflake-entity';
|
||||
|
||||
describe('guild-update', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let ws: WebSocket;
|
||||
let event: GuildUpdate;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import InviteCreate from '../../../src/api/websocket/ws-events/invite-create';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import InviteCreate from '../../../src/ws/ws-events/invite-create';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { GuildDocument } from '../../../src/data/models/guild';
|
||||
@ -7,7 +7,7 @@ import { expect } from 'chai';
|
||||
import { Role, RoleDocument } from '../../../src/data/models/role';
|
||||
|
||||
describe('invite-create', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: InviteCreate;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import InviteDelete from '../../../src/api/websocket/ws-events/invite-delete';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import InviteDelete from '../../../src/ws/ws-events/invite-delete';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { GuildDocument } from '../../../src/data/models/guild';
|
||||
@ -8,7 +8,7 @@ import { expect } from 'chai';
|
||||
import { RoleDocument } from '../../../src/data/models/role';
|
||||
|
||||
describe('invite-delete', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: InviteDelete;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import MessageCreate from '../../../src/api/websocket/ws-events/message-create';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import MessageCreate from '../../../src/ws/ws-events/message-create';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import { expect } from 'chai';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
@ -8,7 +8,7 @@ import { Channel, ChannelDocument } from '../../../src/data/models/channel';
|
||||
import { SelfUserDocument, User } from '../../../src/data/models/user';
|
||||
|
||||
describe('message-create', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: MessageCreate;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import MessageDelete from '../../../src/api/websocket/ws-events/message-delete';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import MessageDelete from '../../../src/ws/ws-events/message-delete';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import { expect } from 'chai';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
@ -10,7 +10,7 @@ import { generateSnowflake } from '../../../src/data/snowflake-entity';
|
||||
import { Channel } from '../../../src/data/models/channel';
|
||||
|
||||
describe('message-delete', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let event: MessageDelete;
|
||||
let ws: WebSocket;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import MessageUpdate from '../../../src/api/websocket/ws-events/message-update';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import MessageUpdate from '../../../src/ws/ws-events/message-update';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import Deps from '../../../src/utils/deps';
|
||||
import { expect } from 'chai';
|
||||
import io from 'socket.io-client';
|
||||
@ -12,7 +12,7 @@ import { generateSnowflake } from '../../../src/data/snowflake-entity';
|
||||
import { Partial } from '../../../src/data/types/ws-types';
|
||||
|
||||
describe('message-update', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let channel: ChannelDocument;
|
||||
let event: MessageUpdate;
|
||||
|
@ -1,17 +1,17 @@
|
||||
import Deps from '../../../src/utils/deps';
|
||||
import Ready from '../../../src/api/websocket/ws-events/ready';
|
||||
import Disconnect from '../../../src/api/websocket/ws-events/disconnect';
|
||||
import Ready from '../../../src/ws/ws-events/ready';
|
||||
import Disconnect from '../../../src/ws/ws-events/disconnect';
|
||||
import { User, UserDocument } from '../../../src/data/models/user';
|
||||
import { expect } from 'chai';
|
||||
import Users from '../../../src/data/users';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { SystemBot } from '../../../src/system/bot';
|
||||
import { GuildDocument } from '../../../src/data/models/guild';
|
||||
|
||||
describe('ready', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let event: Ready;
|
||||
let users: Users;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import RemoveFriend from '../../../src/api/websocket/ws-events/remove-friend';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import RemoveFriend from '../../../src/ws/ws-events/remove-friend';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { expect } from 'chai';
|
||||
@ -7,7 +7,7 @@ import { generateSnowflake } from '../../../src/data/snowflake-entity';
|
||||
import { SelfUserDocument, User, UserDocument } from '../../../src/data/models/user';
|
||||
|
||||
describe('remove-friend', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: RemoveFriend;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import UserUpdate from '../../../src/api/websocket/ws-events/user-update';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import UserUpdate from '../../../src/ws/ws-events/user-update';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
import { Mock } from '../../mock/mock';
|
||||
import { User, UserDocument } from '../../../src/data/models/user';
|
||||
@ -8,7 +8,7 @@ import Deps from '../../../src/utils/deps';
|
||||
import Users from '../../../src/data/users';
|
||||
|
||||
describe('user-update', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
let event: UserUpdate;
|
||||
let ws: WebSocket;
|
||||
|
||||
|
@ -5,13 +5,13 @@ import { GuildDocument } from '../../../src/data/models/guild';
|
||||
import { UserDocument } from '../../../src/data/models/user';
|
||||
import { WSGuard } from '../../../src/api/modules/ws-guard';
|
||||
import { expect } from 'chai';
|
||||
import { WebSocket } from '../../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import { GuildMember } from '../../../src/data/models/guild-member';
|
||||
import { Role } from '../../../src/data/models/role';
|
||||
import { TextChannelDocument, VoiceChannelDocument } from '../../../src/data/models/channel';
|
||||
|
||||
describe('ws-guard', () => {
|
||||
const client = io(`http://localhost:${process.env.PORT}`) as any;
|
||||
const client = (io as any)(`http://localhost:${process.env.PORT}`) as any;
|
||||
|
||||
let guard: WSGuard;
|
||||
let guild: GuildDocument;
|
||||
|
@ -4,37 +4,46 @@ import { GuildMember, GuildMemberDocument } from '../../src/data/models/guild-me
|
||||
import { User, SelfUserDocument, UserDocument } from '../../src/data/models/user';
|
||||
import { generateSnowflake } from '../../src/data/snowflake-entity';
|
||||
import { Role, RoleDocument } from '../../src/data/models/role';
|
||||
import { ChannelTypes, InviteTypes, Lean, PermissionTypes, UserTypes } from '../../src/data/types/entity-types';
|
||||
import { Message } from '../../src/data/models/message';
|
||||
import { Invite } from '../../src/data/models/invite';
|
||||
import Roles from '../../src/data/roles';
|
||||
import Messages from '../../src/data/messages';
|
||||
import Invites from '../../src/data/invites';
|
||||
import { Application } from '../../src/data/models/application';
|
||||
import { API } from '../../src/api/server';
|
||||
import { WebSocket } from '../../src/api/websocket/websocket';
|
||||
import { WebSocket } from '../../src/ws/websocket';
|
||||
import Deps from '../../src/utils/deps';
|
||||
import Guilds from '../../src/data/guilds';
|
||||
import GuildMembers from '../../src/data/guild-members';
|
||||
import Channels from '../../src/data/channels';
|
||||
import { PermissionTypes } from '../../src/types/permission-types';
|
||||
import { REST } from '../../src/rest/server';
|
||||
import { PartialEntity } from '../../src/types/ws';
|
||||
|
||||
// mostly replace will data wrappers
|
||||
// TODO: mostly replace with data wrappers
|
||||
export class Mock {
|
||||
private static channels = Deps.get<Channels>(Channels);
|
||||
private static guilds = Deps.get<Guilds>(Guilds);
|
||||
private static guildMembers = Deps.get<GuildMembers>(GuildMembers);
|
||||
private static messages = Deps.get<Messages>(Messages);
|
||||
private static roles = Deps.get<Roles>(Roles);
|
||||
|
||||
public static async defaultSetup(client: any, eventType: any = function() {}) {
|
||||
Deps.get<API>(API);
|
||||
Deps.get<REST>(REST);
|
||||
|
||||
const event = new (eventType as any)();
|
||||
const ws = Deps.get<WebSocket>(WebSocket);
|
||||
|
||||
const guild = await Mock.guild();
|
||||
const member = new GuildMember(guild.members[1]);
|
||||
const role = new Role(guild.roles[0]);
|
||||
const user = await User.findById(member.userId);
|
||||
const channel = new Channel(guild.channels[0]);
|
||||
const guild = await this.guild();
|
||||
const guildId = guild.id;
|
||||
|
||||
const [user, member, role, channel] = await Promise.all([
|
||||
User.findOne({ guildIds: { $in: guild.id } }),
|
||||
GuildMember.findOne({ _id: { $not: guild.ownerId }, guildId }),
|
||||
Role.findOne({ guildId }),
|
||||
Channel.findOne({ guildId }),
|
||||
]);
|
||||
|
||||
Mock.ioClient(client);
|
||||
|
||||
ws.sessions.set(client.id, user.id);
|
||||
|
||||
return { event, guild, user, member, ws, role, channel };
|
||||
@ -59,25 +68,20 @@ export class Mock {
|
||||
};
|
||||
}
|
||||
|
||||
public static async message(author: Lean.User, channelId: string) {
|
||||
return await Message.create({
|
||||
_id: generateSnowflake(),
|
||||
authorId: author.id,
|
||||
channelId,
|
||||
content: 'hi',
|
||||
public static async message(author: Entity.User, channelId: string, options?: PartialEntity.Message) {
|
||||
return await this.messages.create(author.id, channelId, {
|
||||
content: 'testing123',
|
||||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
public static async guild(): Promise<GuildDocument> {
|
||||
const owner = await Mock.user();
|
||||
const memberUser = await Mock.user();
|
||||
const owner = await Mock.self();
|
||||
const memberUser = await Mock.self();
|
||||
|
||||
const guild = await this.guilds.create('Mock Guild', owner);
|
||||
const guild = await this.guilds.create('Mock Guild', owner);
|
||||
await this.guildMembers.create(guild.id, memberUser);
|
||||
|
||||
owner.guilds.push(guild.id as any);
|
||||
await owner.save();
|
||||
|
||||
await this.guildMembers.create(guild, memberUser, guild.roles[0] as any);
|
||||
return guild;
|
||||
}
|
||||
|
||||
@ -87,11 +91,9 @@ export class Mock {
|
||||
avatarURL: 'a',
|
||||
bot: false,
|
||||
badges: [],
|
||||
friendIds: [],
|
||||
friendRequestIds: [],
|
||||
email: `${generateSnowflake()}@gmail.com`,
|
||||
verified: true,
|
||||
guilds: guildIds,
|
||||
guildIds,
|
||||
status: 'OFFLINE',
|
||||
username: `mock-user-${generateSnowflake()}`,
|
||||
} as any);
|
||||
@ -109,41 +111,21 @@ export class Mock {
|
||||
badges: [],
|
||||
friendIds: [],
|
||||
friendRequestIds: [],
|
||||
email: `${generateSnowflake()}@gmail.com`, // FIXME
|
||||
guilds: guildIds,
|
||||
email: `${generateSnowflake()}@gmail.com`,
|
||||
guildIds,
|
||||
status: 'ONLINE',
|
||||
username: `mock-bot-${generateSnowflake()}`,
|
||||
} as any) as SelfUserDocument;
|
||||
}
|
||||
|
||||
public static async guildMember(user: UserDocument, guild: GuildDocument): Promise<GuildMemberDocument> {
|
||||
return await this.guildMembers.create(guild, user);
|
||||
public static guildMember(user: SelfUserDocument, guild: GuildDocument): Promise<GuildMemberDocument> {
|
||||
return this.guildMembers.create(guild.id, user);
|
||||
}
|
||||
|
||||
public static async channel(options?: Partial<Lean.Channel>): Promise<ChannelDocument> {
|
||||
const channel = await this.channels.create(options);
|
||||
|
||||
if (options?.guildId) {
|
||||
const guild = await Guild.findById(options.guildId);
|
||||
guild.channels.push(channel);
|
||||
await guild.save();
|
||||
}
|
||||
return channel;
|
||||
public static channel(options?: Partial<Entity.Channel>): Promise<ChannelDocument> {
|
||||
return this.channels.create(options);
|
||||
}
|
||||
|
||||
public static async role(guild: GuildDocument, permissions?: number): Promise<RoleDocument> {
|
||||
const role = await Role.create({
|
||||
_id: generateSnowflake(),
|
||||
guildId: guild.id,
|
||||
hoisted: false,
|
||||
mentionable: true,
|
||||
name: 'Mock Role',
|
||||
permissions: permissions ?? PermissionTypes.defaultPermissions,
|
||||
});
|
||||
guild.roles.push(role.id as any);
|
||||
await guild.save();
|
||||
|
||||
return role;
|
||||
public static role(guild: GuildDocument, permissions?: number): Promise<RoleDocument> {
|
||||
return this.roles.create(guild.id, { permissions });
|
||||
}
|
||||
|
||||
public static async everyoneRole(guildId: string, permissions = PermissionTypes.defaultPermissions) {
|
||||
@ -157,17 +139,14 @@ export class Mock {
|
||||
});
|
||||
}
|
||||
|
||||
public static async invite(guildId: string, options?: InviteTypes.Options) {
|
||||
return await Invite.create({
|
||||
_id: generateSnowflake(),
|
||||
inviterId: generateSnowflake(),
|
||||
public static invite(guildId: string, options?: InviteTypes.Options) {
|
||||
return this.invites.create({
|
||||
options,
|
||||
guildId,
|
||||
uses: 0,
|
||||
});
|
||||
}
|
||||
|
||||
public static async clearRolePerms(guild: Lean.Guild) {
|
||||
public static async clearRolePerms(guild: Entity.Guild) {
|
||||
await Role.updateOne(
|
||||
{ _id: guild.roles?.[0].id },
|
||||
{ permissions: 0 },
|
||||
@ -179,9 +158,9 @@ export class Mock {
|
||||
await role.save();
|
||||
}
|
||||
|
||||
public static async giveEveryoneAdmin(guild: Lean.Guild) {
|
||||
public static async giveEveryoneAdmin(guild: Entity.Guild) {
|
||||
await Role.updateOne(
|
||||
{ _id: guild.roles[0].id },
|
||||
{ guildId: guild.id },
|
||||
{ permissions: PermissionTypes.General.ADMINISTRATOR },
|
||||
);
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ export function longArray(length: number) {
|
||||
}
|
||||
export function mongooseError(error: any): string | boolean {
|
||||
if (error) {
|
||||
const token = Object.keys(error.errors)[0];
|
||||
const key = Object.keys(error.errors)[0];
|
||||
return error?.errors[key].message;
|
||||
}
|
||||
return true;
|
||||
|
@ -1,3 +1,4 @@
|
||||
import 'mocha';
|
||||
import { config } from 'dotenv';
|
||||
import { execSync } from 'child_process';
|
||||
config({ path: 'test/.env' });
|
||||
@ -26,10 +27,11 @@ use(should);
|
||||
execSync(`kill -9 $(lsof -i :${process.env.PORT} | tail -n 1 | cut -d ' ' -f5)`);
|
||||
} catch {}
|
||||
|
||||
// disabled due to impracticality
|
||||
// await import('./integration/routes/auth-routes.tests');
|
||||
await import('./integration/routes/invites-routes.tests');
|
||||
await import('./integration/routes/guilds-routes.tests');
|
||||
await import('./integration/routes/channel-routes.tests');
|
||||
// await import('./integration/routes/invites-routes.tests');
|
||||
// await import('./integration/routes/guilds-routes.tests');
|
||||
// await import('./integration/routes/channel-routes.tests');
|
||||
|
||||
await import('./integration/ws/channel-create.tests');
|
||||
await import('./integration/ws/guild-member-add.tests');
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { expect } from 'chai';
|
||||
import { WSCooldowns } from '../../../src/api/websocket/modules/ws-cooldowns';
|
||||
import { WSCooldowns } from '../../../src/ws/modules/ws-cooldowns';
|
||||
import { generateInviteCode } from '../../../src/data/models/invite';
|
||||
|
||||
describe('ws-cooldowns', () => {
|
||||
|
1
types/ws.d.ts
vendored
1
types/ws.d.ts
vendored
@ -351,6 +351,7 @@ declare namespace WS {
|
||||
* Some properties (e.g. id) cannot be updated.
|
||||
*
|
||||
* **Tip**: Only provide what properties are being updated. */
|
||||
// TODO: replace with Partial?
|
||||
export namespace PartialEntity {
|
||||
export type Application = Partial<Entity.App>;
|
||||
export type Channel = Partial<Entity.Channel>;
|
||||
|
Loading…
x
Reference in New Issue
Block a user