@carthooks/arcubase-cli 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/arcubase-admin.mjs +4 -0
- package/bundle/arcubase.mjs +4 -0
- package/dist/runtime/env.d.ts +1 -0
- package/dist/runtime/env.d.ts.map +1 -1
- package/dist/runtime/env.js +1 -0
- package/dist/runtime/http.d.ts +1 -1
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +3 -0
- package/dist/tests/bootstrap.test.js +5 -0
- package/dist/tests/execute_validation.test.js +3 -1
- package/package.json +1 -1
- package/src/runtime/env.ts +2 -0
- package/src/runtime/http.ts +4 -1
- package/src/tests/bootstrap.test.ts +5 -0
- package/src/tests/execute_validation.test.ts +3 -1
|
@@ -94,6 +94,7 @@ function loadRuntimeEnv(scope, env = process.env) {
|
|
|
94
94
|
ARCUBASE_BASE_URL: requiredValue(env, scope, "ARCUBASE_BASE_URL"),
|
|
95
95
|
ARCUBASE_TENANT_ID: requiredValue(env, scope, "ARCUBASE_TENANT_ID"),
|
|
96
96
|
ARCUBASE_ACCESS_TOKEN: requiredValue(env, scope, "ARCUBASE_ACCESS_TOKEN"),
|
|
97
|
+
ARCUBASE_HOST: optionalValue(env, scope, "ARCUBASE_HOST"),
|
|
97
98
|
ARCUBASE_TRACE_ID: optionalValue(env, scope, "ARCUBASE_TRACE_ID"),
|
|
98
99
|
ARCUBASE_SUBJECT_TYPE: optionalValue(env, scope, "ARCUBASE_SUBJECT_TYPE"),
|
|
99
100
|
ARCUBASE_SUBJECT_ID: optionalValue(env, scope, "ARCUBASE_SUBJECT_ID"),
|
|
@@ -107,6 +108,9 @@ function buildRequestHeaders(env) {
|
|
|
107
108
|
Authorization: `Bearer ${env.ARCUBASE_ACCESS_TOKEN}`,
|
|
108
109
|
"X-Tenant-Id": env.ARCUBASE_TENANT_ID
|
|
109
110
|
};
|
|
111
|
+
if (env.ARCUBASE_HOST && env.ARCUBASE_HOST.trim() !== "") {
|
|
112
|
+
headers["X-Host"] = env.ARCUBASE_HOST;
|
|
113
|
+
}
|
|
110
114
|
if (env.ARCUBASE_TRACE_ID) {
|
|
111
115
|
headers["X-Trace-Id"] = env.ARCUBASE_TRACE_ID;
|
|
112
116
|
}
|
package/bundle/arcubase.mjs
CHANGED
|
@@ -94,6 +94,7 @@ function loadRuntimeEnv(scope, env = process.env) {
|
|
|
94
94
|
ARCUBASE_BASE_URL: requiredValue(env, scope, "ARCUBASE_BASE_URL"),
|
|
95
95
|
ARCUBASE_TENANT_ID: requiredValue(env, scope, "ARCUBASE_TENANT_ID"),
|
|
96
96
|
ARCUBASE_ACCESS_TOKEN: requiredValue(env, scope, "ARCUBASE_ACCESS_TOKEN"),
|
|
97
|
+
ARCUBASE_HOST: optionalValue(env, scope, "ARCUBASE_HOST"),
|
|
97
98
|
ARCUBASE_TRACE_ID: optionalValue(env, scope, "ARCUBASE_TRACE_ID"),
|
|
98
99
|
ARCUBASE_SUBJECT_TYPE: optionalValue(env, scope, "ARCUBASE_SUBJECT_TYPE"),
|
|
99
100
|
ARCUBASE_SUBJECT_ID: optionalValue(env, scope, "ARCUBASE_SUBJECT_ID"),
|
|
@@ -107,6 +108,9 @@ function buildRequestHeaders(env) {
|
|
|
107
108
|
Authorization: `Bearer ${env.ARCUBASE_ACCESS_TOKEN}`,
|
|
108
109
|
"X-Tenant-Id": env.ARCUBASE_TENANT_ID
|
|
109
110
|
};
|
|
111
|
+
if (env.ARCUBASE_HOST && env.ARCUBASE_HOST.trim() !== "") {
|
|
112
|
+
headers["X-Host"] = env.ARCUBASE_HOST;
|
|
113
|
+
}
|
|
110
114
|
if (env.ARCUBASE_TRACE_ID) {
|
|
111
115
|
headers["X-Trace-Id"] = env.ARCUBASE_TRACE_ID;
|
|
112
116
|
}
|
package/dist/runtime/env.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/runtime/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9C,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAqClD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,GAAE,QAAsB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/runtime/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9C,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAqClD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,GAAE,QAAsB,GAAG,UAAU,CAW9F"}
|
package/dist/runtime/env.js
CHANGED
|
@@ -34,6 +34,7 @@ export function loadRuntimeEnv(scope, env = process.env) {
|
|
|
34
34
|
ARCUBASE_BASE_URL: requiredValue(env, scope, 'ARCUBASE_BASE_URL'),
|
|
35
35
|
ARCUBASE_TENANT_ID: requiredValue(env, scope, 'ARCUBASE_TENANT_ID'),
|
|
36
36
|
ARCUBASE_ACCESS_TOKEN: requiredValue(env, scope, 'ARCUBASE_ACCESS_TOKEN'),
|
|
37
|
+
ARCUBASE_HOST: optionalValue(env, scope, 'ARCUBASE_HOST'),
|
|
37
38
|
ARCUBASE_TRACE_ID: optionalValue(env, scope, 'ARCUBASE_TRACE_ID'),
|
|
38
39
|
ARCUBASE_SUBJECT_TYPE: optionalValue(env, scope, 'ARCUBASE_SUBJECT_TYPE'),
|
|
39
40
|
ARCUBASE_SUBJECT_ID: optionalValue(env, scope, 'ARCUBASE_SUBJECT_ID'),
|
package/dist/runtime/http.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RuntimeEnv } from './env.js';
|
|
2
|
-
export declare function buildRequestHeaders(env: Pick<RuntimeEnv, 'ARCUBASE_ACCESS_TOKEN' | 'ARCUBASE_TENANT_ID' | 'ARCUBASE_TRACE_ID'>): Record<string, string>;
|
|
2
|
+
export declare function buildRequestHeaders(env: Pick<RuntimeEnv, 'ARCUBASE_ACCESS_TOKEN' | 'ARCUBASE_TENANT_ID' | 'ARCUBASE_HOST' | 'ARCUBASE_TRACE_ID'>): Record<string, string>;
|
|
3
3
|
export declare function normalizeExternalEndpoint(endpoint: string): string;
|
|
4
4
|
export declare function buildURL(baseURL: string, endpoint: string, query?: Record<string, any>): string;
|
|
5
5
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,uBAAuB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,uBAAuB,GAAG,oBAAoB,GAAG,eAAe,GAAG,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYzK;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASlE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAS/F"}
|
package/dist/runtime/http.js
CHANGED
|
@@ -3,6 +3,9 @@ export function buildRequestHeaders(env) {
|
|
|
3
3
|
Authorization: `Bearer ${env.ARCUBASE_ACCESS_TOKEN}`,
|
|
4
4
|
'X-Tenant-Id': env.ARCUBASE_TENANT_ID
|
|
5
5
|
};
|
|
6
|
+
if (env.ARCUBASE_HOST && env.ARCUBASE_HOST.trim() !== '') {
|
|
7
|
+
headers['X-Host'] = env.ARCUBASE_HOST;
|
|
8
|
+
}
|
|
6
9
|
if (env.ARCUBASE_TRACE_ID) {
|
|
7
10
|
headers['X-Trace-Id'] = env.ARCUBASE_TRACE_ID;
|
|
8
11
|
}
|
|
@@ -15,6 +15,7 @@ test('loadRuntimeEnv returns normalized runtime env', () => {
|
|
|
15
15
|
ARCUBASE_BASE_URL: 'http://example.com',
|
|
16
16
|
ARCUBASE_TENANT_ID: 'tenant-1',
|
|
17
17
|
ARCUBASE_ACCESS_TOKEN: 'token-1',
|
|
18
|
+
ARCUBASE_HOST: undefined,
|
|
18
19
|
ARCUBASE_TRACE_ID: 'trace-1',
|
|
19
20
|
ARCUBASE_SUBJECT_TYPE: undefined,
|
|
20
21
|
ARCUBASE_SUBJECT_ID: undefined,
|
|
@@ -26,6 +27,7 @@ test('loadRuntimeEnv accepts admin-prefixed runtime env', () => {
|
|
|
26
27
|
ARCUBASE_ADMIN_BASE_URL: ' https://admin.example.com ',
|
|
27
28
|
ARCUBASE_ADMIN_TENANT_ID: ' tenant-admin ',
|
|
28
29
|
ARCUBASE_ADMIN_ACCESS_TOKEN: ' token-admin ',
|
|
30
|
+
ARCUBASE_ADMIN_HOST: ' tenant-admin.arcubase.co ',
|
|
29
31
|
ARCUBASE_ADMIN_SUBJECT_TYPE: ' system_admin ',
|
|
30
32
|
ARCUBASE_ADMIN_SUBJECT_ID: ' user-admin ',
|
|
31
33
|
});
|
|
@@ -33,6 +35,7 @@ test('loadRuntimeEnv accepts admin-prefixed runtime env', () => {
|
|
|
33
35
|
ARCUBASE_BASE_URL: 'https://admin.example.com',
|
|
34
36
|
ARCUBASE_TENANT_ID: 'tenant-admin',
|
|
35
37
|
ARCUBASE_ACCESS_TOKEN: 'token-admin',
|
|
38
|
+
ARCUBASE_HOST: 'tenant-admin.arcubase.co',
|
|
36
39
|
ARCUBASE_TRACE_ID: undefined,
|
|
37
40
|
ARCUBASE_SUBJECT_TYPE: 'system_admin',
|
|
38
41
|
ARCUBASE_SUBJECT_ID: 'user-admin',
|
|
@@ -44,6 +47,7 @@ test('loadRuntimeEnv accepts user-prefixed runtime env', () => {
|
|
|
44
47
|
ARCUBASE_USER_BASE_URL: ' https://user.example.com ',
|
|
45
48
|
ARCUBASE_USER_TENANT_ID: ' tenant-user ',
|
|
46
49
|
ARCUBASE_USER_ACCESS_TOKEN: ' token-user ',
|
|
50
|
+
ARCUBASE_USER_HOST: ' tenant-user.arcubase.co ',
|
|
47
51
|
ARCUBASE_USER_SUBJECT_TYPE: ' service_account ',
|
|
48
52
|
ARCUBASE_USER_SUBJECT_ID: ' sa-user ',
|
|
49
53
|
});
|
|
@@ -51,6 +55,7 @@ test('loadRuntimeEnv accepts user-prefixed runtime env', () => {
|
|
|
51
55
|
ARCUBASE_BASE_URL: 'https://user.example.com',
|
|
52
56
|
ARCUBASE_TENANT_ID: 'tenant-user',
|
|
53
57
|
ARCUBASE_ACCESS_TOKEN: 'token-user',
|
|
58
|
+
ARCUBASE_HOST: 'tenant-user.arcubase.co',
|
|
54
59
|
ARCUBASE_TRACE_ID: undefined,
|
|
55
60
|
ARCUBASE_SUBJECT_TYPE: 'service_account',
|
|
56
61
|
ARCUBASE_SUBJECT_ID: 'sa-user',
|
|
@@ -9,6 +9,7 @@ const env = {
|
|
|
9
9
|
ARCUBASE_BASE_URL: 'https://arcubase.example.com',
|
|
10
10
|
ARCUBASE_TENANT_ID: 'tenant_1',
|
|
11
11
|
ARCUBASE_ACCESS_TOKEN: 'tok',
|
|
12
|
+
ARCUBASE_HOST: 'tenant_1.arcubase.co',
|
|
12
13
|
ARCUBASE_TRACE_ID: '',
|
|
13
14
|
ARCUBASE_SUBJECT_TYPE: '',
|
|
14
15
|
ARCUBASE_SUBJECT_ID: '',
|
|
@@ -35,10 +36,11 @@ test('admin save entity rejects invalid body file', async () => {
|
|
|
35
36
|
});
|
|
36
37
|
test('admin create entity executes with valid body file', async () => {
|
|
37
38
|
const bodyFile = tempJSONFile({ name: '订单', parent: 0 });
|
|
38
|
-
const out = await executeCLI('admin', ['app', 'create-entity', '--id', 'app_1', '--body-file', bodyFile], env, async (url, init) => new Response(JSON.stringify({ ok: true, url, method: init?.method }), { status: 200 }));
|
|
39
|
+
const out = await executeCLI('admin', ['app', 'create-entity', '--id', 'app_1', '--body-file', bodyFile], env, async (url, init) => new Response(JSON.stringify({ ok: true, url, method: init?.method, host: init?.headers?.['X-Host'] }), { status: 200 }));
|
|
39
40
|
assert.equal(out.kind, 'result');
|
|
40
41
|
assert.equal(out.status, 200);
|
|
41
42
|
assert.equal(out.data.url, 'https://arcubase.example.com/apps/app_1/entities');
|
|
43
|
+
assert.equal(out.data.host, 'tenant_1.arcubase.co');
|
|
42
44
|
});
|
|
43
45
|
test('admin api-prefixed command executes against external root path', async () => {
|
|
44
46
|
const out = await executeCLI('admin', ['app-entity-share', 'get-app-entity-shares', '--app-id', 'app_1'], env, async (url, init) => new Response(JSON.stringify({ ok: true, url, method: init?.method }), { status: 200 }));
|
package/package.json
CHANGED
package/src/runtime/env.ts
CHANGED
|
@@ -2,6 +2,7 @@ export type RuntimeEnv = {
|
|
|
2
2
|
ARCUBASE_BASE_URL: string
|
|
3
3
|
ARCUBASE_TENANT_ID: string
|
|
4
4
|
ARCUBASE_ACCESS_TOKEN: string
|
|
5
|
+
ARCUBASE_HOST?: string
|
|
5
6
|
ARCUBASE_TRACE_ID?: string
|
|
6
7
|
ARCUBASE_SUBJECT_TYPE?: string
|
|
7
8
|
ARCUBASE_SUBJECT_ID?: string
|
|
@@ -52,6 +53,7 @@ export function loadRuntimeEnv(scope: RuntimeEnvScope, env: EnvInput = process.e
|
|
|
52
53
|
ARCUBASE_BASE_URL: requiredValue(env, scope, 'ARCUBASE_BASE_URL'),
|
|
53
54
|
ARCUBASE_TENANT_ID: requiredValue(env, scope, 'ARCUBASE_TENANT_ID'),
|
|
54
55
|
ARCUBASE_ACCESS_TOKEN: requiredValue(env, scope, 'ARCUBASE_ACCESS_TOKEN'),
|
|
56
|
+
ARCUBASE_HOST: optionalValue(env, scope, 'ARCUBASE_HOST'),
|
|
55
57
|
ARCUBASE_TRACE_ID: optionalValue(env, scope, 'ARCUBASE_TRACE_ID'),
|
|
56
58
|
ARCUBASE_SUBJECT_TYPE: optionalValue(env, scope, 'ARCUBASE_SUBJECT_TYPE'),
|
|
57
59
|
ARCUBASE_SUBJECT_ID: optionalValue(env, scope, 'ARCUBASE_SUBJECT_ID'),
|
package/src/runtime/http.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { RuntimeEnv } from './env.js'
|
|
2
2
|
|
|
3
|
-
export function buildRequestHeaders(env: Pick<RuntimeEnv, 'ARCUBASE_ACCESS_TOKEN' | 'ARCUBASE_TENANT_ID' | 'ARCUBASE_TRACE_ID'>): Record<string, string> {
|
|
3
|
+
export function buildRequestHeaders(env: Pick<RuntimeEnv, 'ARCUBASE_ACCESS_TOKEN' | 'ARCUBASE_TENANT_ID' | 'ARCUBASE_HOST' | 'ARCUBASE_TRACE_ID'>): Record<string, string> {
|
|
4
4
|
const headers: Record<string, string> = {
|
|
5
5
|
Authorization: `Bearer ${env.ARCUBASE_ACCESS_TOKEN}`,
|
|
6
6
|
'X-Tenant-Id': env.ARCUBASE_TENANT_ID
|
|
7
7
|
}
|
|
8
|
+
if (env.ARCUBASE_HOST && env.ARCUBASE_HOST.trim() !== '') {
|
|
9
|
+
headers['X-Host'] = env.ARCUBASE_HOST
|
|
10
|
+
}
|
|
8
11
|
if (env.ARCUBASE_TRACE_ID) {
|
|
9
12
|
headers['X-Trace-Id'] = env.ARCUBASE_TRACE_ID
|
|
10
13
|
}
|
|
@@ -19,6 +19,7 @@ test('loadRuntimeEnv returns normalized runtime env', () => {
|
|
|
19
19
|
ARCUBASE_BASE_URL: 'http://example.com',
|
|
20
20
|
ARCUBASE_TENANT_ID: 'tenant-1',
|
|
21
21
|
ARCUBASE_ACCESS_TOKEN: 'token-1',
|
|
22
|
+
ARCUBASE_HOST: undefined,
|
|
22
23
|
ARCUBASE_TRACE_ID: 'trace-1',
|
|
23
24
|
ARCUBASE_SUBJECT_TYPE: undefined,
|
|
24
25
|
ARCUBASE_SUBJECT_ID: undefined,
|
|
@@ -31,6 +32,7 @@ test('loadRuntimeEnv accepts admin-prefixed runtime env', () => {
|
|
|
31
32
|
ARCUBASE_ADMIN_BASE_URL: ' https://admin.example.com ',
|
|
32
33
|
ARCUBASE_ADMIN_TENANT_ID: ' tenant-admin ',
|
|
33
34
|
ARCUBASE_ADMIN_ACCESS_TOKEN: ' token-admin ',
|
|
35
|
+
ARCUBASE_ADMIN_HOST: ' tenant-admin.arcubase.co ',
|
|
34
36
|
ARCUBASE_ADMIN_SUBJECT_TYPE: ' system_admin ',
|
|
35
37
|
ARCUBASE_ADMIN_SUBJECT_ID: ' user-admin ',
|
|
36
38
|
})
|
|
@@ -39,6 +41,7 @@ test('loadRuntimeEnv accepts admin-prefixed runtime env', () => {
|
|
|
39
41
|
ARCUBASE_BASE_URL: 'https://admin.example.com',
|
|
40
42
|
ARCUBASE_TENANT_ID: 'tenant-admin',
|
|
41
43
|
ARCUBASE_ACCESS_TOKEN: 'token-admin',
|
|
44
|
+
ARCUBASE_HOST: 'tenant-admin.arcubase.co',
|
|
42
45
|
ARCUBASE_TRACE_ID: undefined,
|
|
43
46
|
ARCUBASE_SUBJECT_TYPE: 'system_admin',
|
|
44
47
|
ARCUBASE_SUBJECT_ID: 'user-admin',
|
|
@@ -51,6 +54,7 @@ test('loadRuntimeEnv accepts user-prefixed runtime env', () => {
|
|
|
51
54
|
ARCUBASE_USER_BASE_URL: ' https://user.example.com ',
|
|
52
55
|
ARCUBASE_USER_TENANT_ID: ' tenant-user ',
|
|
53
56
|
ARCUBASE_USER_ACCESS_TOKEN: ' token-user ',
|
|
57
|
+
ARCUBASE_USER_HOST: ' tenant-user.arcubase.co ',
|
|
54
58
|
ARCUBASE_USER_SUBJECT_TYPE: ' service_account ',
|
|
55
59
|
ARCUBASE_USER_SUBJECT_ID: ' sa-user ',
|
|
56
60
|
})
|
|
@@ -59,6 +63,7 @@ test('loadRuntimeEnv accepts user-prefixed runtime env', () => {
|
|
|
59
63
|
ARCUBASE_BASE_URL: 'https://user.example.com',
|
|
60
64
|
ARCUBASE_TENANT_ID: 'tenant-user',
|
|
61
65
|
ARCUBASE_ACCESS_TOKEN: 'token-user',
|
|
66
|
+
ARCUBASE_HOST: 'tenant-user.arcubase.co',
|
|
62
67
|
ARCUBASE_TRACE_ID: undefined,
|
|
63
68
|
ARCUBASE_SUBJECT_TYPE: 'service_account',
|
|
64
69
|
ARCUBASE_SUBJECT_ID: 'sa-user',
|
|
@@ -10,6 +10,7 @@ const env = {
|
|
|
10
10
|
ARCUBASE_BASE_URL: 'https://arcubase.example.com',
|
|
11
11
|
ARCUBASE_TENANT_ID: 'tenant_1',
|
|
12
12
|
ARCUBASE_ACCESS_TOKEN: 'tok',
|
|
13
|
+
ARCUBASE_HOST: 'tenant_1.arcubase.co',
|
|
13
14
|
ARCUBASE_TRACE_ID: '',
|
|
14
15
|
ARCUBASE_SUBJECT_TYPE: '',
|
|
15
16
|
ARCUBASE_SUBJECT_ID: '',
|
|
@@ -43,11 +44,12 @@ test('admin create entity executes with valid body file', async () => {
|
|
|
43
44
|
'admin',
|
|
44
45
|
['app', 'create-entity', '--id', 'app_1', '--body-file', bodyFile],
|
|
45
46
|
env as any,
|
|
46
|
-
async (url, init) => new Response(JSON.stringify({ ok: true, url, method: init?.method }), { status: 200 })
|
|
47
|
+
async (url, init) => new Response(JSON.stringify({ ok: true, url, method: init?.method, host: (init?.headers as Record<string, string>)?.['X-Host'] }), { status: 200 })
|
|
47
48
|
)
|
|
48
49
|
assert.equal(out.kind, 'result')
|
|
49
50
|
assert.equal(out.status, 200)
|
|
50
51
|
assert.equal(out.data.url, 'https://arcubase.example.com/apps/app_1/entities')
|
|
52
|
+
assert.equal(out.data.host, 'tenant_1.arcubase.co')
|
|
51
53
|
})
|
|
52
54
|
|
|
53
55
|
test('admin api-prefixed command executes against external root path', async () => {
|