diff --git a/src/lib/errors/non-existing-package-error.ts b/src/lib/errors/non-existing-package-error.ts new file mode 100644 index 0000000000..c17b737cb2 --- /dev/null +++ b/src/lib/errors/non-existing-package-error.ts @@ -0,0 +1,12 @@ +import { CustomError } from './custom-error'; + +export class NonExistingPackageError extends CustomError { + private static ERROR_CODE = 404; + private static ERROR_MESSAGE = "Couldn't find the requested package"; + + constructor() { + super(NonExistingPackageError.ERROR_MESSAGE); + this.code = NonExistingPackageError.ERROR_CODE; + this.userMessage = NonExistingPackageError.ERROR_MESSAGE; + } +} diff --git a/src/lib/snyk-test/run-test.ts b/src/lib/snyk-test/run-test.ts index 6ad5552453..8b2d05158a 100644 --- a/src/lib/snyk-test/run-test.ts +++ b/src/lib/snyk-test/run-test.ts @@ -72,6 +72,7 @@ import { authHeaderWithApiTokenOrDockerJWT } from '../api-token'; import { getEcosystem } from '../ecosystems'; import { Issue } from '../ecosystems/types'; import { assembleEcosystemPayloads } from './assemble-payloads'; +import { NonExistingPackageError } from '../errors/non-existing-package-error'; const debug = debugModule('snyk:run-test'); @@ -467,6 +468,10 @@ function handleTestHttpErrorResponse(res, body) { err = AuthFailedError(userMessage, statusCode); err.innerError = body.stack; break; + case 404: + err = new NonExistingPackageError(); + err.innerError = body.stack; + break; case 405: err = new UnsupportedFeatureFlagError('reachableVulns'); err.innerError = body.stack; diff --git a/test/acceptance/cli-test/cli-test.generic.spec.ts b/test/acceptance/cli-test/cli-test.generic.spec.ts index 8fc16176cd..7ef36cb330 100644 --- a/test/acceptance/cli-test/cli-test.generic.spec.ts +++ b/test/acceptance/cli-test/cli-test.generic.spec.ts @@ -40,7 +40,7 @@ export const GenericTests: AcceptanceTests = { } catch (err) { t.equal( err.userMessage, - 'cli error message', + "Couldn't find the requested package", 'got correct err message', ); } @@ -58,7 +58,7 @@ export const GenericTests: AcceptanceTests = { } catch (err) { t.equal( err.userMessage, - 'cli error message', + "Couldn't find the requested package", 'got correct err message', ); }