import moment from 'moment'; import { generateUser, requester } from '../../../helpers/api-integration/v3'; import { Task } from '../../../../website/server/models/task'; describe('GET /export/userdata.xml', () => { let user; before(async () => { user = await generateUser(); }); it('returns the xml for a minimum viable user', async () => { const xml = await requester(user).get('/export/userdata.xml'); const userId = user.id; const userName = user.auth.local.username; const dateTime = moment(user.auth.timestamps.created).toDate(); const taskId = (await Task.findOne({ userId }, 'id').exec())._id; expect(xml).to.equal(` ${userName} ${userName} ${userName}@example.com ${dateTime} ${dateTime} ${dateTime} false false false false 0 0 false 0 true 0 0 0 0 1 0 0 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 false false false false false false false false false false false false false false false false false false false false false false false false false false false true false false 0 0 false 0 false true false false false false true ${dateTime} armor_base_0 head_base_0 shield_base_0 armor_base_0 head_base_0 shield_base_0 true true true true true true true true true true true true true true true true true true true true true 0 0 0 0 0 0 0 0 0 0 0 0 0 ${dateTime} 1 0 0 0 false level ascending red 3 1 0 0 1 false true true true true true true true true true true true true true true false true true true true true true true true true true true true true false false false false false false 0 slim false 915533 blue 0 rosstavoTheme none flat true MM/dd/yyyy false true false false false false false false true en violet ${userName} 0 0 0 0 0 false false false false false 0 0 0 0 50 10 0 0 1 warrior 0 0 0 0 0 0 false ${user.tasksOrder.todos[0]} <_v>1 0 0 0 <_id>${userId} ${user.apiToken} ${dateTime} ${user.tags[0].id} Work ${user.tags[1].id} Exercise ${user.tags[2].id} Health + Wellness ${user.tags[3].id} School ${user.tags[4].id} Teams ${user.tags[5].id} Chores ${user.tags[6].id} Creativity gear.flat.weapon_warrior_0 marketGear gear.flat.armor_warrior_1 marketGear gear.flat.shield_warrior_1 marketGear gear.flat.head_warrior_1 marketGear potion potion armoire armoire ${userId} <_tmp>undefined false false false singleCompletion false false todo You can either complete this To Do, edit it, or remove it. 0 1 int false ${dateTime} ${dateTime} <_id>${taskId} Join Habitica (Check me off!) ${userId} ${taskId} `); }); });