@jskit-ai/connectors-catalog 0.2.2 → 0.2.4
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/README.md +4 -4
- package/docs/ai.md +3 -3
- package/docs/airtable.md +1 -1
- package/docs/algolia.md +2 -2
- package/docs/amazon-redshift.md +2 -2
- package/docs/apollo-io.md +2 -2
- package/docs/asana.md +2 -2
- package/docs/ashby.md +1 -1
- package/docs/attention.md +2 -2
- package/docs/aws-athena.md +1 -1
- package/docs/aws-credentials.md +3 -3
- package/docs/aws-s3.md +1 -1
- package/docs/bigquery.md +2 -2
- package/docs/brevo.md +2 -2
- package/docs/calendly.md +3 -3
- package/docs/canva.md +2 -2
- package/docs/chargebee.md +2 -2
- package/docs/clay.md +2 -2
- package/docs/clickhouse.md +1 -1
- package/docs/confidence-flags.md +1 -1
- package/docs/contentful.md +1 -1
- package/docs/dbt-semantic-layer.md +2 -2
- package/docs/elevenlabs.md +2 -2
- package/docs/firebase-cloud-messaging.md +3 -3
- package/docs/firecrawl.md +4 -4
- package/docs/fireflies.md +1 -1
- package/docs/gatewayapi.md +1 -1
- package/docs/gemini-enterprise.md +1 -1
- package/docs/github-api.md +1 -1
- package/docs/gitlab-api.md +1 -1
- package/docs/gmail.md +1 -1
- package/docs/gong.md +1 -1
- package/docs/google-ads.md +3 -3
- package/docs/google-analytics.md +2 -2
- package/docs/google-docs.md +1 -1
- package/docs/google-drive.md +1 -1
- package/docs/google-maps-platform.md +2 -2
- package/docs/google-search-console.md +1 -1
- package/docs/google-sheets.md +1 -1
- package/docs/google-slides.md +2 -2
- package/docs/granola.md +2 -2
- package/docs/hex.md +2 -2
- package/docs/heygen.md +2 -2
- package/docs/inngest.md +1 -1
- package/docs/klipy.md +1 -1
- package/docs/lightspeed.md +2 -2
- package/docs/linear.md +1 -1
- package/docs/linkedin.md +2 -2
- package/docs/mailgun.md +1 -1
- package/docs/microsoft-excel.md +2 -2
- package/docs/microsoft-fabric.md +1 -1
- package/docs/microsoft-outlook.md +1 -1
- package/docs/microsoft-powerpoint.md +1 -1
- package/docs/microsoft-teams.md +1 -1
- package/docs/microsoft-word.md +1 -1
- package/docs/notion.md +1 -1
- package/docs/oura.md +3 -3
- package/docs/paddle.md +3 -3
- package/docs/pipedrive.md +2 -2
- package/docs/prestashop.md +1 -1
- package/docs/replicate.md +1 -1
- package/docs/resend.md +1 -1
- package/docs/salesforce.md +1 -1
- package/docs/sanity.md +3 -3
- package/docs/semrush.md +2 -2
- package/docs/sentry.md +1 -1
- package/docs/slack.md +1 -1
- package/docs/snowflake.md +5 -5
- package/docs/storyblok.md +1 -1
- package/docs/stripe.md +2 -2
- package/docs/tally.md +1 -1
- package/docs/telegram.md +2 -2
- package/docs/tiktok.md +3 -3
- package/docs/twilio.md +3 -3
- package/docs/twitch.md +2 -2
- package/docs/wave.md +3 -3
- package/docs/wix.md +13 -13
- package/docs/wordpress-com.md +1 -1
- package/docs/wordpress-self-hosted.md +1 -1
- package/docs/workday.md +2 -2
- package/docs/x-twitter.md +3 -3
- package/docs/xero.md +3 -3
- package/docs/zoho-books.md +2 -2
- package/docs/zoho-crm.md +2 -2
- package/package.json +4 -3
- package/patterns/ai-connections/PATTERN.md +16 -1
- package/patterns/ai-connections/example/ai-model.js +12 -3
- package/patterns/ai-connections/example/perplexity-answer.js +15 -4
- package/patterns/api-key-connection/PATTERN.md +9 -1
- package/patterns/api-key-connection/example/connections.js +5 -2
- package/patterns/aws-storage-queries/PATTERN.md +13 -3
- package/patterns/aws-storage-queries/example/s3-transfer.js +14 -3
- package/patterns/event-delivery/PATTERN.md +1 -1
- package/patterns/firebase-messaging/PATTERN.md +10 -0
- package/patterns/firebase-messaging/example/server/notifications.js +8 -0
- package/patterns/google-ads-search/PATTERN.md +18 -7
- package/patterns/google-ads-search/example/ads-setup.js +13 -5
- package/patterns/oauth-connection/PATTERN.md +1 -1
- package/patterns/paddle-catalogue/PATTERN.md +11 -2
- package/patterns/paddle-catalogue/example/create-products.js +5 -2
- package/patterns/public-image/PATTERN.md +10 -1
- package/patterns/public-image/example/logo-url.js +4 -1
- package/patterns/redshift-queries/PATTERN.md +1 -1
- package/patterns/source-scanning/PATTERN.md +13 -2
- package/patterns/source-scanning/example/source-scanner.js +9 -0
- package/src/server/ai.js +19 -5
- package/src/server/apify.js +2 -2
- package/src/server/asana.js +6 -6
- package/src/server/ashby.js +2 -1
- package/src/server/attention.js +12 -11
- package/src/server/awsTransport.js +6 -0
- package/src/server/bigquery.js +5 -4
- package/src/server/brevo.js +2 -1
- package/src/server/clay.js +2 -1
- package/src/server/clickhouse.js +2 -1
- package/src/server/confidence.js +6 -1
- package/src/server/connectorValues.js +33 -0
- package/src/server/databricks.js +7 -7
- package/src/server/dbt-semantic-layer.js +5 -5
- package/src/server/elevenlabs.js +2 -2
- package/src/server/firebase-cloud-messaging.js +2 -2
- package/src/server/gemini-enterprise.js +5 -5
- package/src/server/google-ads-search.js +68 -48
- package/src/server/google-ads.js +15 -17
- package/src/server/google-drive.js +7 -7
- package/src/server/google-maps-platform.js +4 -2
- package/src/server/google-search-console.js +4 -3
- package/src/server/google.js +8 -4
- package/src/server/googleAdsApi.js +14 -0
- package/src/server/granola.js +2 -2
- package/src/server/hubspot.js +2 -1
- package/src/server/incident-io.js +3 -2
- package/src/server/lexware.js +5 -4
- package/src/server/lightspeed.js +7 -5
- package/src/server/linkedin.js +2 -2
- package/src/server/mcpTransport.js +8 -4
- package/src/server/microsoft-fabric.js +3 -3
- package/src/server/microsoft-onedrive.js +2 -2
- package/src/server/microsoft-onenote.js +4 -3
- package/src/server/microsoft-outlook.js +6 -6
- package/src/server/microsoft-sharepoint.js +4 -2
- package/src/server/microsoft-teams.js +2 -1
- package/src/server/microsoft.js +20 -13
- package/src/server/notion.js +2 -1
- package/src/server/pipedrive.js +2 -1
- package/src/server/salesforce.js +12 -12
- package/src/server/semrush.js +9 -8
- package/src/server/snowflake.js +20 -20
- package/src/server/storyblok.js +2 -1
- package/src/server/tally.js +2 -1
- package/src/server/telegram.js +2 -6
- package/src/server/tiktok.js +3 -3
- package/src/server/twilio.js +3 -2
- package/src/server/twitch.js +5 -3
- package/src/server/types.js +13 -0
- package/src/server/wix.js +20 -878
- package/src/server/wixBookings.js +449 -0
- package/src/server/wixCms.js +132 -0
- package/src/server/wixStores.js +296 -0
- package/src/server/wixValues.js +35 -0
- package/src/server/wiz.js +18 -4
- package/src/server/woocommerce.js +1 -1
- package/src/server/wordpress-com.js +2 -1
- package/src/server/workday.js +9 -9
- package/src/server/x-twitter.js +2 -1
- package/src/server/xero.js +40 -40
- package/src/server/zoho-books.js +6 -6
- package/src/server/zoho-crm.js +5 -5
- package/src/shared/confidence.js +6 -1
- package/src/shared/dbt-semantic-layer.js +1 -1
- package/src/shared/figma.js +1 -1
- package/src/shared/google.js +8 -4
- package/src/shared/googleScope.js +4 -0
- package/src/shared/microsoft-fabric.js +4 -5
- package/src/shared/microsoft.js +8 -3
- package/src/shared/salesforce.js +1 -1
- package/src/shared/tokens.js +7 -3
- package/src/shared/uuid.js +13 -0
- package/src/shared/wix.js +4 -3
- package/src/shared/zoho-books.js +3 -4
- package/src/shared/zoho-crm.js +1 -1
- package/src/shared/{zoho-regions.js → zoho.js} +4 -1
- package/test/ai.test.js +1 -1
- package/test/brevo.test.js +1 -1
- package/test/chargebee.test.js +1 -1
- package/test/google-ads.test.js +8 -4
- package/test/linkedin.test.js +1 -1
- package/test/resend.test.js +2 -2
- package/test/salesforce.test.js +1 -1
- package/test/snowflake.test.js +7 -7
- package/test/tiktok.test.js +1 -1
- package/test/wiz.test.js +1 -1
package/test/brevo.test.js
CHANGED
|
@@ -20,7 +20,7 @@ test("Brevo explicitly sends messages and campaigns, manages contacts and retain
|
|
|
20
20
|
return state.response === null ? new Response(null, { status: 204 }) : Response.json(state.response, { status: state.status }); }
|
|
21
21
|
});
|
|
22
22
|
const invoke = (operation, input = {}) => service.invoke({ ...identity, operation, input }); await service.connectApiKey(identity);
|
|
23
|
-
const sender = { email: "bookings@example.test", name: "
|
|
23
|
+
const sender = { email: "bookings@example.test", name: "Example Bookings" };
|
|
24
24
|
const email = { sender, to: [{ email: "customer@example.test" }], subject: "Booking confirmed", textContent: "Tuesday at 10" };
|
|
25
25
|
const dns = { brevo_code: { host_name: "example.test", type: "TXT", value: "brevo-code:fixture", status: false },
|
|
26
26
|
dkim_record: { host_name: "mail._domainkey.example.test", type: "TXT", value: "fixture-dkim", status: false } };
|
package/test/chargebee.test.js
CHANGED
|
@@ -149,7 +149,7 @@ test("Chargebee app billing uses indexed forms, explicit idempotency and verifie
|
|
|
149
149
|
const returns = { redirect_url: "https://app.example/billing/return", cancel_url: "https://app.example/billing/cancel" };
|
|
150
150
|
const samples = [
|
|
151
151
|
["customers.create", "customers", { email: "sam@example.test", first_name: "Sam", id: "customer-1" }, { customer: { id: "customer-1" } }],
|
|
152
|
-
["customers.update", "customers/customer-1", { resource: "customer-1", company: "
|
|
152
|
+
["customers.update", "customers/customer-1", { resource: "customer-1", company: "Example Grooming" }, { customer: { id: "customer-1", company: "Example Grooming" } }],
|
|
153
153
|
["subscriptions.create", "customers/customer-1/subscription_for_items", { resource: "customer-1", subscription_items: items, auto_collection: "off", invoice_immediately: false }, { subscription: { id: "sub-1", status: "active" }, unbilled_charges: [{ id: "charge-1" }] }],
|
|
154
154
|
["subscriptions.updateAtTermEnd", "subscriptions/sub-1/update_for_items", { resource: "sub-1", subscription_items: items, replace_items_list: true }, { subscription: { id: "sub-1", has_scheduled_changes: true } }, { end_of_term: "true" }],
|
|
155
155
|
["subscriptions.cancelAtTermEnd", "subscriptions/sub-1/cancel_for_items", { resource: "sub-1" }, { subscription: { id: "sub-1", status: "non_renewing" } }, { cancel_option: "end_of_term" }],
|
package/test/google-ads.test.js
CHANGED
|
@@ -274,7 +274,7 @@ async function searchFixture(t) {
|
|
|
274
274
|
if (url.pathname.endsWith("campaigns:mutate")) { live.campaign.status = body.operations[0].update.status; return { results: [{ resourceName: `customers/${customerId}/campaigns/33` }] }; }
|
|
275
275
|
if (url.pathname.endsWith("conversionActions:mutate")) return { results: [{ resourceName: `customers/${customerId}/conversionActions/22` }] };
|
|
276
276
|
const q = body.query;
|
|
277
|
-
if (q.includes("FROM customer ")) return { results: [{ customer: { id: customerId, descriptiveName: "
|
|
277
|
+
if (q.includes("FROM customer ")) return { results: [{ customer: { id: customerId, descriptiveName: "Example Grooming", currencyCode: "AUD", timeZone: "Australia/Perth", status: "ENABLED", manager: false } }] };
|
|
278
278
|
if (q.includes("FROM conversion_action")) return { results: [{ conversionAction: { id: "22", name: "Booking", type: "WEBPAGE", status: "ENABLED", tagSnippets: [{ eventSnippet: "<script>fixture-only</script>" }] } }] };
|
|
279
279
|
if (q.includes("FROM geo_target_constant")) return { results: [{ geoTargetConstant: { id: "2036", canonicalName: "Australia" } }] };
|
|
280
280
|
if (q.includes("FROM language_constant")) return { results: [{ languageConstant: { id: "1000", name: "English" } }] };
|
|
@@ -345,9 +345,13 @@ test("Search rejects stale plans and live budgets, unsupported campaigns and den
|
|
|
345
345
|
|
|
346
346
|
test("Search application command fragment reuses the native service and emits bounded display results", async t => {
|
|
347
347
|
const f = await searchFixture(t);
|
|
348
|
-
const
|
|
349
|
-
const
|
|
348
|
+
const host = { protocol: "example-host.integration-setup.command.v1", maxResponseBytes: 32768 };
|
|
349
|
+
const request = { protocol: host.protocol, requestId: "ads-fixture", operation: "ads-preview", ads: {} };
|
|
350
|
+
const reply = await dispatchAdsSetup(request, f.ads, host);
|
|
350
351
|
assert.equal(reply.status, "ads"); assert.equal(reply.operation, "ads-preview"); assert.equal(reply.data.plan.name, searchPlan.name);
|
|
352
|
+
assert.equal(reply.protocol, host.protocol);
|
|
351
353
|
assert.equal(JSON.stringify(reply).includes("access-fixture"), false);
|
|
352
|
-
await assert.rejects(dispatchAdsSetup({ ...request, operation: "ads-arbitrary" }, f.ads));
|
|
354
|
+
await assert.rejects(dispatchAdsSetup({ ...request, operation: "ads-arbitrary" }, f.ads, host));
|
|
355
|
+
await assert.rejects(dispatchAdsSetup({ ...request, protocol: "other-host.command.v1" }, f.ads, host), /Invalid advertising setup request/);
|
|
356
|
+
await assert.rejects(dispatchAdsSetup(request, f.ads, { ...host, maxResponseBytes: 64 }), /exceeds the host's response limit/);
|
|
353
357
|
});
|
package/test/linkedin.test.js
CHANGED
|
@@ -201,7 +201,7 @@ test("LinkedIn respects host policy, registration identity and unavailable manag
|
|
|
201
201
|
await assert.rejects(service.invoke({ ...input, operation: "profile.read" })); assert.equal(state.calls.length, count); state.deny = false;
|
|
202
202
|
const changed = structuredClone(configuration); changed.registrations.linkedin.clientId = "other-client";
|
|
203
203
|
await assert.rejects(createConnectionService({ ...options, configuration: changed }).invoke({ ...input, operation: "profile.read" }), { code: "connector_reconnect_required" });
|
|
204
|
-
changed.registrations.linkedin = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:GATEWAY_KEY", assignmentRef: "
|
|
204
|
+
changed.registrations.linkedin = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:GATEWAY_KEY", assignmentRef: "shared" };
|
|
205
205
|
assert.throws(() => createConnectionService({ ...options, configuration: changed }), { code: "integration_configuration_invalid" });
|
|
206
206
|
assert.equal(state.calls.length, count);
|
|
207
207
|
});
|
package/test/resend.test.js
CHANGED
|
@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
|
|
|
2
2
|
import test from "node:test";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
import { createLocalAuthService, createLocalFileBackend } from "../../auth-provider-local-core/src/server/lib/index.js";
|
|
5
|
+
import { localServiceOptions } from "../../auth-provider-local-core/test-support/localService.js";
|
|
5
6
|
import { mkdtemp, readFile, rm } from "node:fs/promises";
|
|
6
7
|
import { tmpdir } from "node:os";
|
|
7
8
|
import path from "node:path";
|
|
@@ -82,9 +83,8 @@ test("documented application wiring sends auth recovery through the Resend adapt
|
|
|
82
83
|
const createRecoverySender = new Function("createHash", `${example.replace('import { createHash } from "node:crypto";', "")}\nreturn createRecoverySender;`)(createHash);
|
|
83
84
|
const sender = createRecoverySender({ connections: service, context, integrationId: "mail", from: input.from });
|
|
84
85
|
const auth = createLocalAuthService({
|
|
86
|
+
...localServiceOptions({ env: { APP_PUBLIC_URL: "https://app.example.com" }, emailRecovery: true }),
|
|
85
87
|
backend: createLocalFileBackend({ storeDir: path.join(directory, "auth") }),
|
|
86
|
-
config: { nodeEnv: "test", sessionSecret: "fixture-session-secret",
|
|
87
|
-
appPublicUrl: "https://app.example.com", recoveryDevOutput: "response" },
|
|
88
88
|
recoverySender: sender
|
|
89
89
|
});
|
|
90
90
|
await auth.register({ email: "person@example.com", password: "correct horse battery staple" });
|
package/test/salesforce.test.js
CHANGED
|
@@ -229,7 +229,7 @@ test("Salesforce host policy, cancelled/denied consent and managed references ca
|
|
|
229
229
|
f.state.deny = true; await assert.rejects(f.service.beginAuthorization(input), /Host denied/);
|
|
230
230
|
assert.equal(f.state.requests.length, 0);
|
|
231
231
|
f.state.deny = false;
|
|
232
|
-
const config = structuredClone(f.configuration); config.registrations.sf = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:APP", assignmentRef: "
|
|
232
|
+
const config = structuredClone(f.configuration); config.registrations.sf = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:APP", assignmentRef: "shared" };
|
|
233
233
|
assert.throws(() => createConnectionService({ ...f.options, configuration: config }), { code: "integration_configuration_invalid" });
|
|
234
234
|
assert.equal(f.state.requests.length, 0);
|
|
235
235
|
});
|
package/test/snowflake.test.js
CHANGED
|
@@ -11,8 +11,8 @@ import { snowflakeProvider } from "../src/server/snowflake.js";
|
|
|
11
11
|
const context = { applicationId: "app-one", subjectId: "owner-one" };
|
|
12
12
|
const args = { context, integrationId: "warehouse" };
|
|
13
13
|
const callback = "https://app.example.test/oauth/snowflake/callback";
|
|
14
|
-
const database = { name: "INVENTORY", owner: "
|
|
15
|
-
async function fixture(t, { role = "
|
|
14
|
+
const database = { name: "INVENTORY", owner: "REPORTING_READER", kind: "PERMANENT", comment: "Stock", created_on: "2026-09-01T12:00:00Z" };
|
|
15
|
+
async function fixture(t, { role = "REPORTING_READER", accountUrl = "https://myorg-myaccount.snowflakecomputing.com", basic = false, sqlContext = {} } = {}) {
|
|
16
16
|
const directory = await mkdtemp(path.join(tmpdir(), "snowflake-connector-"));
|
|
17
17
|
t.after(() => rm(directory, { recursive: true, force: true }));
|
|
18
18
|
const settings = { accountUrl, ...(role ? { role } : {}), ...sqlContext };
|
|
@@ -84,7 +84,7 @@ async function fixture(t, { role = "VIBE64_READER", accountUrl = "https://myorg-
|
|
|
84
84
|
test("Snowflake binds PKCE and credentials to the account and persists encrypted restartable consent", async (t) => {
|
|
85
85
|
const f = await fixture(t); const start = await f.start();
|
|
86
86
|
assert.equal(start.url.href.split("?")[0], "https://myorg-myaccount.snowflakecomputing.com/oauth/authorize");
|
|
87
|
-
assert.equal(start.url.searchParams.get("scope"), "refresh_token session:role:
|
|
87
|
+
assert.equal(start.url.searchParams.get("scope"), "refresh_token session:role:REPORTING_READER");
|
|
88
88
|
assert.equal(start.url.searchParams.get("code_challenge_method"), "S256"); assert.equal(start.url.searchParams.has("client_secret"), false);
|
|
89
89
|
await f.service.completeAuthorization({ ...args, callbackUrl: start.callbackUrl });
|
|
90
90
|
for (const file of await readdir(f.directory)) {
|
|
@@ -93,7 +93,7 @@ test("Snowflake binds PKCE and credentials to the account and persists encrypted
|
|
|
93
93
|
}
|
|
94
94
|
const restarted = createConnectionService(f.options);
|
|
95
95
|
assert.equal((await restarted.status(args)).status, "connected");
|
|
96
|
-
assert.deepEqual((await restarted.status(args)).grantedScopes, ["refresh_token", "session:role:
|
|
96
|
+
assert.deepEqual((await restarted.status(args)).grantedScopes, ["refresh_token", "session:role:REPORTING_READER"]);
|
|
97
97
|
assert.deepEqual(await restarted.invoke({ ...args, operation: "databases.list" }), [database]);
|
|
98
98
|
});
|
|
99
99
|
|
|
@@ -133,7 +133,7 @@ test("Snowflake isolates application users and invalidates saved grants after ac
|
|
|
133
133
|
}
|
|
134
134
|
const denied = createConnectionService({ ...f.options, authorize: async () => null });
|
|
135
135
|
await assert.rejects(denied.invoke({ ...args, operation: "databases.list" }), { code: "connector_access_denied" });
|
|
136
|
-
for (const settings of [{ accountUrl: "https://other-account.snowflakecomputing.com", role: "
|
|
136
|
+
for (const settings of [{ accountUrl: "https://other-account.snowflakecomputing.com", role: "REPORTING_READER" }, { accountUrl: "https://myorg-myaccount.snowflakecomputing.com", role: "PUBLIC" }]) {
|
|
137
137
|
const configuration = structuredClone(f.options.configuration); configuration.integrations.warehouse.settings = settings;
|
|
138
138
|
configuration.integrations.warehouse.scopes = getProviderScopes(snowflakeProvider, settings).map((scope) => scope.value);
|
|
139
139
|
const changed = createConnectionService({ ...f.options, configuration });
|
|
@@ -246,14 +246,14 @@ test("Snowflake SQL lifecycle binds context, preserves typed partitions and canc
|
|
|
246
246
|
let phase = 0;
|
|
247
247
|
state.sqlReply = (url, init) => {
|
|
248
248
|
assert.equal(new Headers(init.headers).get("authorization"), "Bearer private-access-1");
|
|
249
|
-
assert.equal(new Headers(init.headers).get("x-snowflake-role"), '\"
|
|
249
|
+
assert.equal(new Headers(init.headers).get("x-snowflake-role"), '\"REPORTING_READER\"');
|
|
250
250
|
assert.equal(init.redirect, "error");
|
|
251
251
|
if (phase++ === 0) {
|
|
252
252
|
assert.equal(init.method, "POST");
|
|
253
253
|
assert.equal(url.searchParams.get("requestId"), requestId);
|
|
254
254
|
assert.equal(url.searchParams.get("async"), "true");
|
|
255
255
|
assert.deepEqual(JSON.parse(init.body), { statement: "select ?", bindings: { "1": { type: "FIXED", value: "9007199254740993" } }, timeout: 60,
|
|
256
|
-
warehouse: "APP_WH", database: "DATA", schema: "PUBLIC", role: "
|
|
256
|
+
warehouse: "APP_WH", database: "DATA", schema: "PUBLIC", role: "REPORTING_READER", parameters: { multi_statement_count: "1" } });
|
|
257
257
|
return Response.json({ code: "333334", statementHandle: handle, statementStatusUrl: "https://untrusted.test/never-follow" }, { status: 202 });
|
|
258
258
|
}
|
|
259
259
|
assert.equal(url.pathname, `/api/v2/statements/${handle}${phase === 4 ? "/cancel" : ""}`);
|
package/test/tiktok.test.js
CHANGED
|
@@ -231,7 +231,7 @@ test("TikTok enforces host policy, registration ownership and unavailable manage
|
|
|
231
231
|
await assert.rejects(service.invoke({ ...input, operation: "profile.read" })); assert.equal(state.calls.length, before); state.deny = false;
|
|
232
232
|
const changed = structuredClone(configuration); changed.registrations.tiktok.clientId = "other-key";
|
|
233
233
|
await assert.rejects(createConnectionService({ ...options, configuration: changed }).invoke({ ...input, operation: "profile.read" }), { code: "connector_reconnect_required" });
|
|
234
|
-
changed.registrations.tiktok = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:GATEWAY_KEY", assignmentRef: "
|
|
234
|
+
changed.registrations.tiktok = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:GATEWAY_KEY", assignmentRef: "shared" };
|
|
235
235
|
assert.throws(() => createConnectionService({ ...options, configuration: changed }), { code: "integration_configuration_invalid" });
|
|
236
236
|
assert.equal(state.calls.length, before);
|
|
237
237
|
});
|
package/test/wiz.test.js
CHANGED
|
@@ -104,7 +104,7 @@ test("Wiz preserves Auth0 configuration but rejects unsupported execution before
|
|
|
104
104
|
const f = await fixture(t); f.config.integrations.security.settings.tokenUrl = "https://auth.wiz.io/oauth/token";
|
|
105
105
|
assert.equal(validateIntegrationConfiguration(f.config, { providers: [wizDefinition] }).integrations.security.settings.tokenUrl, "https://auth.wiz.io/oauth/token");
|
|
106
106
|
await assert.rejects(f.scanner().scan(args), { code: "connector_authentication_unsupported" }); assert.deepEqual(f.resolutions, []);
|
|
107
|
-
f.config.registrations.wiz = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:IDENTITY", assignmentRef: "
|
|
107
|
+
f.config.registrations.wiz = { source: "managed", serviceUrlRef: "env:GATEWAY", serviceCredentialRef: "env:IDENTITY", assignmentRef: "shared-wiz" };
|
|
108
108
|
assert.throws(() => f.scanner(), { code: "integration_configuration_invalid" }); assert.deepEqual(f.resolutions, []);
|
|
109
109
|
});
|
|
110
110
|
|