{"version":3,"file":"testing.cjs","sources":["../../src/grafana/mocks/util.ts","../../src/grafana/api/notifications/v0alpha1/const.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/createReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/deletecollectionReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/deleteReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/getReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/listReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/replaceReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/updateReceiverHandler.ts","../../src/grafana/api/notifications/v0alpha1/mocks/fakes/common.ts","../../src/grafana/api/notifications/v0alpha1/mocks/fakes/Receivers.ts","../../src/grafana/api/notifications/v0alpha1/mocks/fakes/Routes.ts","../../src/grafana/contactPoints/components/ContactPointSelector/ContactPointSelector.test.scenario.ts"],"sourcesContent":["import { faker } from '@faker-js/faker';\nimport { upperFirst } from 'lodash';\n\nexport const DEFAULT_NAMESPACE = 'default' as const;\n\n// this function is used for MSW endpoints\nexport const getAPIBaseURLForMocks = (group: string, version: string, path: `/${string}` = '/') =>\n  `/apis/${group}/${version}/namespaces/default${path}` as const;\n\n// example: \"Likeable sea lion\"\nexport const generateTitle = () => upperFirst(`${faker.word.adjective()} ${faker.animal.type()}`);\n\nexport const generateResourceVersion = () => faker.string.alphanumeric({ length: 16, casing: 'lower' });\n\nexport const generateUID = () => faker.string.alphanumeric({ length: 32, casing: 'mixed' });\n","export const VERSION = 'v0alpha1' as const;\nexport const GROUP = 'notifications.alerting.grafana.app' as const;\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { CreateReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function createReceiverHandler(\n  data: CreateReceiverApiResponse | ((info: Parameters<Parameters<typeof http.post>[1]>[0]) => Response)\n) {\n  return http.post(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { DeletecollectionReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function deletecollectionReceiverHandler(\n  data: DeletecollectionReceiverApiResponse | ((info: Parameters<Parameters<typeof http.delete>[1]>[0]) => Response)\n) {\n  return http.delete(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { DeleteReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function deleteReceiverHandler(\n  data: DeleteReceiverApiResponse | ((info: Parameters<Parameters<typeof http.delete>[1]>[0]) => Response)\n) {\n  return http.delete(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers/:name'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { GetReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function getReceiverHandler(\n  data: GetReceiverApiResponse | ((info: Parameters<Parameters<typeof http.get>[1]>[0]) => Response)\n) {\n  return http.get(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers/:name'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { GROUP, VERSION } from '../../../const';\nimport { EnhancedListReceiverApiResponse } from '../../../types';\n\nexport function listReceiverHandler(\n  data: EnhancedListReceiverApiResponse | ((info: Parameters<Parameters<typeof http.get>[1]>[0]) => Response)\n) {\n  return http.get(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { ReplaceReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function replaceReceiverHandler(\n  data: ReplaceReceiverApiResponse | ((info: Parameters<Parameters<typeof http.put>[1]>[0]) => Response)\n) {\n  return http.put(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers/:name'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { HttpResponse, http } from 'msw';\n\nimport { getAPIBaseURLForMocks } from '../../../../../../mocks/util';\nimport { UpdateReceiverApiResponse } from '../../../../v0alpha1/notifications.api.gen';\nimport { GROUP, VERSION } from '../../../const';\n\nexport function updateReceiverHandler(\n  data: UpdateReceiverApiResponse | ((info: Parameters<Parameters<typeof http.patch>[1]>[0]) => Response)\n) {\n  return http.patch(getAPIBaseURLForMocks(GROUP, VERSION, '/receivers/:name'), function handler(info) {\n    if (typeof data === 'function') {\n      return data(info);\n    }\n\n    return HttpResponse.json(data);\n  });\n}\n","import { Factory } from 'fishery';\n\nimport { AlertingEntityMetadataAnnotations } from '../../types';\n\nexport const AlertingEntityMetadataAnnotationsFactory = Factory.define<AlertingEntityMetadataAnnotations>(() => ({\n  'grafana.com/access/canAdmin': 'true',\n  'grafana.com/access/canDelete': 'true',\n  'grafana.com/access/canWrite': 'true',\n  'grafana.com/provenance': '',\n}));\n","import { faker } from '@faker-js/faker';\nimport { Factory } from 'fishery';\n\nimport { DEFAULT_NAMESPACE, generateResourceVersion, generateTitle, generateUID } from '../../../../../mocks/util';\nimport { GROUP, VERSION } from '../../const';\nimport {\n  ContactPoint,\n  ContactPointMetadataAnnotations,\n  EnhancedListReceiverApiResponse,\n  Integration,\n} from '../../types';\n\nimport { AlertingEntityMetadataAnnotationsFactory } from './common';\n\nexport const ListReceiverApiResponseFactory = Factory.define<EnhancedListReceiverApiResponse>(() => ({\n  kind: 'ReceiverList',\n  apiVersion: `${GROUP}/${VERSION}`,\n  metadata: {\n    resourceVersion: generateResourceVersion(),\n  },\n  items: ContactPointFactory.buildList(5),\n}));\n\nexport const ContactPointFactory = Factory.define<ContactPoint>(() => {\n  const title = generateTitle();\n\n  return {\n    kind: 'Receiver',\n    apiVersion: `${GROUP}/${VERSION}`,\n    metadata: {\n      name: btoa(title),\n      namespace: DEFAULT_NAMESPACE,\n      uid: generateUID(),\n      resourceVersion: generateResourceVersion(),\n      annotations: ContactPointMetadataAnnotationsFactory.build(),\n    },\n    spec: ContactPointSpecFactory.build({ title }),\n    status: {},\n  };\n});\n\nexport const ContactPointSpecFactory = Factory.define<ContactPoint['spec']>(() => ({\n  title: generateTitle(),\n  // use two unique random integrations by default\n  integrations: faker.helpers.uniqueArray(IntegrationUnion, 2).map((integration) => integration.build()),\n}));\n\nexport const GenericIntegrationFactory = Factory.define<Integration>(() => ({\n  type: 'generic',\n  version: '1',\n  disableResolveMessage: false,\n  settings: {\n    foo: 'bar',\n  },\n}));\n\nexport const EmailIntegrationFactory = Factory.define<Integration>(() => ({\n  type: 'email',\n  version: '1',\n  secureFields: {},\n  settings: {\n    addresses: faker.internet.email(),\n  },\n}));\n\nexport const SlackIntegrationFactory = Factory.define<Integration>(() => ({\n  type: 'slack',\n  version: '1',\n  secureFields: { token: true },\n  settings: {\n    mentionChannel: '#alerts',\n  },\n}));\n\nconst IntegrationUnion = [EmailIntegrationFactory, SlackIntegrationFactory];\n\n// by default the contact points will be in use by a route and a rule\nexport const ContactPointMetadataAnnotationsFactory = Factory.define<ContactPointMetadataAnnotations>(() => ({\n  'grafana.com/access/canReadSecrets': 'true',\n  'grafana.com/inUse/routes': '1',\n  'grafana.com/inUse/rules': '1',\n  'grafana.com/canUse': 'true',\n  ...AlertingEntityMetadataAnnotationsFactory.build(),\n}));\n","import { faker } from '@faker-js/faker';\nimport { Factory } from 'fishery';\n\nimport { LabelMatcher } from '../../../../../matchers/types';\nimport { Route } from '../../../../../notificationPolicies/types';\n\nexport const LabelMatcherFactory = Factory.define<LabelMatcher>(() => {\n  const operators: Array<LabelMatcher['type']> = ['=', '!=', '=~', '!~'];\n\n  return {\n    label: faker.helpers.arrayElement(['service', 'env', 'team', 'severity', 'region', 'instance']),\n    type: faker.helpers.arrayElement(operators),\n    value: faker.helpers.arrayElement(['web', 'api', 'prod', 'staging', 'critical', 'warning', 'us-east', 'us-west']),\n  };\n});\n\nexport const RouteFactory = Factory.define<Route>(() => ({\n  continue: faker.datatype.boolean(),\n  receiver: faker.helpers.arrayElement(['web-team', 'api-team', 'critical-alerts', 'dev-team']),\n  matchers: LabelMatcherFactory.buildList(faker.number.int({ min: 1, max: 3 })),\n  group_by: faker.helpers.arrayElements(['alertname', 'service', 'severity'], { min: 1, max: 2 }),\n  group_wait: faker.helpers.arrayElement(['10s', '30s', '1m']),\n  group_interval: faker.helpers.arrayElement(['5m', '10m', '15m']),\n  repeat_interval: faker.helpers.arrayElement(['1h', '4h', '12h']),\n  active_time_intervals: faker.helpers.arrayElements(['business-hours', 'weekends', 'maintenance'], { min: 1, max: 2 }),\n  mute_time_intervals: faker.helpers.arrayElements(['lunch-break', 'night-hours'], { min: 1, max: 2 }),\n  routes: [],\n}));\n","import { HttpResponse } from 'msw';\n\nimport {\n  ContactPointFactory,\n  EmailIntegrationFactory,\n  ListReceiverApiResponseFactory,\n  SlackIntegrationFactory,\n} from '../../../api/notifications/v0alpha1/mocks/fakes/Receivers';\nimport { listReceiverHandler } from '../../../api/notifications/v0alpha1/mocks/handlers/ReceiverHandlers/listReceiverHandler';\n\nexport const simpleContactPointsList = ListReceiverApiResponseFactory.build({\n  items: [\n    // contact point with for testing with multiple different integrations – should show \"email, slack\" description\n    ContactPointFactory.build({\n      spec: {\n        integrations: [EmailIntegrationFactory.build(), SlackIntegrationFactory.build()],\n      },\n    }),\n    // contact point for testing \"email (2)\" description\n    ContactPointFactory.build({\n      spec: {\n        integrations: EmailIntegrationFactory.buildList(2),\n      },\n    }),\n    // contact point for testing \"empty contact point\" description\n    ContactPointFactory.build({\n      spec: { integrations: [] },\n    }),\n  ],\n});\n\n// export the simple contact points list as a separate list of handlers (scenario) so we can load it in the front-end\nexport const simpleContactPointsListScenario = [listReceiverHandler(simpleContactPointsList)];\n\nexport const withErrorScenario = [listReceiverHandler(() => new HttpResponse(null, { status: 500 }))];\n"],"names":["upperFirst","faker","http","HttpResponse","Factory"],"mappings":"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"}