MXS-1300: Combine REST API and MaxCtrl tests
The REST API tests are now located under the maxctrl directory. This allows both tests to use the same framework for testing.
This commit is contained in:
@ -1,116 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
|
||||
function set_auth(auth, value) {
|
||||
return request.get(auth + host + "/maxscale")
|
||||
.then(function(resp) {
|
||||
var d = JSON.parse(resp)
|
||||
d.data.attributes.parameters.admin_auth = value;
|
||||
return request.patch(auth + host + "/maxscale", { json: d })
|
||||
})
|
||||
.then(function() {
|
||||
return request.get(auth + host + "/maxscale")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var d = JSON.parse(resp)
|
||||
d.data.attributes.parameters.admin_auth.should.equal(value)
|
||||
})
|
||||
}
|
||||
|
||||
describe("Authentication", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
var user1 = {
|
||||
data: {
|
||||
id: "user1",
|
||||
type: "inet",
|
||||
attributes: {
|
||||
password: "pw1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var user2 = {
|
||||
data: {
|
||||
id: "user2",
|
||||
type: "inet",
|
||||
attributes: {
|
||||
password: "pw2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var auth1 = "http://" + user1.data.id + ":" + user1.data.attributes.password + "@"
|
||||
var auth2 = "http://" + user2.data.id + ":" + user2.data.attributes.password + "@"
|
||||
|
||||
it("unauthorized request without authentication", function() {
|
||||
return request.get(base_url + "/maxscale")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("authorized request without authentication", function() {
|
||||
return request.get(auth1 + host + "/maxscale")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("add user", function() {
|
||||
return request.post(base_url + "/users/inet", { json: user1 })
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request created user", function() {
|
||||
return request.get(base_url + "/users/inet/" + user1.data.id)
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("enable authentication", function() {
|
||||
return set_auth(auth1, true).should.be.fulfilled
|
||||
})
|
||||
|
||||
it("unauthorized request with authentication", function() {
|
||||
return request.get(base_url + "/maxscale").auth()
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("authorized request with authentication", function() {
|
||||
return request.get(auth1 + host + "/maxscale")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("replace user", function() {
|
||||
return request.post(auth1 + host + "/users/inet", { json: user2 })
|
||||
.then(function() {
|
||||
return request.get(auth1 + host + "/users/inet/" + user2.data.id)
|
||||
})
|
||||
.then(function() {
|
||||
return request.delete(auth1 + host + "/users/inet/" + user1.data.id)
|
||||
})
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request with wrong user", function() {
|
||||
return request.get(auth1 + host + "/maxscale")
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("request with correct user", function() {
|
||||
return request.get(auth2 + host + "/maxscale")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("disable authentication", function() {
|
||||
return set_auth(auth2, false).should.be.fulfilled
|
||||
})
|
||||
|
||||
it("unauthorized request without authentication ", function() {
|
||||
return request.get(base_url + "/maxscale/logs")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("authorized request without authentication", function() {
|
||||
return request.get(auth2 + host + "/maxscale")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,39 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
|
||||
function set_value(key, value) {
|
||||
return request.get(base_url + "/maxscale")
|
||||
.then(function(resp) {
|
||||
var d = JSON.parse(resp)
|
||||
d.data.attributes.parameters[key] = value;
|
||||
return request.patch(base_url + "/maxscale", { json: d })
|
||||
})
|
||||
.then(function() {
|
||||
return request.get(base_url + "/maxscale")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var d = JSON.parse(resp)
|
||||
d.data.attributes.parameters[key].should.equal(value)
|
||||
})
|
||||
}
|
||||
|
||||
describe("Core Parameters", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("auth_connect_timeout", function() {
|
||||
return set_value("auth_connect_timeout", 10)
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("auth_read_timeout", function() {
|
||||
return set_value("auth_read_timeout", 10)
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("auth_write_timeout", function() {
|
||||
return set_value("auth_write_timeout", 10)
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,21 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
|
||||
describe("Errors", function()
|
||||
{
|
||||
before(startMaxScale)
|
||||
|
||||
it("error on invalid PATCH request", function()
|
||||
{
|
||||
return request.patch(base_url + "/servers/server1", { json: {this_is: "a test"}})
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("error on invalid POST request", function()
|
||||
{
|
||||
return request.post(base_url + "/servers", { json: {this_is: "a test"}})
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,126 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
|
||||
describe("HTTP Headers", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("ETag changes after modification", function() {
|
||||
return request.get(base_url + "/servers/server1", {resolveWithFullResponse: true})
|
||||
.then(function(resp) {
|
||||
resp.headers.etag.should.be.equal("\"0\"")
|
||||
var srv = JSON.parse(resp.body)
|
||||
delete srv.data.relationships
|
||||
return request.patch(base_url + "/servers/server1", {json: srv})
|
||||
})
|
||||
.then(function() {
|
||||
return request.get(base_url + "/servers/server1", {resolveWithFullResponse: true})
|
||||
})
|
||||
.then(function(resp) {
|
||||
resp.headers.etag.should.be.equal("\"1\"")
|
||||
})
|
||||
});
|
||||
|
||||
it("Last-Modified changes after modification", function(done) {
|
||||
var date;
|
||||
|
||||
request.get(base_url + "/servers/server1", {resolveWithFullResponse: true})
|
||||
.then(function(resp) {
|
||||
|
||||
// Store the current modification time
|
||||
resp.headers["last-modified"].should.not.be.null
|
||||
date = resp.headers["last-modified"]
|
||||
|
||||
// Modify resource after three seconds
|
||||
setTimeout(function() {
|
||||
var srv = JSON.parse(resp.body)
|
||||
|
||||
srv.data.relationships = {
|
||||
services: {
|
||||
data: [
|
||||
{id: "RW-Split-Router", type: "services"}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
request.patch(base_url + "/servers/server1", {json: srv})
|
||||
.then(function() {
|
||||
return request.get(base_url + "/servers/server1", {resolveWithFullResponse: true})
|
||||
})
|
||||
.then(function(resp) {
|
||||
resp.headers["last-modified"].should.not.be.null
|
||||
resp.headers["last-modified"].should.not.be.equal(date)
|
||||
done()
|
||||
})
|
||||
.catch(function(e) {
|
||||
done(e)
|
||||
})
|
||||
|
||||
}, 2000)
|
||||
})
|
||||
.catch(function(e) {
|
||||
done(e)
|
||||
})
|
||||
});
|
||||
|
||||
var oldtime = new Date(new Date().getTime() - 1000000).toUTCString();
|
||||
var newtime = new Date(new Date().getTime() + 1000000).toUTCString();
|
||||
|
||||
it("request with older If-Modified-Since value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-Modified-Since": oldtime}
|
||||
}).should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request with newer If-Modified-Since value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
resolveWithFullResponse: true,
|
||||
headers: { "If-Modified-Since": newtime }
|
||||
}).should.be.rejected
|
||||
})
|
||||
|
||||
it("request with older If-Unmodified-Since value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-Unmodified-Since": oldtime}
|
||||
}).should.be.rejected
|
||||
})
|
||||
|
||||
it("request with newer If-Unmodified-Since value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-Unmodified-Since": newtime}
|
||||
}).should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request with mismatching If-Match value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-Match": "\"0\""}
|
||||
}).should.be.rejected
|
||||
})
|
||||
|
||||
it("request with matching If-Match value", function() {
|
||||
return request.get(base_url + "/servers/server1", { resolveWithFullResponse: true })
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-Match": resp.headers["etag"]}
|
||||
})
|
||||
})
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request with mismatching If-None-Match value", function() {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-None-Match": "\"0\""}
|
||||
}).should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request with matching If-None-Match value", function() {
|
||||
return request.get(base_url + "/servers/server1", { resolveWithFullResponse: true })
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/servers/server1", {
|
||||
headers: { "If-None-Match": resp.headers["etag"]}
|
||||
})
|
||||
})
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,42 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
describe("Logs", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("change logging options", function() {
|
||||
return request.get(base_url + "/maxscale/logs")
|
||||
.then(function(resp) {
|
||||
var logs = JSON.parse(resp)
|
||||
logs.data.attributes.parameters.maxlog.should.be.true
|
||||
logs.data.attributes.parameters.syslog.should.be.true
|
||||
logs.data.attributes.parameters.highprecision.should.be.false
|
||||
logs.data.attributes.parameters.maxlog = false
|
||||
logs.data.attributes.parameters.syslog = false
|
||||
logs.data.attributes.parameters.highprecision = true
|
||||
logs.data.attributes.parameters.throttling.count = 1
|
||||
logs.data.attributes.parameters.throttling.suppress_ms = 1
|
||||
logs.data.attributes.parameters.throttling.window_ms = 1
|
||||
|
||||
return request.patch(base_url + "/maxscale/logs", {json: logs})
|
||||
})
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/maxscale/logs")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var logs = JSON.parse(resp)
|
||||
logs.data.attributes.parameters.maxlog.should.be.false
|
||||
logs.data.attributes.parameters.syslog.should.be.false
|
||||
logs.data.attributes.parameters.highprecision.should.be.true
|
||||
logs.data.attributes.parameters.throttling.count.should.be.equal(1)
|
||||
logs.data.attributes.parameters.throttling.suppress_ms.should.be.equal(1)
|
||||
logs.data.attributes.parameters.throttling.window_ms.should.be.equal(1)
|
||||
})
|
||||
});
|
||||
|
||||
it("flush logs", function() {
|
||||
return request.post(base_url + "/maxscale/logs/flush")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,162 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
var monitor = {
|
||||
data: {
|
||||
id: "test-monitor",
|
||||
type: "monitors",
|
||||
attributes: {
|
||||
module: "mysqlmon"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
describe("Monitor", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("create new monitor", function() {
|
||||
return request.post(base_url + "/monitors/", {json: monitor})
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("request monitor", function() {
|
||||
return request.get(base_url + "/monitors/" + monitor.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("alter monitor", function() {
|
||||
monitor.data.attributes.parameters = {
|
||||
monitor_interval: 1000
|
||||
}
|
||||
return request.patch(base_url + "/monitors/" + monitor.data.id, {json:monitor})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("destroy created monitor", function() {
|
||||
return request.delete(base_url + "/monitors/" + monitor.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
})
|
||||
|
||||
describe("Monitor Relationships", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("create new monitor", function() {
|
||||
return request.post(base_url + "/monitors/", {json: monitor})
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
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
|
||||
});
|
||||
|
||||
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})
|
||||
})
|
||||
.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})
|
||||
})
|
||||
.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"},
|
||||
]
|
||||
return request.patch(base_url + "/monitors/MySQL-Monitor", {json: mon})
|
||||
})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("destroy created monitor", function() {
|
||||
return request.delete(base_url + "/monitors/" + monitor.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
})
|
||||
|
||||
describe("Monitor Actions", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("stop monitor", function() {
|
||||
return request.put(base_url + "/monitors/MySQL-Monitor/stop")
|
||||
.then(function() {
|
||||
return request.get(base_url + "/monitors/MySQL-Monitor")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var mon = JSON.parse(resp)
|
||||
mon.data.attributes.state.should.be.equal("Stopped")
|
||||
})
|
||||
});
|
||||
|
||||
it("start monitor", function() {
|
||||
return request.put(base_url + "/monitors/MySQL-Monitor/start")
|
||||
.then(function() {
|
||||
return request.get(base_url + "/monitors/MySQL-Monitor")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var mon = JSON.parse(resp)
|
||||
mon.data.attributes.state.should.be.equal("Running")
|
||||
})
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
})
|
||||
|
||||
|
||||
describe("Monitor Regressions", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("alter monitor should not remove servers", function() {
|
||||
var b = {
|
||||
data: {
|
||||
attributes: {
|
||||
parameters: {
|
||||
user: "test"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return request.patch(base_url + "/monitors/MySQL-Monitor", {json: b})
|
||||
.then(function() {
|
||||
return request.get(base_url + "/monitors/MySQL-Monitor")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var mon = JSON.parse(resp)
|
||||
mon.data.relationships.servers.data.should.not.be.empty
|
||||
})
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
})
|
||||
@ -1,12 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
describe("Request Options", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("pretty=true", function() {
|
||||
return request.get(base_url + "/services/?pretty=true")
|
||||
.should.eventually.satisfy(validate)
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,111 +0,0 @@
|
||||
// These tests use the server/test/maxscale_test.cnf configuration
|
||||
|
||||
require("../utils.js")()
|
||||
|
||||
describe("Resource Collections", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
var tests = [
|
||||
"/servers",
|
||||
"/sessions",
|
||||
"/services",
|
||||
"/monitors",
|
||||
"/filters",
|
||||
"/maxscale/threads",
|
||||
"/maxscale/modules",
|
||||
"/maxscale/tasks",
|
||||
"/users",
|
||||
"/users/inet",
|
||||
"/users/unix",
|
||||
]
|
||||
|
||||
tests.forEach(function(endpoint) {
|
||||
it(endpoint + ': resource found', function() {
|
||||
return request(base_url + endpoint)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it(endpoint + ': resource schema is valid', function() {
|
||||
return request(base_url + endpoint)
|
||||
.should.eventually.satisfy(validate)
|
||||
});
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
|
||||
describe("Individual Resources", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
var tests = [
|
||||
"/servers/server1",
|
||||
"/servers/server2",
|
||||
"/services/RW-Split-Router",
|
||||
"/services/RW-Split-Router/listeners",
|
||||
"/monitors/MySQL-Monitor",
|
||||
"/filters/Hint",
|
||||
"/sessions/1",
|
||||
"/maxscale/",
|
||||
"/maxscale/threads/0",
|
||||
"/maxscale/logs",
|
||||
"/maxscale/modules/readwritesplit",
|
||||
]
|
||||
|
||||
tests.forEach(function(endpoint) {
|
||||
it(endpoint + ': resource found', function() {
|
||||
return request(base_url + endpoint)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it(endpoint + ': resource schema is valid', function() {
|
||||
return request(base_url + endpoint)
|
||||
.should.eventually.satisfy(validate)
|
||||
});
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
|
||||
describe("Resource Self Links", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
var tests = [
|
||||
"/servers",
|
||||
"/sessions",
|
||||
"/services",
|
||||
"/monitors",
|
||||
"/filters",
|
||||
"/maxscale/threads",
|
||||
"/maxscale/modules",
|
||||
"/maxscale/tasks",
|
||||
"/servers/server1",
|
||||
"/servers/server2",
|
||||
"/services/RW-Split-Router",
|
||||
"/services/RW-Split-Router/listeners",
|
||||
"/monitors/MySQL-Monitor",
|
||||
"/filters/Hint",
|
||||
"/sessions/1",
|
||||
"/maxscale/",
|
||||
"/maxscale/threads/0",
|
||||
"/maxscale/logs",
|
||||
"/maxscale/modules/readwritesplit",
|
||||
]
|
||||
|
||||
tests.forEach(function(endpoint) {
|
||||
it(endpoint + ': correct self link', function() {
|
||||
var obj = null;
|
||||
return request.get(base_url + endpoint)
|
||||
.then(function(resp) {
|
||||
obj = JSON.parse(resp)
|
||||
return request.get(obj.links.self)
|
||||
})
|
||||
.then(function(resp) {
|
||||
var obj_self = JSON.parse(resp)
|
||||
obj_self.links.self.should.be.equal(obj.links.self)
|
||||
})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,130 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
var server = {
|
||||
data: {
|
||||
id: "test-server",
|
||||
type: "servers",
|
||||
attributes: {
|
||||
parameters: {
|
||||
port: 3003,
|
||||
address: "127.0.0.1",
|
||||
protocol: "MySQLBackend"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var rel = {
|
||||
services: {
|
||||
data: [
|
||||
{ id: "RW-Split-Router", type: "services" },
|
||||
{ id: "Read-Connection-Router", type: "services" },
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
describe("Server", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("create new server", function() {
|
||||
return request.post(base_url + "/servers/", {json: server })
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("request server", function() {
|
||||
return request.get(base_url + "/servers/" + server.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("update server", function() {
|
||||
server.data.attributes.parameters.weight = 10
|
||||
return request.patch(base_url + "/servers/" + server.data.id, { json: server})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("destroy server", function() {
|
||||
return request.delete(base_url + "/servers/" + server.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
|
||||
describe("Server Relationships", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
// We need a deep copy of the original server
|
||||
var rel_server = JSON.parse(JSON.stringify(server))
|
||||
rel_server.data.relationships = rel
|
||||
|
||||
it("create new server", 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
|
||||
});
|
||||
|
||||
it("remove relationships", function() {
|
||||
delete rel_server.data["relationships"]
|
||||
return request.patch(base_url + "/servers/" + rel_server.data.id, {json: rel_server})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("destroy server", function() {
|
||||
return request.delete(base_url + "/servers/" + rel_server.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
|
||||
describe("Server State", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("create new server", function() {
|
||||
return request.post(base_url + "/servers/", {json: server })
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
it("set server into maintenance", function() {
|
||||
return request.put(base_url + "/servers/" + server.data.id + "/set?state=maintenance")
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/servers/" + server.data.id)
|
||||
})
|
||||
.then(function(resp) {
|
||||
var srv = JSON.parse(resp)
|
||||
srv.data.attributes.state.should.match(/Maintenance/)
|
||||
})
|
||||
});
|
||||
|
||||
it("clear maintenance", function() {
|
||||
return request.put(base_url + "/servers/" + server.data.id + "/clear?state=maintenance")
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/servers/" + server.data.id)
|
||||
})
|
||||
.then(function(resp) {
|
||||
var srv = JSON.parse(resp)
|
||||
srv.data.attributes.state.should.not.match(/Maintenance/)
|
||||
})
|
||||
});
|
||||
|
||||
it("set invalid state value", function() {
|
||||
return request.put(base_url + "/servers/" + server.data.id + "/set?state=somethingstrange")
|
||||
.should.be.rejected
|
||||
});
|
||||
|
||||
it("clear invalid state value", function() {
|
||||
return request.put(base_url + "/servers/" + server.data.id + "/clear?state=somethingstrange")
|
||||
.should.be.rejected
|
||||
});
|
||||
|
||||
it("destroy server", function() {
|
||||
return request.delete(base_url + "/servers/" + server.data.id)
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,89 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
describe("Service", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
it("change service parameter", function() {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
svc.data.attributes.parameters.enable_root_user = true
|
||||
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
||||
})
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
svc.data.attributes.parameters.enable_root_user.should.be.true
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
it("remove service relationship", function() {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
delete svc.data.relationships
|
||||
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
||||
})
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
svc.data.relationships.should.be.empty
|
||||
})
|
||||
});
|
||||
|
||||
it("add service relationship", function() {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
svc.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 + "/services/RW-Split-Router", {json: svc})
|
||||
})
|
||||
.then(function(resp) {
|
||||
return request.get(base_url + "/services/RW-Split-Router")
|
||||
})
|
||||
.then(function(resp) {
|
||||
var svc = JSON.parse(resp)
|
||||
svc.data.relationships.servers.data[0].id.should.be.equal("server1")
|
||||
})
|
||||
});
|
||||
|
||||
it("create a listener", function() {
|
||||
var listener = {
|
||||
"links": {
|
||||
"self": "http://localhost:8989/v1/services/RW-Split-Router/listeners"
|
||||
},
|
||||
"data": {
|
||||
"attributes": {
|
||||
"parameters": {
|
||||
"port": 4012,
|
||||
"protocol": "MySQLClient",
|
||||
"authenticator": "MySQLAuth",
|
||||
"address": "127.0.0.1"
|
||||
}
|
||||
},
|
||||
"id": "RW-Split-Listener-2",
|
||||
"type": "listeners"
|
||||
}
|
||||
}
|
||||
|
||||
return request.post(base_url + "/services/RW-Split-Router/listeners", {json: listener})
|
||||
.should.be.fulfilled
|
||||
});
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
@ -1,59 +0,0 @@
|
||||
require("../utils.js")()
|
||||
|
||||
|
||||
describe("Users", function() {
|
||||
before(startMaxScale)
|
||||
|
||||
var user = {
|
||||
data: {
|
||||
id: "user1",
|
||||
type: "inet",
|
||||
attributes: {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
it("add new user without password", function() {
|
||||
return request.post(base_url + "/users/inet", { json: user })
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("add user", function() {
|
||||
user.data.attributes.password = "pw1"
|
||||
return request.post(base_url + "/users/inet", { json: user })
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("add user again", function() {
|
||||
return request.post(base_url + "/users/inet", { json: user })
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("add user again but without password", function() {
|
||||
delete user.data.attributes.password
|
||||
return request.post(base_url + "/users/inet", { json: user })
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("get created user", function() {
|
||||
return request.get(base_url + "/users/inet/user1")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("get non-existent user", function() {
|
||||
return request.get(base_url + "/users/inet/user2")
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
it("delete created user", function() {
|
||||
return request.delete(base_url + "/users/inet/user1")
|
||||
.should.be.fulfilled
|
||||
})
|
||||
|
||||
it("delete created user again", function() {
|
||||
return request.delete(base_url + "/users/inet/user1")
|
||||
.should.be.rejected
|
||||
})
|
||||
|
||||
after(stopMaxScale)
|
||||
});
|
||||
Reference in New Issue
Block a user