diff --git a/integrationTests/basic/integration.test.js b/integrationTests/basic/integration.test.js index 2c436c8..d879142 100644 --- a/integrationTests/basic/integration.test.js +++ b/integrationTests/basic/integration.test.js @@ -123,6 +123,14 @@ describe('integration', () => { .mockReturnValueOnce(secrets); } + it('prints a nice error message when secret not found', async () => { + mockInput(`secret/data/test secret ; + secret/data/test secret | NAMED_SECRET ; + secret/data/notFound kehe | NO_SIR ;`); + + expect(exportSecrets()).rejects.toEqual(Error(`Unable to retrieve result for "secret/data/notFound" because it was not found: {"errors":[]}`)); + }) + it('get simple secret', async () => { mockInput('secret/data/test secret'); diff --git a/src/secrets.js b/src/secrets.js index 91cbd40..3834f6d 100644 --- a/src/secrets.js +++ b/src/secrets.js @@ -34,9 +34,17 @@ async function getSecrets(secretRequests, client) { body = responseCache.get(requestPath); cachedResponse = true; } else { - const result = await client.get(requestPath); - body = result.body; - responseCache.set(requestPath, body); + try { + const result = await client.get(requestPath); + body = result.body; + responseCache.set(requestPath, body); + } catch (error) { + const {response} = error; + if (response.statusCode === 404) { + throw Error(`Unable to retrieve result for "${path}" because it was not found: ${response.body.trim()}`) + } + throw error + } } if (!selector.match(/.*[\.].*/)) { selector = '"' + selector + '"'