@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
342 lines • 22.1 kB
JavaScript
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