mirror of
https://github.com/wassname/talk.git
synced 2026-07-04 06:44:54 +08:00
204 lines
5.9 KiB
JavaScript
204 lines
5.9 KiB
JavaScript
const migration = require('../../../migrations/1510174676_user_status');
|
|
const UserModel = require('../../../models/user');
|
|
|
|
const chai = require('chai');
|
|
chai.use(require('chai-datetime'));
|
|
const {expect} = chai;
|
|
|
|
describe('migration.1510174676_user_status', () => {
|
|
describe('active user', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'ACTIVE',
|
|
canEditName: false
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('status', 'ACTIVE');
|
|
expect(user).to.have.property('canEditName', false);
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('username');
|
|
expect(user.status.username).to.have.property('status', 'SET');
|
|
expect(user.status.username.history).to.have.length(1);
|
|
});
|
|
});
|
|
|
|
describe('social user', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'ACTIVE',
|
|
canEditName: true
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('status', 'ACTIVE');
|
|
expect(user).to.have.property('canEditName', true);
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('username');
|
|
expect(user.status.username).to.have.property('status', 'UNSET');
|
|
expect(user.status.username.history).to.have.length(1);
|
|
});
|
|
});
|
|
|
|
describe('rejected username', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'BANNED',
|
|
canEditName: true
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.equal('BANNED');
|
|
expect(user.canEditName).to.equal(true);
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('banned');
|
|
expect(user.status.banned).to.have.property('status', false);
|
|
expect(user.status.username).to.have.property('status', 'REJECTED');
|
|
expect(user.status.username.history).to.have.length(1);
|
|
});
|
|
});
|
|
|
|
describe('approved username', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'APPROVED',
|
|
canEditName: false
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.equal('APPROVED');
|
|
expect(user.canEditName).to.equal(false);
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('banned');
|
|
expect(user.status.banned).to.have.property('status', false);
|
|
expect(user.status.username).to.have.property('status', 'APPROVED');
|
|
expect(user.status.username.history).to.have.length(1);
|
|
});
|
|
});
|
|
|
|
describe('suspended user', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'ACTIVE',
|
|
suspension: {
|
|
until: new Date()
|
|
}
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('suspension');
|
|
expect(user.suspension).to.have.property('until');
|
|
expect(user.suspension.until).to.not.be.null;
|
|
|
|
const until = user.suspension.until;
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('suspension');
|
|
expect(user.status.suspension).to.have.property('until');
|
|
expect(user.status.suspension.until).to.not.be.null;
|
|
expect(user.status.suspension.until).to.be.withinTime(new Date(until.getTime() - 1000), new Date(until.getTime() + 1000));
|
|
});
|
|
});
|
|
|
|
describe('banned user', () => {
|
|
beforeEach(async () => {
|
|
await UserModel.collection.insert({
|
|
id: '123',
|
|
username: 'Kirk',
|
|
lowercaseUsername: 'kirk',
|
|
status: 'BANNED',
|
|
canEditName: false
|
|
});
|
|
});
|
|
|
|
it('completes the migration', async () => {
|
|
|
|
let user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.equal('BANNED');
|
|
|
|
// Perform the migration.
|
|
await migration.up();
|
|
|
|
user = await UserModel.collection.findOne({id: '123'});
|
|
|
|
// Check that it was correct.
|
|
expect(user).to.have.property('status');
|
|
expect(user.status).to.have.property('banned');
|
|
expect(user.status.banned).to.have.property('status', true);
|
|
});
|
|
});
|
|
});
|