@fabricorg/databricks-testkit 0.5.0 → 0.6.1

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/dist/index.d.cts CHANGED
@@ -616,6 +616,11 @@ interface DashboardResource extends JsonObject {
616
616
  display_name?: string;
617
617
  lifecycle_state?: string;
618
618
  }
619
+ interface PublishedDashboardResource extends JsonObject {
620
+ display_name?: string;
621
+ revision_create_time?: string;
622
+ warehouse_id?: string;
623
+ }
619
624
  interface GenieSpaceResource extends JsonObject {
620
625
  space_id?: string;
621
626
  title?: string;
@@ -659,6 +664,7 @@ declare class DatabricksAdvancedWorkloadsAdapter {
659
664
  pipeline(id: string): Promise<PipelineResource>;
660
665
  table(fullName: string): Promise<JsonObject>;
661
666
  dashboard(id: string): Promise<DashboardResource>;
667
+ publishedDashboard(id: string): Promise<PublishedDashboardResource>;
662
668
  genieSpace(id: string): Promise<GenieSpaceResource>;
663
669
  startGenieConversation(spaceId: string, question: string): Promise<JsonObject>;
664
670
  experiment(id: string): Promise<JsonObject>;
package/dist/index.d.ts CHANGED
@@ -616,6 +616,11 @@ interface DashboardResource extends JsonObject {
616
616
  display_name?: string;
617
617
  lifecycle_state?: string;
618
618
  }
619
+ interface PublishedDashboardResource extends JsonObject {
620
+ display_name?: string;
621
+ revision_create_time?: string;
622
+ warehouse_id?: string;
623
+ }
619
624
  interface GenieSpaceResource extends JsonObject {
620
625
  space_id?: string;
621
626
  title?: string;
@@ -659,6 +664,7 @@ declare class DatabricksAdvancedWorkloadsAdapter {
659
664
  pipeline(id: string): Promise<PipelineResource>;
660
665
  table(fullName: string): Promise<JsonObject>;
661
666
  dashboard(id: string): Promise<DashboardResource>;
667
+ publishedDashboard(id: string): Promise<PublishedDashboardResource>;
662
668
  genieSpace(id: string): Promise<GenieSpaceResource>;
663
669
  startGenieConversation(spaceId: string, question: string): Promise<JsonObject>;
664
670
  experiment(id: string): Promise<JsonObject>;
package/dist/index.js CHANGED
@@ -1900,6 +1900,9 @@ var DatabricksAdvancedWorkloadsAdapter = class {
1900
1900
  dashboard(id) {
1901
1901
  return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}`);
1902
1902
  }
1903
+ publishedDashboard(id) {
1904
+ return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}/published`);
1905
+ }
1903
1906
  genieSpace(id) {
1904
1907
  return this.client.get(`/api/2.0/genie/spaces/${segment(id)}`);
1905
1908
  }
@@ -2037,12 +2040,21 @@ function lakeflowConnectCheck() {
2037
2040
  const id = env.DBX_TEST_CONNECT_PIPELINE_ID;
2038
2041
  const pipeline = await adapter(client).pipeline(id);
2039
2042
  assertNotFailed("Lakeflow Connect pipeline", pipeline.state);
2043
+ const ingestion = pipeline.spec?.ingestion_definition;
2044
+ if (!ingestion || !Array.isArray(ingestion.objects) || ingestion.objects.length === 0) {
2045
+ throw new Error("Lakeflow Connect pipeline has no managed ingestion definition");
2046
+ }
2040
2047
  await booleanSql(
2041
2048
  "Lakeflow Connect replication",
2042
2049
  env.DBX_TEST_CONNECT_ASSERTION_SQL,
2043
2050
  warehouse2.query
2044
2051
  );
2045
- return { pipelineId: pipeline.pipeline_id ?? id, state: pipeline.state ?? "IDLE" };
2052
+ return {
2053
+ pipelineId: pipeline.pipeline_id ?? id,
2054
+ state: pipeline.state ?? "IDLE",
2055
+ sourceType: ingestion.source_type ?? "MANAGED_INGESTION",
2056
+ objects: ingestion.objects.length
2057
+ };
2046
2058
  }
2047
2059
  };
2048
2060
  }
@@ -2052,11 +2064,18 @@ function aiBiDashboardCheck() {
2052
2064
  description: "Published AI/BI dashboard is accessible",
2053
2065
  configured: (env) => Boolean(env.DBX_TEST_DASHBOARD_ID),
2054
2066
  async run({ env, client }) {
2055
- const dashboard = await adapter(client).dashboard(env.DBX_TEST_DASHBOARD_ID);
2067
+ const api = adapter(client);
2068
+ const id = env.DBX_TEST_DASHBOARD_ID;
2069
+ const dashboard = await api.dashboard(id);
2056
2070
  assertNotFailed("AI/BI dashboard", dashboard.lifecycle_state);
2071
+ const published = await api.publishedDashboard(id);
2072
+ if (!published.revision_create_time) {
2073
+ throw new Error(`AI/BI dashboard ${id} has no published revision`);
2074
+ }
2057
2075
  return {
2058
- dashboardId: dashboard.dashboard_id ?? env.DBX_TEST_DASHBOARD_ID,
2059
- name: dashboard.display_name
2076
+ dashboardId: dashboard.dashboard_id ?? id,
2077
+ name: published.display_name ?? dashboard.display_name,
2078
+ publishedAt: published.revision_create_time
2060
2079
  };
2061
2080
  }
2062
2081
  };
@@ -2360,8 +2379,7 @@ function regionalDrCheck(options = {}) {
2360
2379
 
2361
2380
  // src/advanced-target-packs.ts
2362
2381
  var DOCS2 = "https://experiments.fabric.pro/docs/testing/target-packs/";
2363
- var SHIPPED_SCOPE = "Typed adapter and offline contract tests shipped; live certification requires customer-owned test resources";
2364
- var AZURE_USER_SCOPE = "Azure Databricks, West US, interactive user OAuth, public network path; existing certification fixtures";
2382
+ var AZURE_M2M_SCOPE = "Azure Databricks, dedicated service principal using OAuth M2M, public network path; named managed or disposable certification fixtures";
2365
2383
  var workspace = {
2366
2384
  id: "workspace",
2367
2385
  description: "Databricks workspace host",
@@ -2394,8 +2412,8 @@ function createAdvancedStreamingTargetPack() {
2394
2412
  id: "streaming-cdc-connect",
2395
2413
  name: "Advanced streaming, CDC and Lakeflow Connect",
2396
2414
  description: "Streaming tables, pipeline health, CDC correctness, freshness and managed connector replication.",
2397
- version: "0.1.0",
2398
- maturity: "shipped",
2415
+ version: "1.0.0",
2416
+ maturity: "live-gated",
2399
2417
  capabilities: [
2400
2418
  "streaming.tables",
2401
2419
  "streaming.freshness",
@@ -2428,7 +2446,9 @@ function createAdvancedStreamingTargetPack() {
2428
2446
  )
2429
2447
  ],
2430
2448
  docsUrl: `${DOCS2}#advanced-streaming-cdc-and-lakeflow-connect`,
2431
- certificationScopes: [SHIPPED_SCOPE]
2449
+ certificationScopes: [
2450
+ `${AZURE_M2M_SCOPE}; serverless Lakeflow pipeline AUTO CDC and query-based PostgreSQL foreign-catalog ingestion`
2451
+ ]
2432
2452
  });
2433
2453
  }
2434
2454
  function createAiBiGenieTargetPack() {
@@ -2436,7 +2456,7 @@ function createAiBiGenieTargetPack() {
2436
2456
  id: "aibi-genie",
2437
2457
  name: "AI/BI dashboards and Genie",
2438
2458
  description: "Dashboard accessibility and authenticated Genie space/conversation behavior.",
2439
- version: "0.1.0",
2459
+ version: "0.2.0",
2440
2460
  maturity: "live-gated",
2441
2461
  capabilities: ["aibi.dashboard", "genie.space", "genie.conversation"],
2442
2462
  checks: () => [restrictedPrincipalCheck(), aiBiDashboardCheck(), genieCheck()],
@@ -2454,7 +2474,7 @@ function createAiBiGenieTargetPack() {
2454
2474
  ],
2455
2475
  docsUrl: `${DOCS2}#aibi-dashboards-and-genie`,
2456
2476
  certificationScopes: [
2457
- `${AZURE_USER_SCOPE}; AI/BI dashboard metadata and Genie conversation start`
2477
+ `${AZURE_M2M_SCOPE}; published AI/BI dashboard revision and Genie conversation start`
2458
2478
  ]
2459
2479
  });
2460
2480
  }
