@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
114 lines • 6.48 kB
JavaScript
import { MockAjaxCall } from "../../../../test/mockajaxcall";
import { KnoraApiConfig } from "../../../knora-api-config";
import { KnoraApiConnection } from "../../../knora-api-connection";
describe("Test class AuthenticationEndpoint", function () {
beforeEach(function () {
jasmine.Ajax.install();
});
afterEach(function () {
jasmine.Ajax.uninstall();
});
it("should perform a login by username", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.login("username", "user", "test").subscribe(function (response) {
expect(response.body.token).toEqual("testtoken");
expect(knoraApiConnection.v2.jsonWebToken).toEqual("testtoken");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ token: "testtoken" })));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("POST");
expect(request.data()).toEqual({ username: "user", password: "test" });
});
it("should perform a login by email", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.login("email", "root@example.com", "test").subscribe(function (response) {
expect(response.body.token).toEqual("testtoken");
expect(knoraApiConnection.v2.jsonWebToken).toEqual("testtoken");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ token: "testtoken" })));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("POST");
expect(request.data()).toEqual({ email: "root@example.com", password: "test" });
});
it("should perform a login by iri", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.login("iri", "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q", "test").subscribe(function (response) {
expect(response.body.token).toEqual("testtoken");
expect(knoraApiConnection.v2.jsonWebToken).toEqual("testtoken");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ token: "testtoken" })));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("POST");
expect(request.data()).toEqual({ iri: "http://rdfh.ch/users/9XBCrDV3SRa7kS1WwynB4Q", password: "test" });
});
it("should attempt to perform a login with invalid credentials", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.login("username", "user", "wrongpassword").subscribe(function () {
}, function (err) {
expect(err.status).toEqual(401);
expect(knoraApiConnection.v2.jsonWebToken).toEqual("");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotAuthorizedResponse(JSON.stringify({
"knora-api:error": "org.knora.webapi.BadCredentialsException: bad credentials: not valid",
"@context": { "knora-api": "http://api.knora.org/ontology/knora-api/v2#" }
})));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("POST");
expect(request.data()).toEqual({ username: "user", password: "wrongpassword" });
});
it("should perform a logout", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.logout().subscribe(function (response) {
expect(response.body.status).toEqual(0);
expect(response.body.message).toEqual("Logout OK");
expect(knoraApiConnection.v2.jsonWebToken).toEqual("");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ message: "Logout OK", status: 0 })));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("DELETE");
});
it("should check credentials for a user that is logged in", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.checkCredentials().subscribe(function (response) {
expect(response.body.message).toEqual("credentials are OK");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ message: "credentials are OK" })));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("GET");
});
it("should check credentials for a user that is not logged in", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var knoraApiConnection = new KnoraApiConnection(config);
knoraApiConnection.v2.auth.checkCredentials().subscribe(function () {
}, function (err) {
expect(err.status).toEqual(401);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotAuthorizedResponse(JSON.stringify({
"knora-api:error": "org.knora.webapi.BadCredentialsException: bad credentials: none found",
"@context": { "knora-api": "http://api.knora.org/ontology/knora-api/v2#" }
})));
expect(request.url).toEqual("http://localhost:3333/v2/authentication");
expect(request.method).toEqual("GET");
});
});
//# sourceMappingURL=authentication-endpoint.spec.js.map