REST Service for POPCORN - ILIAS
alex
7 hours ago 07d24fc7a08276076495d90e1e0274a141acddbd
GS-2555
2 files modified
44 ■■■■■ changed files
lib/libIlias.js 8 ●●●●● patch | view | raw | blame | history
test/testImportIliasUser.js 36 ●●●●● patch | view | raw | blame | history
lib/libIlias.js
@@ -85,14 +85,16 @@
   const udfDef = await db.getUdf()
   const udfMap = _.keyBy(udfDef, "field_name")
   // console.dir(udfMap, {depth: null, colors: true, maxArrayLength: null})
   user.udf = _.mapKeys(user.udf, function (value, key) {
   // do not mutate the caller's user object
   const user2 = _.cloneDeep(user)
   user2.udf = _.mapKeys(user.udf, function (value, key) {
      return udfMap[key].field_id
   })
   const res = await fetch(url2, {
      method: "POST",
      body: JSON.stringify(user)
      body: JSON.stringify(user2)
   })
   const text = await res.text()
   try {
test/testImportIliasUser.js
@@ -1,6 +1,6 @@
const expect = require("chai").expect
const _ = require("lodash")
const settings = require("../settings")
const libIlias = require("../lib/libIlias")
const db = require("../lib/db")
const testData = require("./data")
@@ -10,14 +10,16 @@
describe("the function importIliasUser", function () {
   let lastUserId = null
   const user = testData.user
   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 () {
      await deleteUser(lastUserId)
      if (lastUserId) await deleteUser(lastUserId).catch(console.error)
   })
   it("should import a new user to ILIAS", async function () {
@@ -33,11 +35,29 @@
      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)
   })
      // 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")
   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)
      }
   })
})