Skip to content

Commit

Permalink
Merge pull request #1029 from snyk/fix/cli-error-message-on-snyk-test
Browse files Browse the repository at this point in the history
fix: cli error message when <snyk test> command fails.
  • Loading branch information
anthogez committed Feb 27, 2020
2 parents aef50ae + dffba72 commit 9517daa
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 3 deletions.
20 changes: 20 additions & 0 deletions src/lib/errors/failed-to-get-vulns-from-unavailable-resource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { CustomError } from './custom-error';

const errorNpmMessage =
'Please check the version and package name and try running `snyk test` again.\nFor additional assistance, run `snyk help` or check out our docs \n(link to: https://support.snyk.io/hc/en-us/articles/360003851277#UUID-ba99a73f-110d-1f1d-9e7a-1bad66bf0996).';
const errorRepositoryMessage =
'Try testing this repository at https://snyk.io/test/.\nFor additional assistance, run `snyk help` or check out our docs \n(link to: https://support.snyk.io/hc/en-us/articles/360003851277#UUID-ba99a73f-110d-1f1d-9e7a-1bad66bf0996).';

export function FailedToGetVulnsFromUnavailableResource(
root: string,
statusCode: number,
): CustomError {
const isRepository = root.startsWith('http' || 'https');
const errorMsg = `We couldn't test ${root}. ${
isRepository ? errorRepositoryMessage : errorNpmMessage
}`;
const error = new CustomError(errorMsg);
error.code = statusCode;
error.userMessage = errorMsg;
return error;
}
1 change: 1 addition & 0 deletions src/lib/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export { FailedToLoadPolicyError } from './failed-to-load-policy-error';
export { PolicyNotFoundError } from './policy-not-found-error';
export { InternalServerError } from './internal-server-error';
export { FailedToGetVulnerabilitiesError } from './failed-to-get-vulnerabilities-error';
export { FailedToGetVulnsFromUnavailableResource } from './failed-to-get-vulns-from-unavailable-resource';
export { UnsupportedFeatureFlagError } from './unsupported-feature-flag-error';
export { UnsupportedPackageManagerError } from './unsupported-package-manager-error';
export { FailedToRunTestError } from './failed-to-run-test-error';
Expand Down
13 changes: 12 additions & 1 deletion src/lib/snyk-test/run-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
InternalServerError,
NoSupportedManifestsFoundError,
FailedToGetVulnerabilitiesError,
FailedToGetVulnsFromUnavailableResource,
FailedToRunTestError,
} from '../errors';
import * as snyk from '../';
Expand Down Expand Up @@ -204,9 +205,19 @@ async function runTest(
debug('Error running test', { error });
// handling denial from registry because of the feature flag
// currently done for go.mod
if (error.code === 403 && error.message.includes('Feature not allowed')) {
const isFeatureNotAllowed =
error.code === 403 && error.message.includes('Feature not allowed');

const hasFailedToGetVulnerabilities =
error.code === 404 &&
error.name.includes('FailedToGetVulnerabilitiesError');

if (isFeatureNotAllowed) {
throw NoSupportedManifestsFoundError([root]);
}
if (hasFailedToGetVulnerabilities) {
throw FailedToGetVulnsFromUnavailableResource(root, error.code);
}

throw new FailedToRunTestError(
error.userMessage ||
Expand Down
4 changes: 2 additions & 2 deletions test/acceptance/cli-test/cli-test.generic.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export const GenericTests: AcceptanceTests = {
} catch (err) {
t.equal(
err.userMessage,
'cli error message',
"We couldn't test npm-package. Please check the version and package name and try running `snyk test` again.\nFor additional assistance, run `snyk help` or check out our docs \n(link to: https://support.snyk.io/hc/en-us/articles/360003851277#UUID-ba99a73f-110d-1f1d-9e7a-1bad66bf0996).",
'got correct err message',
);
}
Expand All @@ -58,7 +58,7 @@ export const GenericTests: AcceptanceTests = {
} catch (err) {
t.equal(
err.userMessage,
'cli error message',
"We couldn't test ruby-app. Please check the version and package name and try running `snyk test` again.\nFor additional assistance, run `snyk help` or check out our docs \n(link to: https://support.snyk.io/hc/en-us/articles/360003851277#UUID-ba99a73f-110d-1f1d-9e7a-1bad66bf0996).",
'got correct err message',
);
}
Expand Down

0 comments on commit 9517daa

Please sign in to comment.