blob: b08af9fdf9c6b43050290dc75a2345a72651f8e4 [file] [log] [blame]
'use strict';
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("/admin/reprocess-report", function () {
prepareServerTest(this);
const simpleReport = [{
"buildTag": "1986",
"buildTime": "2013-02-28T10:12:03",
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "Mountain Lion",
"tests": {
"test": {
"metrics": {"FrameRate": { "current": [[1, 2, 3], [4, 5, 6]] }}
},
},
}];
const simpleReportWithRevisions = [{
"buildTag": "1986",
"buildTime": "2013-02-28T10:12:03",
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "Mountain Lion",
"tests": {
"test": {
"metrics": {"FrameRate": { "current": [[1, 2, 3], [4, 5, 6]] }}
},
},
"revisions": {
"WebKit": {
"timestamp": "2017-03-01T09:38:44.826833Z",
"revision": "213214"
}
}
}];
it("should still create new repository when repository ownerships are different", () => {
let db = TestServer.database();
return addBuilderForReport(simpleReportWithRevisions[0]).then(() => {
return db.insert('repositories', {'name': 'WebKit', 'owner': 1});
}).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', simpleReportWithRevisions);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return db.selectRows('repositories', {'name': 'WebKit'});
}).then((repositories) => {
assert.strictEqual(repositories.length, 2);
const webkitRepsitoryId = repositories[0].owner == 1 ? repositories[1].id : repositories[0].id;
return db.selectRows('commits', {'revision': '213214', 'repository': webkitRepsitoryId});
}).then((result) => {
assert(result.length, 1);
});
});
it("should add build", () => {
let db = TestServer.database();
let reportId;
return addBuilderForReport(simpleReport[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', simpleReport);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return Promise.all([db.selectAll('builds'), db.selectAll('reports')]);
}).then((result) => {
const builds = result[0];
const reports = result[1];
assert.strictEqual(builds.length, 1);
assert.strictEqual(builds[0]['tag'], '1986');
assert.strictEqual(reports.length, 1);
reportId = reports[0]['id'];
assert.strictEqual(reports[0]['build_tag'], '1986');
return db.query('UPDATE reports SET report_build = NULL; DELETE FROM builds');
}).then(() => {
return db.selectAll('builds');
}).then((builds) => {
assert.strictEqual(builds.length, 0);
return TestServer.remoteAPI().getJSONWithStatus(`/admin/reprocess-report?report=${reportId}`);
}).then(() => {
return db.selectAll('builds');
}).then((builds) => {
assert.strictEqual(builds.length, 1);
assert.strictEqual(builds[0]['tag'], '1986');
});
});
it("should not duplicate the reprocessed report", () => {
let db = TestServer.database();
let originalReprot;
return addBuilderForReport(simpleReport[0]).then(() => {
return TestServer.remoteAPI().postJSON('/api/report/', simpleReport);
}).then((response) => {
assert.strictEqual(response['status'], 'OK');
return db.selectAll('reports');
}).then((reports) => {
assert.strictEqual(reports.length, 1);
originalReprot = reports[0];
return db.query('UPDATE reports SET report_build = NULL; DELETE FROM builds');
}).then(() => {
return TestServer.remoteAPI().getJSONWithStatus(`/admin/reprocess-report?report=${originalReprot['id']}`);
}).then(() => {
return db.selectAll('reports');
}).then((reports) => {
assert.strictEqual(reports.length, 1);
const newPort = reports[0];
originalReprot['committed_at'] = null;
newPort['committed_at'] = null;
assert.notStrictEqual(originalReprot['build'], newPort['build']);
originalReprot['build'] = null;
newPort['build'] = null;
assert.deepStrictEqual(originalReprot, newPort);
});
});
});