UNPKG

@shopify/shopify-app-remix

Version:

Shopify Remix - to simplify the building of Shopify Apps with Remix

79 lines (68 loc) 1.9 kB
import { RequestType, ValidRequestOptions as ValidRequestOptionsImport, setUpValidRequest as setUpValidRequestImport, } from '@shopify/shopify-api/test-helpers'; import {ShopifyApp} from '../types'; import {API_KEY, API_SECRET_KEY, APP_URL, TEST_SHOP_NAME} from './const'; import {setUpValidSession} from './setup-valid-session'; interface ValidBaseRequestOptions { type: RequestType.Admin | RequestType.Bearer | RequestType.Public; } interface ValidExtensionRequestOptions { type: RequestType.Extension; body?: any; headers?: Record<string, string>; } type ValidRequestOptions = | ValidBaseRequestOptions | ValidExtensionRequestOptions; export async function setupValidRequest( shopify: ShopifyApp<any>, options: ValidRequestOptions, ) { const session = await setUpValidSession(shopify.sessionStorage, { isOnline: false, }); let decoratedOptions: ValidRequestOptionsImport; switch (options.type) { case RequestType.Admin: decoratedOptions = { store: TEST_SHOP_NAME, apiKey: API_KEY, apiSecretKey: API_SECRET_KEY, ...options, }; break; case RequestType.Bearer: decoratedOptions = { store: TEST_SHOP_NAME, apiKey: API_KEY, apiSecretKey: API_SECRET_KEY, ...options, }; break; case RequestType.Extension: decoratedOptions = { store: TEST_SHOP_NAME, apiSecretKey: API_SECRET_KEY, ...options, }; break; case RequestType.Public: decoratedOptions = { store: TEST_SHOP_NAME, apiSecretKey: API_SECRET_KEY, ...options, type: options.type, }; break; } const url = new URL(APP_URL); const request: Request = await setUpValidRequestImport( decoratedOptions, new Request(url), ); return {shopify, session, request}; } export {RequestType};