Fixes #301 Add remediation suggestion to 404 errors

This commit is contained in:
Nick Cipollo
2023-01-28 13:58:46 -05:00
parent a5996b3a73
commit 215101a6e6
6 changed files with 277 additions and 233 deletions

View File

@@ -29,6 +29,31 @@ describe('ErrorMessage', () => {
}) })
}) })
describe('has error with remediation', () => {
it('provides remediation with 404 without errors', () => {
const error = { status: 404, message: "message" }
const githubError = new GithubError(error)
expect(githubError.toString())
.toBe('Error 404: message\nMake sure your github token has access to the repo and has permission to author releases')
})
it('provides remediation with 404 with errors', () => {
const error = {
message: 'message',
errors: [
{
code: 'missing',
resource: 'release'
}
],
status: 404
}
const githubError = new GithubError(error)
expect(githubError.toString())
.toBe('Error 404: message\nErrors:\n- release does not exist.\nMake sure your github token has access to the repo and has permission to author releases')
})
})
it('generates message with errors', () => { it('generates message with errors', () => {
const error = { const error = {
message: 'something bad happened', message: 'something bad happened',

460
dist/index.js vendored

File diff suppressed because it is too large Load Diff

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -27,14 +27,20 @@ class GithubError {
const errors = this.githubErrors; const errors = this.githubErrors;
const status = this.status; const status = this.status;
if (errors.length > 0) { if (errors.length > 0) {
return `Error ${status}: ${message}\nErrors:\n${this.errorBulletedList(errors)}`; return `Error ${status}: ${message}\nErrors:\n${this.errorBulletedList(errors)}${this.remediation()}`;
} }
else { else {
return `Error ${status}: ${message}`; return `Error ${status}: ${message}${this.remediation()}`;
} }
} }
errorBulletedList(errors) { errorBulletedList(errors) {
return errors.map((err) => `- ${err}`).join("\n"); return errors.map((err) => `- ${err}`).join("\n");
} }
remediation() {
if (this.status == 404) {
return "\nMake sure your github token has access to the repo and has permission to author releases";
}
return "";
}
} }
exports.GithubError = GithubError; exports.GithubError = GithubError;

View File

@@ -31,14 +31,21 @@ export class GithubError {
const errors = this.githubErrors const errors = this.githubErrors
const status = this.status const status = this.status
if (errors.length > 0) { if (errors.length > 0) {
return `Error ${status}: ${message}\nErrors:\n${this.errorBulletedList(errors)}` return `Error ${status}: ${message}\nErrors:\n${this.errorBulletedList(errors)}${this.remediation()}`
} else { } else {
return `Error ${status}: ${message}` return `Error ${status}: ${message}${this.remediation()}`
} }
} }
private errorBulletedList(errors: GithubErrorDetail[]): string { private errorBulletedList(errors: GithubErrorDetail[]): string {
return errors.map((err) => `- ${err}`).join("\n") return errors.map((err) => `- ${err}`).join("\n")
} }
private remediation(): String {
if (this.status == 404) {
return "\nMake sure your github token has access to the repo and has permission to author releases"
}
return ""
}
} }