Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/data/context.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const { isGenerator } = require('../utils');
const DataTable = require('./table');
const DataScenarioConfig = require('./dataScenarioConfig');
const Secret = require('../secret');

module.exports = function (context) {
context.Data = function (dataTable) {
Expand Down Expand Up @@ -70,6 +71,12 @@ function replaceTitle(title, dataRow) {
// it should be printed
if (Object.prototype.toString.call(dataRow.data) === (Object()).toString()
&& dataRow.data.toString() !== (Object()).toString()) {
Object.entries(dataRow.data).forEach(entry => {
const [key, value] = entry;
if (value instanceof Secret) {
dataRow.data[key] = value.getMasked();
}
});
return `${title} | ${dataRow.data}`;
}

Expand Down
37 changes: 21 additions & 16 deletions test/unit/data/ui_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const Suite = require('mocha/lib/suite');
const makeUI = require('../../../lib/ui');
const addData = require('../../../lib/data/context');
const DataTable = require('../../../lib/data/table');
const Secret = require('../../../lib/secret');

describe('ui', () => {
let suite;
Expand All @@ -13,20 +14,23 @@ describe('ui', () => {

beforeEach(() => {
context = {};
suite = new Suite('empty');
suite = new Suite('empty', null);
makeUI(suite);
suite.emit('pre-require', context, {}, new Mocha());
addData(context);

dataTable = new DataTable(['login', 'password']);
dataTable = new DataTable(['username', 'password']);
dataTable.add(['jon', 'snow']);
dataTable.xadd(['tyrion', 'lannister']);
dataTable.add(['jaime', 'lannister']);
dataTable.add(['Username', new Secret('theSecretPassword')]);
});

describe('Data', () => {
it('can add a tag to all scenarios', () => {
dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable)
.Scenario('scenario', () => {
});

dataScenarioConfig.tag('@user');

Expand All @@ -36,23 +40,23 @@ describe('ui', () => {
});

it('can add a timout to all scenarios', () => {
dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});

dataScenarioConfig.timeout(3);

dataScenarioConfig.scenarios.forEach(scenario => expect(3).to.equal(scenario.test._timeout));
});

it('can add retries to all scenarios', () => {
dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});

dataScenarioConfig.retry(3);

dataScenarioConfig.scenarios.forEach(scenario => expect(3).to.equal(scenario.test._retries));
});

it('can expect failure for all scenarios', () => {
dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});

dataScenarioConfig.fails();

Expand All @@ -62,7 +66,7 @@ describe('ui', () => {
it('can expect a specific error for all scenarios', () => {
const err = new Error();

dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});

dataScenarioConfig.throws(err);

Expand All @@ -73,27 +77,28 @@ describe('ui', () => {
const helperName = 'myHelper';
const helper = {};

dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});

dataScenarioConfig.config(helperName, helper);

dataScenarioConfig.scenarios.forEach(scenario => expect(helper).to.equal(scenario.test.config[helperName]));
});

it("should shows object's toString() method in each scenario's name if the toString() method is overrided", () => {
const data = [
{
toString: () => 'test case title',
},
];
const dataScenarioConfig = context.Data(data).Scenario('scenario', () => {});
it("should shows object's toString() method in each scenario's name if the toString() method is overridden", () => {
const data = [{ toString: () => 'test case title' }];
const dataScenarioConfig = context.Data(data).Scenario('scenario', () => { });
expect('scenario | test case title').to.equal(dataScenarioConfig.scenarios[0].test.title);
});

it("should shows JSON.stringify() in each scenario's name if the toString() method isn't overrided", () => {
it("should shows JSON.stringify() in each scenario's name if the toString() method isn't overridden", () => {
const data = [{ name: 'John Do' }];
const dataScenarioConfig = context.Data(data).Scenario('scenario', () => {});
expect(`scenario | ${JSON.stringify(data[0])}`).to.equal(dataScenarioConfig.scenarios[0].test.title);
});

it('should shows secret value as *****', () => {
const dataScenarioConfig = context.Data(dataTable).Scenario('scenario', () => {});
expect('scenario | {"username":"Username","password":"*****"}').to.equal(dataScenarioConfig.scenarios[2].test.title);
});
});
});