From cd9a84d762e7502e35cdf13e7d8fc4a8e300d517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 23 Oct 2017 13:08:11 +0300 Subject: [PATCH] Add tests for direct relationship updating The tests check that direct updates to the relationships endpoints work. --- server/core/test/rest-api/test/monitor.js | 48 +++++++++++++++++++++++ server/core/test/rest-api/test/server.js | 27 +++++++++++++ server/core/test/rest-api/test/service.js | 27 +++++++++++++ 3 files changed, 102 insertions(+) diff --git a/server/core/test/rest-api/test/monitor.js b/server/core/test/rest-api/test/monitor.js index ace99007c..e98160ba1 100644 --- a/server/core/test/rest-api/test/monitor.js +++ b/server/core/test/rest-api/test/monitor.js @@ -101,6 +101,54 @@ describe("Monitor Relationships", function() { }) }); + it("add relationships via `relationships` endpoint", function() { + var old = { data: [ + { id: "server2", type: "servers" }, + { id: "server3", type: "servers" }, + { id: "server4", type: "servers" } + ]} + var created = { data: [ + { id: "server1", type: "servers" } + ]} + + return request.patch(base_url + "/monitors/MySQL-Monitor/relationships/servers", {json: old}) + .then(() => request.patch(base_url + "/monitors/" + monitor.data.id + "/relationships/servers", {json: created})) + .then(() => request.get(base_url + "/monitors/MySQL-Monitor", { json: true })) + .then((res) => { + res.data.relationships.servers.data.should.have.lengthOf(3) + }) + .then(() => request.get(base_url + "/monitors/" + monitor.data.id , { json: true })) + .then((res) => { + res.data.relationships.servers.data.should.have.lengthOf(1) + .that.deep.includes({ id: "server1", type: "servers" }) + }) + }); + + it("bad request body with `relationships` endpoint should be rejected", function() { + return request.patch(base_url + "/monitors/" + monitor.data.id + "/relationships/servers", {json: {data: null}}) + .should.be.rejected + }) + + it("remove relationships via `relationships` endpoint", function() { + var old = { data: [ + { id: "server1", type: "servers" }, + { id: "server2", type: "servers" }, + { id: "server3", type: "servers" }, + { id: "server4", type: "servers" } + ]} + + return request.patch(base_url + "/monitors/" + monitor.data.id + "/relationships/servers", {json: {data: []}}) + .then(() => request.patch(base_url + "/monitors/MySQL-Monitor/relationships/servers", {json: old})) + .then(() => request.get(base_url + "/monitors/MySQL-Monitor", { json: true })) + .then((res) => { + res.data.relationships.servers.data.should.have.lengthOf(4) + }) + .then(() => request.get(base_url + "/monitors/" + monitor.data.id , { json: true })) + .then((res) => { + res.data.relationships.should.not.have.keys("servers") + }) + }); + it("destroy created monitor", function() { return request.delete(base_url + "/monitors/" + monitor.data.id) .should.be.fulfilled diff --git a/server/core/test/rest-api/test/server.js b/server/core/test/rest-api/test/server.js index 83fc20c11..0741e4790 100644 --- a/server/core/test/rest-api/test/server.js +++ b/server/core/test/rest-api/test/server.js @@ -69,6 +69,33 @@ describe("Server Relationships", function() { }) }); + it("add relationships with `relationships` endpoint", function() { + return request.patch(base_url + "/servers/" + rel_server.data.id + "/relationships/monitors", + { json: { data: [ { "id": "MySQL-Monitor", "type": "monitors" }]}}) + .then(() => request.get(base_url + "/servers/" + rel_server.data.id, {json: true})) + .then((res) => { + res.data.relationships.monitors.data.should.have.lengthOf(1) + .that.has.deep.include({ "id": "MySQL-Monitor", "type": "monitors" }) + }) + }); + + it("bad request body with `relationships` endpoint should be rejected", function() { + var body = {data: null} + return request.patch(base_url + "/servers/" + rel_server.data.id + "/relationships/monitors", { json: body }) + .should.be.rejected + }); + + it("remove relationships with `relationships` endpoint", function() { + var body = {data: []} + return request.patch(base_url + "/servers/" + rel_server.data.id + "/relationships/monitors", { json: body }) + .then(() => request.get(base_url + "/servers/" + rel_server.data.id, {json: true})) + .then((res) => { + // Only monitor relationship should be undefined + res.data.relationships.should.not.have.keys("monitors") + res.data.relationships.should.have.keys("services") + }) + }); + it("remove relationships", function() { rel_server.data.relationships["services"] = null rel_server.data.relationships["monitors"] = null diff --git a/server/core/test/rest-api/test/service.js b/server/core/test/rest-api/test/service.js index f74196d21..f0718cc8d 100644 --- a/server/core/test/rest-api/test/service.js +++ b/server/core/test/rest-api/test/service.js @@ -63,6 +63,33 @@ describe("Service", function() { }) }); + it("bad request body with `relationships` endpoint should be rejected", function() { + return request.patch(base_url + "/services/RW-Split-Router/relationships/servers", {json: {data: null}}) + .should.be.rejected + }) + + it("remove service relationship via `relationships` endpoint", function() { + return request.patch(base_url + "/services/RW-Split-Router/relationships/servers", { json: {data: []}}) + .then(() => request.get(base_url + "/services/RW-Split-Router", { json: true })) + .then((res) => { + res.data.relationships.should.not.have.keys("servers") + }) + }); + + it("add service relationship via `relationships` endpoint", function() { + return request.patch(base_url + "/services/RW-Split-Router/relationships/servers", + { json: { data: [ + {id: "server1", type: "servers"}, + {id: "server2", type: "servers"}, + {id: "server3", type: "servers"}, + {id: "server4", type: "servers"}, + ]}}) + .then(() => request.get(base_url + "/services/RW-Split-Router", { json: true})) + .then((res) => { + res.data.relationships.servers.data.should.have.lengthOf(4) + }) + }); + const listener = { "links": { "self": "http://localhost:8989/v1/services/RW-Split-Router/listeners"