@grafana/alerting
Version:
Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution
72 lines (69 loc) • 2.38 kB
JavaScript
import { faker } from '@faker-js/faker';
import { Factory } from 'fishery';
import { generateResourceVersion, generateTitle, generateUID, DEFAULT_NAMESPACE } from '../../../../../mocks/util.mjs';
import { GROUP, VERSION } from '../../const.mjs';
import { AlertingEntityMetadataAnnotationsFactory } from './common.mjs';
;
const ListReceiverApiResponseFactory = Factory.define(() => ({
kind: "ReceiverList",
apiVersion: `${GROUP}/${VERSION}`,
metadata: {
resourceVersion: generateResourceVersion()
},
items: ContactPointFactory.buildList(5)
}));
const ContactPointFactory = Factory.define(() => {
const title = generateTitle();
return {
kind: "Receiver",
apiVersion: `${GROUP}/${VERSION}`,
metadata: {
name: btoa(title),
namespace: DEFAULT_NAMESPACE,
uid: generateUID(),
resourceVersion: generateResourceVersion(),
annotations: ContactPointMetadataAnnotationsFactory.build()
},
spec: ContactPointSpecFactory.build({ title }),
status: {}
};
});
const ContactPointSpecFactory = Factory.define(() => ({
title: generateTitle(),
// use two unique random integrations by default
integrations: faker.helpers.uniqueArray(IntegrationUnion, 2).map((integration) => integration.build())
}));
const GenericIntegrationFactory = Factory.define(() => ({
type: "generic",
version: "1",
disableResolveMessage: false,
settings: {
foo: "bar"
}
}));
const EmailIntegrationFactory = Factory.define(() => ({
type: "email",
version: "1",
secureFields: {},
settings: {
addresses: faker.internet.email()
}
}));
const SlackIntegrationFactory = Factory.define(() => ({
type: "slack",
version: "1",
secureFields: { token: true },
settings: {
mentionChannel: "#alerts"
}
}));
const IntegrationUnion = [EmailIntegrationFactory, SlackIntegrationFactory];
const ContactPointMetadataAnnotationsFactory = Factory.define(() => ({
"grafana.com/access/canReadSecrets": "true",
"grafana.com/inUse/routes": "1",
"grafana.com/inUse/rules": "1",
"grafana.com/canUse": "true",
...AlertingEntityMetadataAnnotationsFactory.build()
}));
export { ContactPointFactory, ContactPointMetadataAnnotationsFactory, ContactPointSpecFactory, EmailIntegrationFactory, GenericIntegrationFactory, ListReceiverApiResponseFactory, SlackIntegrationFactory };
//# sourceMappingURL=Receivers.mjs.map