diff --git a/index.js b/index.js index 001a90b3..6d32f27d 100644 --- a/index.js +++ b/index.js @@ -59,6 +59,8 @@ class Updates { } else if (platform !== 'darwin' && platform !== 'win32') { const message = `Unsupported platform: "${platform}". Supported: darwin, win32.` notFound(res, message) + } else if (version && !semver.valid(version)) { + badRequest(res, `Invalid SemVer: "${version}"`) } else if (file === 'RELEASES') { await this.handleReleases(res, account, repository) } else { @@ -203,6 +205,11 @@ const notFound = (res, message = 'Not found') => { res.end(message) } +const badRequest = (res, message) => { + res.statusCode = 400 + res.end(message) +} + const noContent = res => { res.statusCode = 204 res.end() diff --git a/test/index.js b/test/index.js index 107f9b09..87cf1327 100644 --- a/test/index.js +++ b/test/index.js @@ -181,6 +181,13 @@ test('Updates', async t => { } }) + await t.test('invalid semver', async t => { + const res = await fetch(`${address}/owner/repo/darwin/latest`) + t.equal(res.status, 400) + const body = await res.text() + t.equal(body, 'Invalid SemVer: "latest"') + }) + await t.test('exists but has no releases', async t => { for (let i = 0; i < 2; i++) { const res = await fetch(