@@ -2486,7 +2506,7 @@ function createMlflowLifecycleTargetPack() {
2486
2506
  ],
2487
2507
  docsUrl: `${DOCS2}#mlflow-and-model-lifecycle`,
2488
2508
  certificationScopes: [
2489
- `${AZURE_USER_SCOPE}; MLflow experiment and Unity Catalog model version 20`
2509
+ `${AZURE_M2M_SCOPE}; MLflow experiment and configured Unity Catalog model version`
2490
2510
  ]
2491
2511
  });
2492
2512
  }
@@ -2524,7 +2544,7 @@ function createFeatureEngineeringTargetPack() {
2524
2544
  ],
2525
2545
  docsUrl: `${DOCS2}#feature-engineering-and-serving`,
2526
2546
  certificationScopes: [
2527
- `${AZURE_USER_SCOPE}; Delta feature table, PostgreSQL-backed Synced Table, and SQL freshness`
2547
+ `${AZURE_M2M_SCOPE}; Delta feature table, PostgreSQL-backed Synced Table, and SQL freshness`
2528
2548
  ]
2529
2549
  });
2530
2550
  }
@@ -2559,7 +2579,7 @@ function createModelServingTargetPack() {
2559
2579
  ],
2560
2580
  docsUrl: `${DOCS2}#model-serving-and-ai-gateway`,
