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
4 changes: 4 additions & 0 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ jobs:
working-directory: ./packages/contentstack-import-setup
run: npm run test:unit


- name: Run tests for Contentstack Bulk Publish
working-directory: ./packages/contentstack-bulk-publish
run: npm run test:unit
# - name: Fetch latest references
# run: |
# git fetch --prune
Expand Down
40 changes: 35 additions & 5 deletions .talismanrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,36 @@
fileignoreconfig:
- filename: packages/contentstack-import/src/commands/cm/stacks/import.ts
checksum: 97463e90433387396c1effeef8eed736179b85e3674398fc7ad22c936f7d8393
- filename: packages/contentstack/README.md
checksum: c09f6dc93702caff3adf689b501ec32586a16c865c1fe3a63b53ae645ca22349
version: '1.0'
- filename: packages/contentstack-import-setup/test/unit/backup-handler.test.ts
checksum: 0582d62b88834554cf12951c8690a73ef3ddbb78b82d2804d994cf4148e1ef93
- filename: pnpm-lock.yaml
checksum: c711349eb9a9cf4cdc5ca9ebadfd0701381bb3a2075833672bafa82096a68ef7
- filename: package-lock.json
checksum: f6313c67d9d9edaef7b07b8718ed5c0935487a0a7bb00eb3c0476876ee06037e
- filename: packages/contentstack-command/test/config.json
checksum: 7c15663b3a6562b99d3082ead5035932b0276e4fd53774b3f838372a19b291ef
- filename: packages/contentstack-import-setup/test/unit/modules/marketplace-apps.test.ts
checksum: c35dfe96d685fb12427de4b77c9240b34b9bee5e158ad7489acaa0d061ad562e
- filename: packages/contentstack-import-setup/test/unit/modules/global-fields.test.ts
checksum: fd49cfab6d374254c0c6eb4c7e7ee8ff4fe6c2b46e7b0d7f7437cbe665d1ce8b
- filename: packages/contentstack-import-setup/test/unit/modules/taxonomies.test.ts
checksum: 3868ff9e8833a670350590f070c6f635807f2a1f534accba677af4709fab0e4a
- filename: packages/contentstack-import-setup/test/unit/import-config-handler.test.ts
checksum: f2f2c994543c388f2eecaf8128f789eab2895f1f78d659e58ef9491972c6f9a8
- filename: packages/contentstack-import-setup/test/unit/import-setup.test.ts
checksum: 1eee4f461fa5b115894d1806a14af6f45336cbe6c0392f16078bd2877fadff67
- filename: packages/contentstack-import-setup/test/config.json
checksum: 187fd202d00e7d2c3d8b00f983ff21d8535e0fdb76cebec3f39c400258c88d05
- filename: packages/contentstack-import-setup/test/unit/login-handler.test.ts
checksum: e549f9ca3a9aae0d93b7284f7e771d55c0610725ddcb4333612df2f215e92769
- filename: packages/contentstack-import-setup/test/unit/modules/content-types.test.ts
checksum: ce8772281171927e7dee7d6a761a029c902393b808e2696624fdcf0f5b80ea5c
- filename: packages/contentstack-import-setup/test/unit/modules/assets.test.ts
checksum: 449a5e3383631a6f78d1291aa3c28c91681879289398f0a933158fba5c5d5acf
- filename: packages/contentstack-import-setup/test/unit/common-helper.test.ts
checksum: a0c98c6f0ee88a398e3f1bd80cac0a6cc0ede7eee01957cf7d6e1f199f3da643
- filename: packages/contentstack-import-setup/test/unit/modules/entries.test.ts
checksum: 17652bfc125879bb37facf8ea9f54dc4f97627ca625ec148c9d551a20196d85b
- filename: packages/contentstack-import-setup/test/unit/modules/base-setup.test.ts
checksum: 862c52e2bbd1975b963f45ce3e89c243d047858cdbe7339918395ce2fc52bf89
- filename: packages/contentstack-import-setup/test/unit/modules/extensions.test.ts
checksum: eaafdf39fc8a947aa490232bfc7da950c882bd69b5b27a0362ef2bee21f6a177
version: "1.0"
2 changes: 1 addition & 1 deletion packages/contentstack-bulk-publish/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
"scripts": {
"postpack": "rm -f oclif.manifest.json",
"prepack": "oclif manifest && oclif readme",
"test:unit": "nyc mocha --forbid-only \"test/unit/**/*.test.js\"",
"test:unit": "mocha --reporter spec --forbid-only \"test/unit/**/*.test.js\"",
"posttest": "eslint .",
"version": "oclif readme && git add README.md",
"clean": "rm -rf ./node_modules tsconfig.build.tsbuildinfo"
Expand Down
15 changes: 15 additions & 0 deletions packages/contentstack-bulk-publish/test/helpers/helper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const managementSDKClient = require('@contentstack/cli-utilities');
let config = {
source_stack: process.env.STACK_API_KEY || 'asdf',
management_token: process.env.MANAGEMENT_TOKEN || 'asdf',
}

const getStack = async (data = {}) => {
const client = await managementSDKClient(config);
return client.stack({
source_stack: data.STACK_API_KEY || config.source_stack,
management_token: data.MANAGEMENT_TOKEN || config.management_token,
});
};

module.exports = { getStack };
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,56 @@ const AssetsPublish = require('../../../../src/commands/cm/assets/publish');

config();

const environments = process.env.ENVIRONMENTS.split(',');
const locales = process.env.LOCALES.split(',');
const environments = ['env1', 'env2'];
const locales = ['en-us', 'fr-fr'];

describe('AssetsPublish', () => {
it('Should run the command when all the flags are passed', async () => {
const args = ['--environments', environments[0], '--locales', locales[0], '--alias', process.env.MANAGEMENT_ALIAS, '--yes'];
const assetPublishSpy = sinon.spy(AssetsPublish.prototype, 'run');
await AssetsPublish.run(args);
expect(assetPublishSpy.calledOnce).to.be.true;
let assetPublishSpy;

beforeEach(() => {
assetPublishSpy = sinon.spy(AssetsPublish.prototype, 'run');
});

afterEach(() => {
assetPublishSpy.restore();
});
it('should throw error when management token alias is not configured', async () => {
const args = ['--environments', environments[0], '--locales', locales[0], '--alias', 'm_alias', '--yes'];
const expectedError =
"The configured management token alias m_alias has not been added yet. Add it using 'csdx auth:tokens:add -a m_alias'";

try {
await AssetsPublish.run(args);
} catch (error) {
expect(error).to.be.an.instanceOf(Error);
expect(error.message).to.equal(expectedError);
expect(assetPublishSpy.calledOnce).to.be.true;
}
});

it('should fail when invalid environment is specified', async () => {
const args = ['--environments', 'invalid_env', '--locales', locales[0], '--alias', 'm_alias', '--yes'];
try {
await AssetsPublish.run(args);
} catch (error) {
expect(error).to.be.an.instanceOf(Error);
expect(assetPublishSpy.calledOnce).to.be.true;
}
});

it('should fail when invalid locale is specified', async () => {
const args = ['--environments', environments[0], '--locales', 'invalid_locale', '--alias', 'm_alias', '--yes'];

try {
await AssetsPublish.run(args);
} catch (error) {
expect(error).to.be.an.instanceOf(Error);
expect(assetPublishSpy.calledOnce).to.be.true;
}
});

it('Should fail when alias and stack api key flags are not passed', async () => {
const args = ['--environments', environments[0], '--locales', locales[0], '--yes'];
const assetPublishSpy = sinon.spy(AssetsPublish.prototype, 'run');
const expectedError = 'Please use `--alias` or `--stack-api-key` to proceed.';
try {
await AssetsPublish.run(args);
Expand All @@ -34,10 +69,28 @@ describe('AssetsPublish', () => {
});

it('Should run successfully when user is logged in and stack api key is passed', async () => {
const args = ['--environments', environments[0], '--locales', locales[0], '--stack-api-key', process.env.STACK_API_KEY, '--yes'];
const assetPublishSpy = sinon.spy(AssetsPublish.prototype, 'run');
await AssetsPublish.run(args);
expect(assetPublishSpy.calledOnce).to.be.true;
assetPublishSpy.restore();
const prompts = {
environments: environments[0],
locales: locales[0],
// @ts-ignore-next-line secret-detection
key: 'asdf',
};
const args = [
'--environments',
prompts.environments,
'--locales',
prompts.locales,
'--stack-api-key',
prompts.key,
'--yes',
];

try {
await AssetsPublish.run(args);
expect(assetPublishSpy.calledOnce).to.be.true;
assetPublishSpy.restore();
} catch (error) {
expect(error).to.be.an.instanceOf(Error);
}
});
});
});
Original file line number Diff line number Diff line change
@@ -1,57 +1,97 @@
const { describe, it } = require('mocha');
const { cliux } = require('@contentstack/cli-utilities');
const sinon = require('sinon');
const { config } = require('dotenv');
const { expect } = require('chai');
const sinon = require('sinon');
const { describe, it, beforeEach, afterEach } = require('mocha');
const UnpublishCommand = require('../../../../src/commands/cm/assets/unpublish');
const AddTokenCommand = require('@contentstack/cli-auth/lib/commands/auth/tokens/add').default;
const helper = require('../../../helpers/helper');
const { cliux } = require('@contentstack/cli-utilities');

const AssetsUnpublish = require('../../../../src/commands/cm/assets/unpublish');
describe('AssetsUnpublish Command', () => {
let sandbox;
let stackDetails;

const { stub } = sinon;
beforeEach(async () => {
sandbox = sinon.createSandbox();

config();
stackDetails = {
api_key: 'asdf',
environment: 'env',
delivery_token: 'asdf',
management_token: 'asdf',
alias: 'm_alias',
};
});

const environments = process.env.ENVIRONMENTS.split(',');
const locales = process.env.LOCALES.split(',');
afterEach(() => {
sandbox.restore();
});

it('executes successfully with required parameters', async () => {
const runStub = sandbox.stub(UnpublishCommand.prototype, 'run').resolves();

describe('AssetsUnpublish', () => {
it('Should run successfully when all the flags are passed', async () => {
const args = ['--environment', environments[0], '--locale', locales[0], '--alias', process.env.MANAGEMENT_ALIAS, '--delivery-token', process.env.DELIVERY_TOKEN, '--yes'];
const inquireStub = stub(cliux, 'prompt');
await AssetsUnpublish.run(args);
sinon.assert.notCalled(inquireStub);
inquireStub.restore();
const result = await UnpublishCommand.run([
'--alias',
'm_alias',
'--environment',
'env',
'--locale',
'en-us',
'--delivery-token',
'test-delivery-token',
'--yes',
]);

expect(runStub.calledOnce).to.be.true;
expect(result).to.be.undefined;
});

it('Should ask for delivery token when the flag is not passed', async () => {
const args = ['--environment', environments[0], '--locale', locales[0], '--alias', process.env.MANAGEMENT_ALIAS, '--yes'];
const inquireStub = stub(cliux, 'prompt').resolves(process.env.DELIVERY_TOKEN);
await AssetsUnpublish.run(args);
sinon.assert.calledOnce(inquireStub);
inquireStub.restore();
it('executes successfully with stack identifier', async () => {
const runStub = sandbox.stub(UnpublishCommand.prototype, 'run').resolves();

const result = await UnpublishCommand.run([
'--stack-api-key',
stackDetails.api_key,
'--environment',
'env',
'--locale',
'en-us',
'--delivery-token',
'test-delivery-token',
'--yes',
]);

expect(runStub.calledOnce).to.be.true;
expect(result).to.be.undefined;
});

it('prompts for missing delivery token', async () => {
sandbox.stub(helper, 'getStack').resolves({ ...stackDetails, delivery_token: undefined });
sandbox.stub(cliux, 'prompt').resolves('prompted-token');
sandbox.stub(AddTokenCommand.prototype, 'run').resolves();
const runStub = sandbox.stub(UnpublishCommand.prototype, 'run').resolves('Success');

const result = await UnpublishCommand.run([
'--alias',
'm_alias',
'--environment',
'env',
'--locale',
'en-us',
'--yes',
]);

expect(result).to.equal('Success');
sinon.assert.calledOnce(runStub);
});

it('Should fail when alias and stack api key flags are not passed', async () => {
const args = ['--environment', environments[0], '--locale', locales[0], '--yes'];
const inquireStub = stub(cliux, 'prompt');
const assetUnpublishSpy = sinon.spy(AssetsUnpublish.prototype, 'run');
const expectedError = 'Please use `--alias` or `--stack-api-key` to proceed.';
it('throws error for missing authentication parameters', async () => {
const runStub = sandbox.stub(UnpublishCommand.prototype, 'run');

try {
await AssetsUnpublish.run(args);
await UnpublishCommand.run(['--environment', 'env', '--locale', 'en-us', '--yes']);
} catch (error) {
expect(error).to.be.an.instanceOf(Error);
expect(error.message).to.equal(expectedError);
expect(assetUnpublishSpy.calledOnce).to.be.true;
expect(error.message).to.equal('Please use `--alias` or `--stack-api-key` to proceed.');
expect(runStub.called).to.be.false;
}
sinon.assert.notCalled(inquireStub);
inquireStub.restore();
assetUnpublishSpy.restore();
});

it('Should run successfully when user is logged in and stack api key is passed', async () => {
const args = ['--environment', environments[0], '--locale', locales[0], '--stack-api-key', process.env.STACK_API_KEY, '--delivery-token', process.env.DELIVERY_TOKEN, '--yes'];
const inquireStub = stub(cliux, 'prompt');
await AssetsUnpublish.run(args);
sinon.assert.notCalled(inquireStub);
inquireStub.restore();
});
});
});
Loading
Loading