From d8b539c85a006a47cf61d5ffad262e2d3749f62e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 17 Jul 2018 15:10:14 +0300 Subject: [PATCH] MXS-1929: Add REST API filter test Most parts of the test still fail due to the fact that they haven't been implemented. --- server/core/test/rest-api/test/filter.js | 98 ++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 server/core/test/rest-api/test/filter.js diff --git a/server/core/test/rest-api/test/filter.js b/server/core/test/rest-api/test/filter.js new file mode 100644 index 000000000..de86864b0 --- /dev/null +++ b/server/core/test/rest-api/test/filter.js @@ -0,0 +1,98 @@ +require("../utils.js")() + +var filter = { + data: { + id: "test-filter", + type: "filters", + attributes: { + module: "qlafilter", + parameters: { + filebase: "/tmp/qla.log" + } + } + } +}; + +var rel = { + services: { + data: [ + { id: "RW-Split-Router", type: "services" } + ] + } +}; + +describe("Filter", function() { + before(startMaxScale) + + it("create new filter", function() { + return request.post(base_url + "/filters/", {json: filter }) + .should.be.fulfilled + }); + + it("request filter", function() { + return request.get(base_url + "/filters/" + filter.data.id) + .should.be.fulfilled + }); + + it("update filter", function() { + filter.data.attributes.parameters.separator = "|" + return request.patch(base_url + "/filters/" + filter.data.id, { json: filter}) + .should.be.fulfilled + }); + + it("destroy filter", function() { + return request.delete(base_url + "/filters/" + filter.data.id) + .should.be.fulfilled + }); + + after(stopMaxScale) +}); + +describe("Filter Relationships", function() { + before(startMaxScale) + + // We need a deep copy of the original filter + var rel_filter = JSON.parse(JSON.stringify(filter)) + rel_filter.data.relationships = rel + + it("create new filter with relationships", function() { + return request.post(base_url + "/filters/", {json: rel_filter}) + .should.be.fulfilled + }); + + it("request filter", function() { + return request.get(base_url + "/filters/" + rel_filter.data.id, { json: true }) + .then((res) => { + res.data.relationships.services.data.should.have.lengthOf(1) + }) + }); + + it("add relationships with `relationships` endpoint", function() { + return request.patch(base_url + "/filters/" + rel_filter.data.id + "/relationships/monitors", + { json: { data: [ { id: "Read-Connection-Router", type: "services" }]}}) + .then(() => request.get(base_url + "/filters/" + rel_filter.data.id, {json: true})) + .then((res) => { + res.data.relationships.monitors.data.should.have.lengthOf(2) + .that.has.deep.include({ id: "Read-Connection-Router", type: "services" }) + }) + }); + + it("bad request body with `relationships` endpoint should be rejected", function() { + var body = {data: null} + return request.patch(base_url + "/filters/" + rel_filter.data.id + "/relationships/monitors", { json: body }) + .should.be.rejected + }); + + it("remove relationships", function() { + rel_filter.data.relationships["services"] = null + return request.patch(base_url + "/filters/" + rel_filter.data.id, {json: rel_filter}) + .should.be.fulfilled + }); + + it("destroy filter", function() { + return request.delete(base_url + "/filters/" + rel_filter.data.id) + .should.be.fulfilled + }); + + after(stopMaxScale) +});