| '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); |
| }); |
| }); |
| }); |