diff --git a/src/utils/__tests__/generateHapiPath.test.js b/src/utils/__tests__/generateHapiPath.test.js new file mode 100644 index 000000000..83bed18e0 --- /dev/null +++ b/src/utils/__tests__/generateHapiPath.test.js @@ -0,0 +1,45 @@ +import generateHapiPath from '../generateHapiPath.js' + +const serverless = { + service: { + provider: { + stage: 'dev', + }, + }, +} + +describe('generateHapiPath', () => { + test('should generate url starting with a slash', () => { + const options = {} + const result = generateHapiPath('users', options, serverless) + expect(result[0]).toEqual('/') + }) + + test('should generate url with the stage prepended', () => { + const options = {} + const result = generateHapiPath('users', options, serverless) + expect(result).toEqual('/dev/users') + }) + + describe('when a prefix option is set', () => { + test('the url should add the prefix', () => { + const options = { prefix: 'some-prefix' } + const result = generateHapiPath('users', options, serverless) + expect(result).toEqual('/some-prefix/dev/users') + }) + }) + + describe('when the noPrependStageInUrl option is set', () => { + test('the url should omit the stage', () => { + const options = { noPrependStageInUrl: true } + const result = generateHapiPath('users', options, serverless) + expect(result).toEqual('/users') + }) + }) + + test('the stage from options should override stage from serverless config', () => { + const options = { stage: 'prod' } + const result = generateHapiPath('users', options, serverless) + expect(result).toEqual('/prod/users') + }) +}) diff --git a/tests/integration/uncategorized/uncategorized.test.js b/tests/integration/uncategorized/uncategorized.test.js index 85ea05541..fa2234236 100644 --- a/tests/integration/uncategorized/uncategorized.test.js +++ b/tests/integration/uncategorized/uncategorized.test.js @@ -64,3 +64,26 @@ describe('noPrependStageInUrl tests', () => { expect(json.statusCode).toEqual(404) }) }) + +describe('prefix options', () => { + // init + beforeAll(() => + setup({ + servicePath: resolve(__dirname), + args: ['--prefix', 'someprefix'], + }), + ) + + // cleanup + afterAll(() => teardown()) + + describe('when the prefix option is used', () => { + test('the prefixed path should return a payload', async () => { + const url = joinUrl(TEST_BASE_URL, '/someprefix/dev/uncategorized-1') + const response = await fetch(url) + const json = await response.json() + + expect(json).toEqual({ foo: 'bar' }) + }) + }) +})