@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
348 lines • 19.9 kB
JavaScript
import { MockAjaxCall } from "../../test/mockajaxcall";
import { KnoraApiConfig } from "../knora-api-config";
import { Endpoint } from "./endpoint";
describe("Test class Endpoint", function () {
beforeEach(function () {
jasmine.Ajax.install();
});
afterEach(function () {
jasmine.Ajax.uninstall();
});
it("should perform a GET request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpGet"]().subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("GET");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform an unsuccessful GET request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpGet"]().subscribe(function (response) {
}, function (err) {
expect(err instanceof Error).toBeTruthy();
expect(err.status).toEqual(404);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotFoundResponse(JSON.stringify({ msg: "Not Found" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("GET");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform a GET request providing a path segment", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpGet"]("/mypath").subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test/mypath");
expect(request.method).toEqual("GET");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform a GET request with authentication", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint.jsonWebToken = "testtoken";
endpoint["httpGet"]().subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("GET");
expect(request.requestHeaders).toEqual({ "authorization": "Bearer testtoken", "x-requested-with": "XMLHttpRequest" });
});
it("should perform a GET request with optional header options", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpGet"](undefined, { "my-feature-toggle": "my-awesome-feature" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("GET");
expect(request.requestHeaders).toEqual({ "my-feature-toggle": "my-awesome-feature", "x-requested-with": "XMLHttpRequest" });
});
it("should perform a POST request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPost"]("", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform an unsuccessful POST request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPost"]("", { mydata: "data" }).subscribe(function (response) {
}, function (err) {
expect(err instanceof Error).toBeTruthy();
expect(err.status).toEqual(404);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotFoundResponse(JSON.stringify({ msg: "Not Found" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a POST request providing a path segment", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPost"]("/mypath", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test/mypath");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a POST request with authentication", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint.jsonWebToken = "testtoken";
endpoint["httpPost"]("", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({
"authorization": "Bearer testtoken",
"content-type": "application/json; charset=utf-8",
"x-requested-with": "XMLHttpRequest"
});
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a POST request with default JSON content-type and optional header options", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPost"](undefined, { mydata: "data" }, undefined, { "my-feature-toggle": "my-awesome-feature" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({
"content-type": "application/json; charset=utf-8",
"my-feature-toggle": "my-awesome-feature",
"x-requested-with": "XMLHttpRequest"
});
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a POST request with SPARQL content-type and additional header options", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
var gravsearchQuery = "\n PREFIX knora-api: <http://api.knora.org/ontology/knora-api/v2#>\n CONSTRUCT {\n\n ?mainRes knora-api:isMainResource true .\n\n } WHERE {\n\n ?mainRes a knora-api:Resource .\n\n ?mainRes a <http://0.0.0.0:3333/ontology/0001/anything/v2#Thing> .\n }\n\n OFFSET 0\n ";
endpoint["httpPost"](undefined, gravsearchQuery, "sparql", { "my-feature-toggle": "my-awesome-feature" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("POST");
expect(request.requestHeaders).toEqual({
"content-type": "application/sparql-query; charset=utf-8",
"my-feature-toggle": "my-awesome-feature",
"x-requested-with": "XMLHttpRequest"
});
// https://github.com/jasmine/jasmine-ajax#5-inspect-ajax-requests
// just check for the params because data() cannot handle this case
expect(request.params).toEqual(gravsearchQuery);
});
it("should perform a PUT request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPut"]("", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform an an unsuccessful PUT request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPut"]("", { mydata: "data" }).subscribe(function (response) {
}, function (err) {
expect(err instanceof Error).toBeTruthy();
expect(err.status).toEqual(404);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotFoundResponse(JSON.stringify({ msg: "Not Found" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a PUT request providing a path segment", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPut"]("/mypath", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test/mypath");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({ "content-type": "application/json; charset=utf-8", "x-requested-with": "XMLHttpRequest" });
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a PUT request with authentication", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint.jsonWebToken = "testtoken";
endpoint["httpPut"]("/mypath", { mydata: "data" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test/mypath");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"authorization": "Bearer testtoken",
"content-type": "application/json; charset=utf-8",
"x-requested-with": "XMLHttpRequest"
});
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a PUT request with default content-type and additional header options", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpPut"](undefined, { mydata: "data" }, undefined, { "my-feature-toggle": "my-awesome-feature" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"content-type": "application/json; charset=utf-8",
"my-feature-toggle": "my-awesome-feature",
"x-requested-with": "XMLHttpRequest"
});
expect(request.data()).toEqual({ mydata: "data" });
});
it("should perform a DELETE request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpDelete"]().subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("DELETE");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform an unsuccessful DELETE request", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpDelete"]().subscribe(function (response) {
}, function (err) {
expect(err instanceof Error).toBeTruthy();
expect(err.status).toEqual(404);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockNotFoundResponse(JSON.stringify({ msg: "Not Found" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("DELETE");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform a DELETE request providing a path segment", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpDelete"]("/mypath").subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test/mypath");
expect(request.method).toEqual("DELETE");
expect(request.requestHeaders).toEqual({ "x-requested-with": "XMLHttpRequest" });
});
it("should perform a DELETE request with authentication", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint.jsonWebToken = "testtoken";
endpoint["httpDelete"]().subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("DELETE");
expect(request.requestHeaders).toEqual({ "authorization": "Bearer testtoken", "x-requested-with": "XMLHttpRequest" });
});
it("should perform a DELETE request with additional header options", function (done) {
var config = new KnoraApiConfig("http", "localhost", 3333);
var endpoint = new Endpoint(config, "/test");
endpoint["httpDelete"](undefined, { "my-feature-toggle": "my-awesome-feature" }).subscribe(function (response) {
expect(response.status).toEqual(200);
expect(response.response).toEqual({ test: "test" });
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify({ test: "test" })));
expect(request.url).toBe("http://localhost:3333/test");
expect(request.method).toEqual("DELETE");
expect(request.requestHeaders).toEqual({ "my-feature-toggle": "my-awesome-feature", "x-requested-with": "XMLHttpRequest" });
});
});
//# sourceMappingURL=endpoint.spec.js.map