Fix User Tests
This commit is contained in:
parent
b3bf3f15b7
commit
d9d65cbd98
@ -14,7 +14,7 @@ connect(process.env.MONGO_URI, {
|
||||
serverSelectionTimeoutMS: 0,
|
||||
}, (error) => (error)
|
||||
? Log.error(error.message, 'db')
|
||||
: Log.info('Connected to database.')
|
||||
: Log.info(`Connected to database.`)
|
||||
);
|
||||
|
||||
Deps.get<REST>(REST);
|
||||
|
@ -7,7 +7,6 @@ import { Verification } from '../../email/verification';
|
||||
import { EmailFunctions } from '../../email/email-functions';
|
||||
import { APIError } from '../modules/api-error';
|
||||
import patterns from '../../types/patterns';
|
||||
import { updateUser, validateUser } from '../modules/middleware';
|
||||
|
||||
export const router = Router();
|
||||
|
||||
@ -77,13 +76,6 @@ router.get('/verify', async (req, res) => {
|
||||
res.status(200).json({ message, token } as REST.From.Get['/auth/verify']);
|
||||
});
|
||||
|
||||
router.get('/email/verify-email', updateUser, validateUser, async (req, res) => {
|
||||
const user = res.locals.user as SelfUserDocument;
|
||||
await sendEmail.verifyEmail(user.email, user);
|
||||
|
||||
res.json({ message: 'Email sent' } as REST.From.Get['/auth/email/verify-email']);
|
||||
});
|
||||
|
||||
router.get('/email/forgot-password', async (req, res) => {
|
||||
const email = req.query.email?.toString();
|
||||
if (!email)
|
||||
|
@ -1,5 +1,7 @@
|
||||
import { Socket } from 'socket.io';
|
||||
import Users from '../../data/users';
|
||||
import { EmailFunctions } from '../../email/email-functions';
|
||||
import { WS } from '../../types/ws';
|
||||
import Deps from '../../utils/deps';
|
||||
import { WSGuard } from '../modules/ws-guard';
|
||||
import { WebSocket } from '../websocket';
|
||||
@ -11,24 +13,30 @@ export default class implements WSEvent<'USER_UPDATE'> {
|
||||
constructor(
|
||||
private users = Deps.get<Users>(Users),
|
||||
private guard = Deps.get<WSGuard>(WSGuard),
|
||||
private sendEmail = Deps.get<EmailFunctions>(EmailFunctions),
|
||||
) {}
|
||||
|
||||
public async invoke(ws: WebSocket, client: Socket, { token, username, avatarURL, ignored, email }: WS.Params.UserUpdate) {
|
||||
const { id: userId } = await this.guard.decodeKey(token);
|
||||
const user = await this.users.getSelf(userId);
|
||||
|
||||
const partialUser = {};
|
||||
if (email) partialUser['email'] = email;
|
||||
if (avatarURL) partialUser['avatarURL'] = avatarURL;
|
||||
if (ignored) partialUser['ignored'] = ignored;
|
||||
if (username) partialUser['username'] = username;
|
||||
const usernameChanged = username && username !== user.username;
|
||||
if (usernameChanged)
|
||||
partialUser['discriminator'] = await this.users.getDiscriminator(username);
|
||||
const partial: Partial<Entity.User> = {};
|
||||
const hasChanged = (key: string, value: any) => value && user[key] !== value;
|
||||
|
||||
Object.assign(user, partialUser);
|
||||
if (hasChanged('avatarURL', avatarURL)) partial['avatarURL'] = avatarURL;
|
||||
if (hasChanged('ignored', ignored)) partial['ignored'] = ignored;
|
||||
if (hasChanged('email', email)) {
|
||||
partial['email'] = email;
|
||||
await this.sendEmail.verifyEmail(email!, user);
|
||||
}
|
||||
if (hasChanged('username', username)) {
|
||||
partial['username'] = username;
|
||||
partial['discriminator'] = await this.users.getDiscriminator(username!);
|
||||
}
|
||||
|
||||
Object.assign(user, partial);
|
||||
await user.save();
|
||||
|
||||
client.emit('USER_UPDATE', { userId, partialUser } as WS.Args.UserUpdate);
|
||||
client.emit('USER_UPDATE', { userId, partialUser: partial } as WS.Args.UserUpdate);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
import 'chai-as-promised';
|
||||
|
||||
import UserUpdate from '../../../src/ws/ws-events/user-update';
|
||||
import { WebSocket } from '../../../src/ws/websocket';
|
||||
import io from 'socket.io-client';
|
||||
|
@ -58,17 +58,17 @@ console.log(`${space(48 * 3)}TESTS${space(54 * 2)}`.bgWhite.black);
|
||||
import('./integration/ws/user-update.tests');
|
||||
// import('./integration/ws/ws-guard.tests');
|
||||
|
||||
// import('./unit/models/app.tests');
|
||||
// import('./unit/models/channel.tests');
|
||||
// import('./unit/models/guild.tests');
|
||||
// import('./unit/models/guild-member.tests');
|
||||
// import('./unit/models/invite.tests');
|
||||
// import('./unit/models/message.tests');
|
||||
// import('./unit/models/role.tests');
|
||||
// import('./unit/models/user.tests');
|
||||
import('./unit/models/app.tests');
|
||||
import('./unit/models/channel.tests');
|
||||
import('./unit/models/guild.tests');
|
||||
import('./unit/models/guild-member.tests');
|
||||
import('./unit/models/invite.tests');
|
||||
import('./unit/models/message.tests');
|
||||
import('./unit/models/role.tests');
|
||||
import('./unit/models/user.tests');
|
||||
|
||||
// import('./unit/snowflake-entity.tests');
|
||||
// import('./unit/ws/ws-cooldowns.tests');
|
||||
import('./unit/snowflake-entity.tests');
|
||||
import('./unit/ws/ws-cooldowns.tests');
|
||||
})();
|
||||
|
||||
// needs to be here, or tests won't run
|
||||
|
@ -13,10 +13,6 @@ test(createUser, () => {
|
||||
given({ discriminator: 0 }).expect(true);
|
||||
given({ discriminator: 9999 }).expect(true);
|
||||
given({ discriminator: 10_000 }).expect('Discriminator too high');
|
||||
given({ friendIds: longArray(101) }).expect('Clout limit reached');
|
||||
given({ friendIds: [] }).expect(true);
|
||||
given({ friendRequestIds: longArray(101) }).expect('Max friend requests reached');
|
||||
given({ friendRequestIds: [] }).expect(true);
|
||||
given({ status: '' }).expect('Status is required');
|
||||
given({ status: 'A' }).expect('Invalid status');
|
||||
given({ status: 'ONLINE' }).expect(true);
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 15 KiB |
1
types/ws.d.ts
vendored
1
types/ws.d.ts
vendored
@ -205,6 +205,7 @@ declare namespace WS {
|
||||
avatarURL?: string;
|
||||
username?: string;
|
||||
ignored?: UserTypes.Self['ignored'];
|
||||
email?: string;
|
||||
token: string;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user