mirror of
https://github.com/status-im/consul.git
synced 2025-01-12 23:05:28 +00:00
2838f7a2e9
* ui: Reduce discovery-chain log spam Currently the only way that the UI can know whether connect is enabled or not is whether we get 500 errors from certain endpoints. One of these endpoints we already use, so aswell as recovering from a 500 error, we also remember that connect is disabled for the rest of the page 'session' (so until the page is refreshed), and make no further http requests to the endpoint for that specific datacenter. This means that log spam is reduced to only 1 log per page refresh/dc instead of 1 log per service navigation. Longer term we'll need some way to dynamically discover whether connect is enabled per datacenter without relying on something that will add error logs to consul.
110 lines
3.7 KiB
JavaScript
110 lines
3.7 KiB
JavaScript
const not = `(n't| not)?`;
|
|
export default function(scenario, assert, lastNthRequest) {
|
|
// lastNthRequest should return a
|
|
// {
|
|
// method: '',
|
|
// requestBody: '',
|
|
// requestHeaders: ''
|
|
// }
|
|
scenario
|
|
.then('the last $method requests included from yaml\n$yaml', function(method, data) {
|
|
const requests = lastNthRequest(null, method);
|
|
const a = new Set(data);
|
|
const b = new Set(
|
|
requests.map(function(item) {
|
|
return item.url;
|
|
})
|
|
);
|
|
const diff = new Set(
|
|
[...a].filter(function(item) {
|
|
return !b.has(item);
|
|
})
|
|
);
|
|
assert.equal(diff.size, 0, `Expected requests "${[...diff].join(', ')}"`);
|
|
})
|
|
.then(`a $method request was${not} made to "$endpoint"`, function(method, negative, url) {
|
|
const isNegative = typeof negative !== 'undefined';
|
|
const requests = lastNthRequest(null, method);
|
|
const request = requests.some(function(item) {
|
|
return method === item.method && url === item.url;
|
|
});
|
|
if (isNegative) {
|
|
assert.notOk(request, `Didn't expect a ${method} request url to ${url}`);
|
|
} else {
|
|
assert.ok(request, `Expected a ${method} request url to ${url}`);
|
|
}
|
|
})
|
|
.then('a $method request was made to "$endpoint" with no body', function(method, url) {
|
|
const requests = lastNthRequest(null, method);
|
|
const request = requests.find(function(item) {
|
|
return method === item.method && url === item.url;
|
|
});
|
|
assert.equal(
|
|
request.requestBody,
|
|
null,
|
|
`Expected the request body to be null, was ${request.requestBody}`
|
|
);
|
|
})
|
|
.then('a $method request was made to "$endpoint" with the body "$body"', function(
|
|
method,
|
|
url,
|
|
body
|
|
) {
|
|
const requests = lastNthRequest(null, method);
|
|
const request = requests.find(function(item) {
|
|
return method === item.method && url === item.url;
|
|
});
|
|
assert.ok(request, `Expected a ${method} request url to ${url} with the body "${body}"`);
|
|
})
|
|
.then('a $method request was made to "$endpoint" from yaml\n$yaml', function(
|
|
method,
|
|
url,
|
|
yaml
|
|
) {
|
|
const requests = lastNthRequest(null, method);
|
|
const request = requests.find(function(item) {
|
|
return method === item.method && url === item.url;
|
|
});
|
|
let data = yaml.body || {};
|
|
const body = JSON.parse(request.requestBody);
|
|
Object.keys(data).forEach(function(key, i, arr) {
|
|
assert.deepEqual(
|
|
body[key],
|
|
data[key],
|
|
`Expected the payload to contain ${key} equaling ${JSON.stringify(
|
|
data[key]
|
|
)}, ${key} was ${JSON.stringify(body[key])}`
|
|
);
|
|
});
|
|
data = yaml.headers || {};
|
|
const headers = request.requestHeaders;
|
|
Object.keys(data).forEach(function(key, i, arr) {
|
|
assert.deepEqual(
|
|
headers[key],
|
|
data[key],
|
|
`Expected the payload to contain ${key} equaling ${JSON.stringify(
|
|
data[key]
|
|
)}, ${key} was ${JSON.stringify(headers[key])}`
|
|
);
|
|
});
|
|
})
|
|
.then('a $method request was made to "$endpoint" without properties from yaml\n$yaml', function(
|
|
method,
|
|
url,
|
|
properties
|
|
) {
|
|
const requests = lastNthRequest(null, method);
|
|
const request = requests.find(function(item) {
|
|
return method === item.method && url === item.url;
|
|
});
|
|
const body = JSON.parse(request.requestBody);
|
|
properties.forEach(function(key, i, arr) {
|
|
assert.equal(
|
|
typeof body[key],
|
|
'undefined',
|
|
`Expected payload to not have a ${key} property`
|
|
);
|
|
});
|
|
});
|
|
}
|