Merge branch '2.2' into 2.2-mrm

This commit is contained in:
Markus Mäkelä
2017-10-30 11:06:34 +02:00
49 changed files with 1458 additions and 500 deletions

View File

@ -48,54 +48,105 @@ describe("Monitor Relationships", function() {
})
it("remove relationships from old monitor", function() {
return request.get(base_url + "/monitors/MySQL-Monitor")
.then(function(resp) {
var mon = JSON.parse(resp)
delete mon.data.relationships.servers
return request.patch(base_url + "/monitors/MySQL-Monitor", {json: mon})
})
.should.be.fulfilled
var mon = { data: {
relationships: {
servers: null
}}}
return request.patch(base_url + "/monitors/MySQL-Monitor", {json: mon})
.then(() => request.get(base_url + "/monitors/MySQL-Monitor", { json: true }))
.then((res) => {
res.data.relationships.should.not.have.keys("servers")
})
});
it("add relationships to new monitor", function() {
return request.get(base_url + "/monitors/" + monitor.data.id)
.then(function(resp) {
var mon = JSON.parse(resp)
mon.data.relationships.servers = [
{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, {json: mon})
var mon = { data: {
relationships: {
servers: {
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, {json: mon})
.then(() => request.get(base_url + "/monitors/" + monitor.data.id, { json: true }))
.then((res) => {
res.data.relationships.servers.data.should.have.lengthOf(4)
})
.should.be.fulfilled
});
it("move relationships back to old monitor", function() {
return request.get(base_url + "/monitors/" + monitor.data.id)
.then(function(resp) {
var mon = JSON.parse(resp)
delete mon.data.relationships.servers
return request.patch(base_url + "/monitors/" + monitor.data.id, {json: mon})
var mon = {data: {relationships: {servers: null}}}
return request.patch(base_url + "/monitors/" + monitor.data.id, {json: mon})
.then(() => request.get(base_url + "/monitors/" + monitor.data.id, { json: true }))
.then((res) => {
res.data.relationships.should.not.have.keys("servers")
})
.then(function() {
return request.get(base_url + "/monitors/MySQL-Monitor")
})
.then(function(resp) {
var mon = JSON.parse(resp)
mon.data.relationships.servers = [
{id: "server1", type: "servers"},
{id: "server2", type: "servers"},
{id: "server3", type: "servers"},
{id: "server4", type: "servers"},
]
mon.data.relationships.servers = {
data: [
{id: "server1", type: "servers"},
{id: "server2", type: "servers"},
{id: "server3", type: "servers"},
{id: "server4", type: "servers"},
]}
return request.patch(base_url + "/monitors/MySQL-Monitor", {json: mon})
})
.should.be.fulfilled
.then(() => request.get(base_url + "/monitors/MySQL-Monitor", { json: true }))
.then((res) => {
res.data.relationships.servers.data.should.have.lengthOf(4)
})
});
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() {

View File

@ -57,19 +57,48 @@ describe("Server Relationships", function() {
var rel_server = JSON.parse(JSON.stringify(server))
rel_server.data.relationships = rel
it("create new server", function() {
it("create new server with relationships", function() {
return request.post(base_url + "/servers/", {json: rel_server})
.should.be.fulfilled
});
it("request server", function() {
return request.get(base_url + "/servers/" + rel_server.data.id)
.should.be.fulfilled
return request.get(base_url + "/servers/" + rel_server.data.id, { json: true })
.then((res) => {
res.data.relationships.services.data.should.have.lengthOf(2)
})
});
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() {
delete rel_server.data.relationships["services"]
delete rel_server.data.relationships["monitors"]
rel_server.data.relationships["services"] = null
rel_server.data.relationships["monitors"] = null
return request.patch(base_url + "/servers/" + rel_server.data.id, {json: rel_server})
.should.be.fulfilled
});

View File

@ -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"