blob: b57a0211e687f9a3c7274c7749b6d5e1ffaada1a [file] [log] [blame]
'use strict';
require('../tools/js/v3-models.js');
const assert = require('assert');
const TestServer = require('./resources/test-server.js');
const addBuilderForReport = require('./resources/common-operations.js').addBuilderForReport;
const prepareServerTest = require('./resources/common-operations.js').prepareServerTest;
describe("/privileged-api/update-run-status", function () {
prepareServerTest(this);
const reportWithRevision = [{
"buildTag": "124",
"buildTime": "2013-02-28T15:34:51",
"revisions": {
"WebKit": {
"revision": "191622",
"timestamp": (new Date(1445945816878)).toISOString(),
},
},
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "some platform",
"tests": {
"Suite": {
"tests": {
"test1": {
"metrics": {"Time": { "current": [11] }}
}
}
},
}}];
it("should be able to mark a run as an outlier", () => {
const db = TestServer.database();
let id;
return addBuilderForReport(reportWithRevision[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', reportWithRevision);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['mean_cache'], 11);
assert.strictEqual(runRows[0]['iteration_count_cache'], 1);
assert.strictEqual(runRows[0]['marked_outlier'], false);
id = runRows[0]['id'];
return PrivilegedAPI.requestCSRFToken();
}).then(() => {
return PrivilegedAPI.sendRequest('update-run-status', {'run': id, 'markedOutlier': true, 'token': PrivilegedAPI._token});
}).then(() => {
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['mean_cache'], 11);
assert.strictEqual(runRows[0]['iteration_count_cache'], 1);
assert.strictEqual(runRows[0]['marked_outlier'], true);
});
});
it("should reject when the token is not set in cookie", () => {
const db = TestServer.database();
return addBuilderForReport(reportWithRevision[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', reportWithRevision);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['marked_outlier'], false);
return PrivilegedAPI.requestCSRFToken();
}).then(() => {
RemoteAPI.clearCookies();
return RemoteAPI.postJSONWithStatus('/privileged-api/update-run-status', {token: PrivilegedAPI._token});
}).then(() => {
assert(false, 'should never be reached');
}, (error) => {
assert.strictEqual(error, 'InvalidToken');
});
});
it("should reject when the token in the request content is bad", () => {
return addBuilderForReport(reportWithRevision[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', reportWithRevision);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return TestServer.database().selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['marked_outlier'], false);
return PrivilegedAPI.requestCSRFToken();
}).then(() => {
return RemoteAPI.postJSONWithStatus('/privileged-api/update-run-status', {token: 'bad'});
}).then(() => {
assert(false, 'should never be reached');
}, (error) => {
assert.strictEqual(error, 'InvalidToken');
});
});
it("should be able to unmark a run as an outlier", () => {
const db = TestServer.database();
return addBuilderForReport(reportWithRevision[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', reportWithRevision);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['marked_outlier'], false);
return PrivilegedAPI.sendRequest('update-run-status', {'run': runRows[0]['id'], 'markedOutlier': true});
}).then(() => {
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['marked_outlier'], true);
return PrivilegedAPI.sendRequest('update-run-status', {'run': runRows[0]['id'], 'markedOutlier': false});
}).then(() => {
return db.selectAll('test_runs');
}).then((runRows) => {
assert.strictEqual(runRows.length, 1);
assert.strictEqual(runRows[0]['marked_outlier'], false);
});
});
});