2561
2581
  certificationScopes: [
2562
- `${AZURE_USER_SCOPE}; custom-model inference and AI Gateway inference-table configuration`
2582
+ `${AZURE_M2M_SCOPE}; custom-model inference and AI Gateway inference-table configuration`
2563
2583
  ]
2564
2584
  });
2565
2585
  }
@@ -2589,7 +2609,7 @@ function createVectorRagAgentsTargetPack() {
2589
2609
  ],
2590
2610
  docsUrl: `${DOCS2}#vector-search-rag-and-agents`,
2591
2611
  certificationScopes: [
2592
- `${AZURE_USER_SCOPE}; Delta Sync vector retrieval and custom PyFunc agent invocation`
2612
+ `${AZURE_M2M_SCOPE}; Delta Sync vector retrieval and custom PyFunc agent invocation`
2593
2613
  ]
2594
2614
  });
2595
2615
  }
@@ -2598,8 +2618,8 @@ function createFederationSharingTargetPack() {
2598
2618
  id: "federation-sharing-cleanrooms",
2599
2619
  name: "Federation, Delta Sharing and Clean Rooms",
2600
2620
  description: "Federated connection, data-plane query, Delta Share and Clean Room governance access.",
2601
- version: "0.1.0",
2602
- maturity: "shipped",
2621
+ version: "1.0.0",
2622
+ maturity: "live-gated",
2603
2623
  capabilities: [
2604
2624
  "federation.connections",
2605
2625
  "federation.query",
@@ -2622,7 +2642,9 @@ function createFederationSharingTargetPack() {
2622
2642
  )
2623
2643
  ],
2624
2644
  docsUrl: `${DOCS2}#federation-delta-sharing-and-clean-rooms`,
2625
- certificationScopes: [SHIPPED_SCOPE]
2645
+ certificationScopes: [
2646
+ `${AZURE_M2M_SCOPE}; managed PostgreSQL federation, Delta Sharing table, and two-metastore Clean Room`
2647
+ ]
2626
2648
  });
2627
2649
  }
2628
2650
  function createSecurityCostDrTargetPack() {
@@ -2630,8 +2652,8 @@ function createSecurityCostDrTargetPack() {
2630
2652
  id: "security-cost-dr",
2631
2653
  name: "Networking, security posture, cost and regional DR",
2632
2654
  description: "IP controls, compute policy, cost guardrail and authenticated secondary-region readiness.",
2633
- version: "0.1.0",
2634
- maturity: "shipped",
2655
+ version: "1.0.0",
2656
+ maturity: "live-gated",
2635
2657
  capabilities: [
2636
2658
  "network.ip-access",
2637
2659
  "security.compute-policy",
@@ -2656,7 +2678,9 @@ function createSecurityCostDrTargetPack() {
2656
2678
  requirement("dr-assertion", "Secondary-region workload SQL", "DBX_TEST_DR_ASSERTION_SQL")
2657
2679
  ],
2658
2680
  docsUrl: `${DOCS2}#networking-security-cost-and-regional-dr`,
2659
- certificationScopes: [SHIPPED_SCOPE]
2681
+ certificationScopes: [
2682
+ `${AZURE_M2M_SCOPE}; TEST-NET block list, bounded compute policy, billing system-table guardrail, and West US 3 serverless DR warehouse`
2683
+ ]
2660
2684
  });
2661
2685
  }
2662
2686
  function createAdvancedTargetPacks() {