const expect = require("chai").expect const _ = require("lodash") const libIlias = require("../lib/libIlias") const db = require("../lib/db") const testData = require("./data") ///////////////////////////////////////////////////////////////////////// describe("the function importIliasUser", function () { let lastUserId = null let user = null beforeEach(async function () { // deep clone so importIliasUser can not mutate the shared fixture user = _.cloneDeep(testData.user) lastUserId = null }) afterEach(async function () { if (lastUserId) await deleteUser(lastUserId).catch(console.error) }) it("should import a new user to ILIAS", async function () { const res = await libIlias.importIliasUser(user) // console.dir(res, {depth: null}) expect(res).to.have.property("status").and.to.equal("ok") expect(res.command).to.equal("importUser") expect(res.usr_id).to.be.a("number").above(0) const {usr_id} = res lastUserId = usr_id const user2 = await db.getUserByUserId(usr_id) console.log(user2) expect(user2).to.have.property("login").and.to.equal(user.login) expect(user2).to.have.property("usr_id").and.to.equal(res.usr_id) expect(user2).to.have.property("firstname").and.to.equal(user.firstname) expect(user2).to.have.property("lastname").and.to.equal(user.lastname) expect(user2).to.have.property("email").and.to.equal(user.email) expect(user2).to.have.property("institution").and.to.equal(user.institution) }) it("should not mutate the given user object", async function () { const before = _.cloneDeep(user) const res = await libIlias.importIliasUser(user) lastUserId = res.usr_id expect(user).to.deep.equal(before) }) it("should resolve user defined field names to ids", async function () { const res = await libIlias.importIliasUser(user) lastUserId = res.usr_id const fields = await db.getUserDefinedField(lastUserId) const byName = _.keyBy(fields, "field_name") for (const [name, value] of Object.entries(user.udf)) { expect(byName).to.have.property(name) expect(byName[name].value).to.equal(value) } }) }) ///////////////////////////////////////////////////////////////////////// async function deleteUser (usr_id) { const res2 = await libIlias.deleteUser(usr_id) console.log(res2) expect(res2).to.have.property("status").and.to.equal("ok") expect(res2).to.have.property("command").and.to.equal("deleteUser") }