/** * Slightly modified from Shopify/quilt/jest-koa-mock: * https://github.com/Shopify/quilt/blob/master/packages/jest-koa-mocks/src/create-mock-cookies/create-mock-cookies.ts * * License: https://github.com/Shopify/quilt/blob/master/LICENSE.md */ import * as Koa from 'koa'; import * as sinon from 'sinon'; import { NowRequestCookies } from '@now/node'; export type Cookies = Koa.Context['cookies']; export interface Dictionary { [key: string]: T; } export interface MockCookies extends NowRequestCookies {} export function createMockCookies( cookies: Record = {}, secure = true ): MockCookies { const cookieEntries = Object.keys(cookies).map( key => [key, cookies[key]] as [string, string] ); const requestStore = new Map(cookieEntries); const responseStore = new Map(cookieEntries); return { set: sinon.mock((key: string, value: any) => { return responseStore.set(key, value); }), get: sinon.mock((key: string) => { return requestStore.get(key); }), requestStore, responseStore, secure, } as any; }