import type { IsolationFixture } from "./types.js";

export const modeIsolationKnownBad: IsolationFixture = {
  fixtureId: "isolation/mode-isolation-known-bad",
  isolationVersion: "1.0",
  scenarios: [
    {
      scenarioId: "demo-reaches-production-api",
      kind: "mode-isolation",
      mode: "demo",
      isolationContract: {
        declaresIsolation: true,
        allowedDependencyTargets: ["mock-api"],
      },
      accessAttempts: [
        {
          target: "mock-api",
          classification: "mock",
          reached: true,
          channel: "http",
        },
        {
          target: "production-api",
          classification: "production",
          reached: true,
          channel: "http",
        },
      ],
    },
    {
      scenarioId: "preview-reaches-live-database",
      kind: "mode-isolation",
      mode: "preview",
      isolationContract: {
        declaresIsolation: true,
        allowedDependencyTargets: ["local-fixture-db"],
      },
      accessAttempts: [
        {
          target: "customer-db",
          classification: "live",
          reached: true,
          channel: "sql",
        },
      ],
    },
    {
      scenarioId: "fixture-mode-reaches-live-queue",
      kind: "mode-isolation",
      mode: "fixture",
      isolationContract: {
        declaresIsolation: true,
        allowedDependencyTargets: ["local-fixture-queue"],
      },
      accessAttempts: [
        {
          target: "production-queue",
          classification: "live",
          reached: true,
          channel: "queue",
        },
      ],
    },
    {
      scenarioId: "offline-mode-reaches-production",
      kind: "mode-isolation",
      mode: "offline",
      isolationContract: {
        declaresIsolation: true,
        allowedDependencyTargets: ["local-fixture-db"],
      },
      accessAttempts: [
        {
          target: "billing-service",
          classification: "production",
          reached: true,
          channel: "grpc",
        },
      ],
    },
  ],
};
