UNPKG

@dasch-swiss/dsp-js

Version:

JavaScript library that handles API requests to Knora

342 lines 22.1 kB
import { MockAjaxCall } from "../../../../test/mockajaxcall"; import { KnoraApiConfig } from "../../../knora-api-config"; import { KnoraApiConnection } from "../../../knora-api-connection"; import { UpdateUserRequest } from "../../../models/admin/update-user-request"; import { User } from "../../../models/admin/user"; describe("UsersEndpoint", function () { var config = new KnoraApiConfig("http", "localhost", 3333, undefined, undefined, true); var knoraApiConnection = new KnoraApiConnection(config); beforeEach(function () { jasmine.Ajax.install(); }); afterEach(function () { jasmine.Ajax.uninstall(); }); describe("Method getUsers", function () { it("should return all users", function (done) { knoraApiConnection.admin.usersEndpoint.getUsers().subscribe(function (response) { expect(response.body.users.length).toEqual(18); expect(response.body.users[0].familyName).toEqual("Admin-alt"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var users = require("../../../../test/data/api/admin/users/get-users-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(users))); expect(request.url).toBe("http://localhost:3333/admin/users"); expect(request.method).toEqual("GET"); }); }); describe("Method getUser", function () { it("should return a user by its iri", function (done) { knoraApiConnection.admin.usersEndpoint.getUser("iri", "http://rdfh.ch/users/root").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); expect(response.body.user.permissions.administrativePermissionsPerProject).toEqual({}); expect(response.body.user.permissions.groupsPerProject).toBeDefined(); expect(response.body.user.permissions.groupsPerProject["http://www.knora.org/ontology/knora-admin#SystemProject"]).toBeDefined(); expect(response.body.user.permissions.groupsPerProject["http://www.knora.org/ontology/knora-admin#SystemProject"].length).toEqual(1); expect(response.body.user.permissions.groupsPerProject["http://www.knora.org/ontology/knora-admin#SystemProject"][0]).toEqual("http://www.knora.org/ontology/knora-admin#SystemAdmin"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2Froot"); expect(request.method).toEqual("GET"); }); it("should return a user by its email", function (done) { knoraApiConnection.admin.usersEndpoint.getUser("email", "root@example.org").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/email/root%40example.org"); expect(request.method).toEqual("GET"); }); it("should return a user by its username", function (done) { knoraApiConnection.admin.usersEndpoint.getUser("username", "anything.Administrator").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/username/anything.Administrator"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserByIri", function () { it("should return a user by its iri", function (done) { knoraApiConnection.admin.usersEndpoint.getUserByIri("http://rdfh.ch/users/root").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2Froot"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserByEmail", function () { it("should return a user by its email", function (done) { knoraApiConnection.admin.usersEndpoint.getUserByEmail("root@example.org").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/email/root%40example.org"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserByUsername", function () { it("should return a user by its username", function (done) { knoraApiConnection.admin.usersEndpoint.getUserByUsername("anything.Administrator").subscribe(function (response) { expect(response.body.user.familyName).toEqual("Administrator"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/username/anything.Administrator"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserGroupMemberships", function () { it("should get a user's group memberships", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.getUserGroupMemberships(userIri).subscribe(function (response) { expect(response.body.groups.length).toEqual(1); expect(response.body.groups[0].id).toEqual("http://rdfh.ch/groups/00FF/images-reviewer"); done(); }); var request = jasmine.Ajax.requests.mostRecent(); var groupMemberships = require("../../../../test/data/api/admin/users/get-user-group-memberships-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(groupMemberships))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/group-memberships"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserProjectMemberships", function () { it("should get a user's project memberships", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.getUserProjectMemberships(userIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var projectMemberships = require("../../../../test/data/api/admin/users/get-user-project-memberships-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(projectMemberships))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-memberships"); expect(request.method).toEqual("GET"); }); }); describe("Method getUserProjectAdminMemberships", function () { it("should get a user's project admin memberships", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.getUserProjectAdminMemberships(userIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var projectMemberships = require("../../../../test/data/api/admin/users/get-user-project-memberships-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(projectMemberships))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-admin-memberships"); expect(request.method).toEqual("GET"); }); }); describe("Method createUser", function () { it("should create a user", function (done) { var newUser = new User(); newUser.username = "donald.duck"; newUser.email = "donald.duck@example.org"; newUser.givenName = "Donald"; newUser.familyName = "Duck"; newUser.password = "test"; newUser.status = true; newUser.lang = "en"; newUser.systemAdmin = false; knoraApiConnection.admin.usersEndpoint.createUser(newUser).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users"); expect(request.method).toEqual("POST"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); var payload = require("../../../../test/data/api/admin/users/create-user-request.json"); expect(request.data()).toEqual(payload); }); }); describe("Method updateUserBasicInformation", function () { it("should update user information", function (done) { var userIri = "http://rdfh.ch/users/normaluser"; var userInfo = new UpdateUserRequest(); userInfo.username = "donald.big.duck"; userInfo.email = "donald.big.duck@example.org"; userInfo.givenName = "Big Donald"; userInfo.familyName = "Duckmann"; userInfo.lang = "de"; knoraApiConnection.admin.usersEndpoint.updateUserBasicInformation(userIri, userInfo).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2Fnormaluser/BasicUserInformation"); expect(request.method).toEqual("PUT"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); var payload = require("../../../../test/data/api/admin/users/update-user-request.json"); expect(request.data()).toEqual(payload); }); }); describe("Method updateUserStatus", function () { it("should update a user's status", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.updateUserStatus(userIri, false).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/Status"); expect(request.method).toEqual("PUT"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); var payload = require("../../../../test/data/api/admin/users/update-user-status-request.json"); expect(request.data()).toEqual(payload); }); }); describe("Method updateUserPassword", function () { it("should update a user's password", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.updateUserPassword(userIri, "test", "test123456").subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/Password"); expect(request.method).toEqual("PUT"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); var payload = require("../../../../test/data/api/admin/users/update-user-password-request.json"); expect(request.data()).toEqual(payload); }); }); describe("Method addUserToGroupMembership", function () { it("should add a user to a group", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.addUserToGroupMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/group-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("POST"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); }); }); describe("Method removeUserFromGroupMembership", function () { it("should remove a user from a group", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.removeUserFromGroupMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/group-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("DELETE"); }); }); describe("Method addUserToProjectMembership", function () { it("should add a user to a project", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.addUserToProjectMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("POST"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); }); }); describe("Method removeUserFromProjectMembership", function () { it("should remove a user from a project", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.removeUserFromProjectMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("DELETE"); }); }); describe("Method addUserToProjectAdminMembership", function () { it("should add a user to a project admin membership", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.addUserToProjectAdminMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-admin-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("POST"); expect(request.requestHeaders).toEqual({ "Content-Type": "application/json; charset=utf-8" }); }); }); describe("Method removeUserFromProjectAdminMembership", function () { it("should remove a user from a project admin membership", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; var groupIri = "http://rdfh.ch/groups/0001/thing-searcher"; knoraApiConnection.admin.usersEndpoint.removeUserFromProjectAdminMembership(userIri, groupIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/project-admin-memberships/http%3A%2F%2Frdfh.ch%2Fgroups%2F0001%2Fthing-searcher"); expect(request.method).toEqual("DELETE"); }); }); describe("Method updateUserSystemAdminMembership", function () { it("should update a user's project admin membership", function (done) { knoraApiConnection.admin.usersEndpoint.updateUserSystemAdminMembership("http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q", true).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q/SystemAdmin"); expect(request.method).toEqual("PUT"); var payload = require("../../../../test/data/api/admin/users/update-user-system-admin-membership-request.json"); expect(request.data()).toEqual(payload); }); }); describe("Method deleteUser", function () { it("should delete a user", function (done) { var userIri = "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q"; knoraApiConnection.admin.usersEndpoint.deleteUser(userIri).subscribe(function () { done(); }); var request = jasmine.Ajax.requests.mostRecent(); var user = require("../../../../test/data/api/admin/users/get-user-response.json"); request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(user))); expect(request.url).toBe("http://localhost:3333/admin/users/iri/http%3A%2F%2Frdfh.ch%2Fusers%2F9XBCrDV3SRa7kS1WwynB4Q"); expect(request.method).toEqual("DELETE"); }); }); }); //# sourceMappingURL=users-endpoint.spec.js.map