Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit b35d930

Browse files
committed
Fixing tests / CI
1 parent f7697f4 commit b35d930

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

.changeset/sixty-pans-kneel.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/shopify-api': patch
3+
---
4+
5+
Fixing host validation to work with unified admin shops

lib/auth/get-embedded-app-url.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export function getEmbeddedAppUrl(config: ConfigInterface) {
3737

3838
export function buildEmbeddedAppUrl(config: ConfigInterface) {
3939
return (host: string): string => {
40-
sanitizeHost(config)(host, true);
40+
sanitizeHost()(host, true);
4141
const decodedHost = decodeHost(host);
4242

4343
return `https://${decodedHost}/apps/${config.apiKey}`;

lib/utils/__tests__/shop-validator.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const VALID_HOSTS = [
2222
'my-other-host.myshopify.com/admin',
2323
'my-other-other-host.myshopify.io/admin',
2424
'admin.shopify.com/store/my-shop',
25+
'admin.spin.dev/store/my-shop',
2526
].map((testhost) => {
2627
return {testhost, base64host: Buffer.from(testhost).toString('base64')};
2728
});

lib/utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {versionCompatible, versionPriorTo} from './version-compatible';
77
export function shopifyUtils(config: ConfigInterface) {
88
return {
99
sanitizeShop: sanitizeShop(config),
10-
sanitizeHost: sanitizeHost(config),
10+
sanitizeHost: sanitizeHost(),
1111
validateHmac: validateHmac(config),
1212
versionCompatible: versionCompatible(config),
1313
versionPriorTo: versionPriorTo(config),

lib/utils/shop-validator.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,23 @@ export function sanitizeShop(config: ConfigInterface) {
2626
};
2727
}
2828

29-
export function sanitizeHost(config: ConfigInterface) {
29+
export function sanitizeHost() {
3030
return (host: string, throwOnInvalid = false): string | null => {
3131
const base64regex = /^[0-9a-zA-Z+/]+={0,2}$/;
3232

3333
let sanitizedHost = base64regex.test(host) ? host : null;
3434
if (sanitizedHost) {
35-
const url = new URL(`https://${decodeHost(sanitizedHost)}`);
36-
// allow-list of origins
37-
if (!/\.((my)?shopify\.com|myshopify\.io|spin\.dev)$/.test(url.hostname)) {
35+
const {hostname} = new URL(`https://${decodeHost(sanitizedHost)}`);
36+
37+
const originsRegex = [
38+
'myshopify\\.com',
39+
'shopify\\.com',
40+
'myshopify\\.io',
41+
'spin\\.dev',
42+
];
43+
44+
const hostRegex = new RegExp(`\\.(${originsRegex.join('|')})$`);
45+
if (!hostRegex.test(hostname)) {
3846
sanitizedHost = null;
3947
}
4048
}

0 commit comments

Comments
 (0)