Skip to content

Commit

Permalink
pass version via query param (#44)
Browse files Browse the repository at this point in the history
* pass version via query param

* add changeset
  • Loading branch information
dferber90 committed Oct 28, 2022
1 parent 81bfed2 commit 578d34a
Show file tree
Hide file tree
Showing 7 changed files with 143 additions and 68 deletions.
5 changes: 5 additions & 0 deletions .changeset/clever-balloons-hunt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@vercel/edge-config': minor
---

pass version via search param
4 changes: 3 additions & 1 deletion jest/setup.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require('jest-fetch-mock').enableMocks();
require('urlpattern-polyfill');

process.env.EDGE_CONFIG = 'edge-config://token-1@edge-config.vercel.com/ecfg-1';
process.env.EDGE_CONFIG =
'https://edge-config.vercel.com/config/ecfg-1?token=token-1';
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"@babel/core": "7.19.6",
"@changesets/cli": "2.25.0",
"@edge-runtime/jest-environment": "1.1.0-beta.31",
"@edge-runtime/types": "2.0.0",
"@types/jest": "29.2.0",
"@types/node": "18.11.3",
"@vercel/style-guide": "4.0.2",
Expand All @@ -61,7 +62,8 @@
"prettier": "2.7.1",
"ts-jest": "29.0.3",
"tsup": "6.3.0",
"typescript": "4.8.4"
"typescript": "4.8.4",
"urlpattern-polyfill": "6.0.1"
},
"engines": {
"node": ">=14.6"
Expand Down
27 changes: 27 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

117 changes: 70 additions & 47 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
} from './index';

const connectionString = process.env.EDGE_CONFIG;
const baseUrl = 'https://edge-config.vercel.com/v1/config/ecfg-1';
const baseUrl = 'https://edge-config.vercel.com/config/ecfg-1';

// eslint-disable-next-line jest/require-top-level-describe
beforeEach(() => {
Expand All @@ -21,7 +21,7 @@ describe('default Edge Config', () => {
describe('test conditions', () => {
it('should have an env var called EDGE_CONFIG', () => {
expect(connectionString).toEqual(
'edge-config://token-1@edge-config.vercel.com/ecfg-1',
'https://edge-config.vercel.com/config/ecfg-1?token=token-1',
);
});
});
Expand All @@ -32,7 +32,7 @@ describe('default Edge Config', () => {
await expect(get('foo')).resolves.toEqual('bar');

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -45,9 +45,10 @@ describe('default Edge Config', () => {
await expect(get('foo')).resolves.toEqual('bar');

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{ headers: { Authorization: 'Bearer token-1' } },
);
});
});

Expand All @@ -72,9 +73,10 @@ describe('default Edge Config', () => {
await expect(get('foo')).resolves.toEqual(undefined);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{ headers: { Authorization: 'Bearer token-1' } },
);
});
});

Expand All @@ -95,9 +97,12 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
headers: { Authorization: 'Bearer token-1' },
},
);
});
});

Expand All @@ -110,9 +115,12 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
headers: { Authorization: 'Bearer token-1' },
},
);
});
});

Expand All @@ -125,9 +133,12 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
headers: { Authorization: 'Bearer token-1' },
},
);
});
});
});
Expand All @@ -140,7 +151,7 @@ describe('default Edge Config', () => {
await expect(getAll()).resolves.toEqual({ foo: 'foo1' });

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -157,7 +168,7 @@ describe('default Edge Config', () => {

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/items?key=foo&key=bar`,
`${baseUrl}/items?version=1&key=foo&key=bar`,
{ headers: { Authorization: 'Bearer token-1' } },
);
});
Expand All @@ -181,7 +192,7 @@ describe('default Edge Config', () => {

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/items?key=foo&key=bar`,
`${baseUrl}/items?version=1&key=foo&key=bar`,
{ headers: { Authorization: 'Bearer token-1' } },
);
});
Expand All @@ -196,7 +207,7 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -211,7 +222,7 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -226,10 +237,13 @@ describe('default Edge Config', () => {
await expect(has('foo')).resolves.toEqual(true);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
},
);
});
});

Expand All @@ -254,10 +268,13 @@ describe('default Edge Config', () => {
await expect(has('foo')).resolves.toEqual(false);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
},
);
});
});

Expand All @@ -278,23 +295,26 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo`, {
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${baseUrl}/item/foo?version=1`,
{
method: 'HEAD',
headers: { Authorization: 'Bearer token-1' },
},
);
});
});
});

describe('digest()', () => {
describe('/()', () => {
describe('when the request succeeds', () => {
it('should return the digest', async () => {
fetchMock.mockResponse(JSON.stringify({ digest: 'awe1' }));

await expect(digest()).resolves.toEqual('awe1');

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -309,7 +329,7 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -322,7 +342,7 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -337,7 +357,7 @@ describe('default Edge Config', () => {
);

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest`, {
expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, {
headers: { Authorization: 'Bearer token-1' },
});
});
Expand All @@ -350,8 +370,8 @@ describe('default Edge Config', () => {
describe('createEdgeConfig', () => {
describe('when running without lambda layer or via edge function', () => {
const modifiedConnectionString =
'edge-config://token-2@edge-config.vercel.com/ecfg-2';
const modifiedBaseUrl = 'https://edge-config.vercel.com/v1/config/ecfg-2';
'https://edge-config.vercel.com/config/ecfg-2?token=token-2';
const modifiedBaseUrl = 'https://edge-config.vercel.com/config/ecfg-2';
let edgeConfig: EdgeConfigClient;

beforeEach(() => {
Expand Down Expand Up @@ -379,7 +399,7 @@ describe('createEdgeConfig', () => {

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(
`${modifiedBaseUrl}/item/foo`,
`${modifiedBaseUrl}/item/foo?version=1`,
{
headers: { Authorization: 'Bearer token-2' },
},
Expand All @@ -397,7 +417,7 @@ describe('createEdgeConfig', () => {

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(
`${modifiedBaseUrl}/item/foo`,
`${modifiedBaseUrl}/item/foo?version=1`,
{
method: 'HEAD',
headers: { Authorization: 'Bearer token-2' },
Expand All @@ -415,9 +435,12 @@ describe('createEdgeConfig', () => {
await expect(edgeConfig.digest()).resolves.toEqual('awe1');

expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith(`${modifiedBaseUrl}/digest`, {
headers: { Authorization: 'Bearer token-2' },
});
expect(fetchMock).toHaveBeenCalledWith(
`${modifiedBaseUrl}/digest?version=1`,
{
headers: { Authorization: 'Bearer token-2' },
},
);
});
});
});
Expand Down
Loading

0 comments on commit 578d34a

Please sign in to comment.