Skip to content

Commit

Permalink
Merge 7fc2f05 into 6f49ad8
Browse files Browse the repository at this point in the history
  • Loading branch information
niekcandaele committed Jul 4, 2020
2 parents 6f49ad8 + 7fc2f05 commit df9a683
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 38 deletions.
49 changes: 11 additions & 38 deletions api/helpers/sdtd/validate-item-name.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
var sevenDays = require('machinepack-7daystodiewebapi');

module.exports = {


friendlyName: 'Validate item name',


description: 'checks if a given item name is valid for a server',


inputs: {

serverId: {
Expand All @@ -25,53 +18,33 @@ module.exports = {

},


exits: {
success: {
outputFriendlyName: 'Success',
outputType: 'boolean'
},


},



fn: async function (inputs, exits) {

let server = await SdtdServer.findOne(inputs.serverId);

if (_.isUndefined(server)) {
return exits.success(false);
return exits.error(new Error("Invalid server"));
}

sevenDays.listItems({
ip: server.ip,
port: server.webPort,
authName: server.authName,
authToken: server.authToken,
itemToSearch: inputs.item
}).exec({
success: (response) => {
if (!response) {
return exits.success(false)
}
let foundItem = false
try {
const itemsFound = (await sails.helpers.sdtdApi.executeConsoleCommand(server, `listitems ${inputs.itemName}`))
.result
.split('\n')
.map(itemName => itemName.trim());

response.map(itemName => {

if (itemName === inputs.itemName) {
foundItem = true
}
})

return exits.success(foundItem)
},
error: (error) => {
return exits.success(false)
}
});
const isItemValid = !!itemsFound.filter(foundItem => foundItem === inputs.itemName).length;

return exits.success(isItemValid);
} catch (e) {
exits.error(e);
}

}

Expand Down
43 changes: 43 additions & 0 deletions test/unit/helpers/sdtd/validate-item-name.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
describe('HELPER sdtd/validate-item-name', () => {

beforeEach(() => {
sails.helpers.sdtdApi.executeConsoleCommand = sandbox.stub().returns({
result: ` ammo9mmBulletBall
Listed 1 matching items.`
});
})

it('Validates an item', async () => {

const trueResult = await sails.helpers.sdtd.validateItemName(sails.testServer.id, "ammo9mmBulletBall");

expect(trueResult).to.be.an('boolean');
expect(trueResult).to.be.true;

const falseResult = await sails.helpers.sdtd.validateItemName(sails.testServer.id, "some nonexisting item");

expect(falseResult).to.be.an('boolean');
expect(falseResult).to.be.false;
});

it('Errors when no server is given', async () => {
await expect(sails.helpers.sdtd.validateItemName(null, "ammo9mmBulletBall")).to.eventually.be.rejectedWith(Error)
});

it('Errors when an unexisting server is given', async () => {
const fakeServer = {}
Object.assign(fakeServer, sails.testServer)

fakeServer.id += 5
await expect(sails.helpers.sdtd.validateItemName(fakeServer.id, "ammo9mmBulletBall")).to.eventually.be.rejectedWith(Error)
});

it('Throws when a request to the server fails', async () => {
sails.helpers.sdtdApi.executeConsoleCommand = sandbox.stub().throws(Error)
await expect(sails.helpers.sdtd.validateItemName(sails.testServer.id, "ammo9mmBulletBall")).to.eventually.be.rejectedWith(Error)
});
});




0 comments on commit df9a683

Please sign in to comment.