UNPKG

test-this-package-today

Version:

Event Inc is a fully managed event bus lets you send and receive data across mission-critical cloud apps, databases and warehouses.

327 lines (271 loc) 8.96 kB
import { setEvents } from '../logic/sources/setEvents'; import { ValidAccessKey } from '@event-inc/types'; import { createSource } from '../logic/sources/createSource'; import { createDestination, deleteDestination, deleteSource, listDestinations, listSources, getParser } from '../logic'; import { makeId } from '@event-inc/utils'; import { createClient } from '../client'; require('dotenv').config(); jest.setTimeout(30000); describe('Connections APIs Specs', () => { it('Should create a Stripe source, subscribe to customer.created event, create a mongodb destination', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource(client, { type: 'stripe', group: `my-stripe-source-${makeId(4)}`, label: `My Stripe Source ${makeId(4)}`, config: { STRIPE_SECRET_KEY: process.env.CONNECTIONS_TEST_STRIPE_SECRET_KEY, }, }); expect(source).toHaveProperty('key'); await new Promise((resolve) => setTimeout(resolve, 5000)); const subscribe = await setEvents(client, { type: 'stripe', key: source.key, events: ['customer.created'], }); expect(subscribe).toHaveProperty('success', true); const destination = await createDestination(client, { type: 'mongodb', group: `my-mongodb-destination-${makeId(4)}`, label: `My MongoDB Destination ${makeId(4)}`, config: { MONGODB_URI: process.env.CONNECTIONS_TEST_MONGODB_URI, }, }); expect(destination).toHaveProperty('key'); await new Promise((resolve) => setTimeout(resolve, 5000)); const deleteSourceResult = await deleteSource(client, { key: source.key, }); expect(deleteSourceResult).toHaveProperty('success', true); const deleteDestinationResult = await deleteDestination(client, { key: destination.key, }); expect(deleteDestinationResult).toHaveProperty('success', true); }); it('Should create an FTP source with a custom parser', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource<"ftp">(client, { type: 'ftp', group: `my-ftp-${makeId(4)}`, label: `FTP Source with a custom parser - ${makeId(4)}`, config: { FTP_HOST: process.env.CONNECTIONS_TEST_FTP_HOST, FTP_USER: process.env.CONNECTIONS_TEST_FTP_USER, FTP_PASSWORD: process.env.CONNECTIONS_TEST_FTP_PASSWORD, FTP_PATH: process.env.CONNECTIONS_TEST_FTP_PATH, FTP_PORT: process.env.CONNECTIONS_TEST_FTP_PORT, FTP_SCAN_INTERVAL: '*/1 * * * *', FTP_FILE_ARCHIVING_ENABLED: "Y", FTP_FILE_EXTRACTION_ENABLED: "Y", FTP_EXTRACTOR_FILE_TYPE: "csv", FTP_PARSER: function parseCSV (payload: string): { [key: string]: string }[] { const [headerLine, ...dataLines] = payload.split("\n"); const delimiter = ","; const headers = headerLine.split(delimiter); return dataLines.map((line) => { const cells = line.split(delimiter); return headers.reduce((obj: { [key: string]: string }, header, index) => { obj[header] = cells[index] + " | custom" return obj; }, {}); }); }, FTP_EXTRACTOR_FILE_SIZE_LIMIT: "2mb", FTP_EXTRACTOR_RECORD_COUNT_LIMIT: "25" } }); console.log(source); expect(source.parser).toBeDefined(); }); it('Should create an FTP source with a default CSV parser', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource<"ftp">(client, { type: 'ftp', group: `my-ftp-${makeId(4)}`, label: `FTP Source with a default csv parser - ${makeId(4)}`, config: { FTP_HOST: process.env.CONNECTIONS_TEST_FTP_HOST, FTP_USER: process.env.CONNECTIONS_TEST_FTP_USER, FTP_PASSWORD: process.env.CONNECTIONS_TEST_FTP_PASSWORD, FTP_PATH: process.env.CONNECTIONS_TEST_FTP_PATH, FTP_PORT: process.env.CONNECTIONS_TEST_FTP_PORT, FTP_SCAN_INTERVAL: '*/1 * * * *', FTP_FILE_ARCHIVING_ENABLED: "Y", FTP_FILE_EXTRACTION_ENABLED: "Y", FTP_EXTRACTOR_FILE_TYPE: "csv", FTP_PARSER: "csv", FTP_EXTRACTOR_FILE_SIZE_LIMIT: "2mb", FTP_EXTRACTOR_RECORD_COUNT_LIMIT: "25" } }); console.log(source); expect(source.parser).toBeDefined(); }); it('Should create an FTP source with a default JSON parser', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource<"ftp">(client, { type: 'ftp', group: `my-ftp-${makeId(4)}`, label: `FTP Source with a default JSON parser - ${makeId(4)}`, config: { FTP_HOST: process.env.CONNECTIONS_TEST_FTP_HOST, FTP_USER: process.env.CONNECTIONS_TEST_FTP_USER, FTP_PASSWORD: process.env.CONNECTIONS_TEST_FTP_PASSWORD, FTP_PATH: process.env.CONNECTIONS_TEST_FTP_PATH, FTP_PORT: process.env.CONNECTIONS_TEST_FTP_PORT, FTP_SCAN_INTERVAL: '*/1 * * * *', FTP_FILE_ARCHIVING_ENABLED: "Y", FTP_FILE_EXTRACTION_ENABLED: "Y", FTP_EXTRACTOR_FILE_TYPE: "json", FTP_PARSER: "json", FTP_EXTRACTOR_FILE_SIZE_LIMIT: "2mb", FTP_EXTRACTOR_RECORD_COUNT_LIMIT: "25" } }); console.log(source); expect(source.parser).toBeDefined(); }); it('Should get an FTP source parser function', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource<"ftp">(client, { type: 'ftp', group: `my-ftp-${makeId(4)}`, label: `FTP Source - ${makeId(4)}`, config: { FTP_HOST: process.env.CONNECTIONS_TEST_FTP_HOST, FTP_USER: process.env.CONNECTIONS_TEST_FTP_USER, FTP_PASSWORD: process.env.CONNECTIONS_TEST_FTP_PASSWORD, FTP_PATH: process.env.CONNECTIONS_TEST_FTP_PATH, FTP_PORT: process.env.CONNECTIONS_TEST_FTP_PORT, FTP_SCAN_INTERVAL: '*/1 * * * *', FTP_FILE_ARCHIVING_ENABLED: "Y", FTP_FILE_EXTRACTION_ENABLED: "Y", FTP_EXTRACTOR_FILE_TYPE: "json", FTP_PARSER: "json", FTP_EXTRACTOR_FILE_SIZE_LIMIT: "2mb", FTP_EXTRACTOR_RECORD_COUNT_LIMIT: "25" } }); const parser = await getParser(client, { key: source.key }); console.log(parser) expect(parser).toBeDefined(); }); it('Should list all sources', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const sourceList = await listSources(client); expect(sourceList).toHaveProperty('rows'); }); it('Should list all destinations', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const destinationList = await listDestinations(client); expect(destinationList).toHaveProperty('rows'); }); it('Should create a kafka destination', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const destination = await createDestination(client, { type: 'kafka', group: `my-kafka-${makeId(4)}`, label: `Kafka Destination - ${makeId(4)}`, config: { KAFKA_CLIENT_ID: 'my-kafka-client-id', KAFKA_BROKER_URLS: process.env.KAFKA_BROKER_URLS, KAFKA_USERNAME: process.env.KAFKA_USERNAME, KAFKA_PASSWORD: process.env.KAFKA_PASSWORD, } }); console.log('destination',destination) expect(destination).toBeDefined(); }); it('Should create a Rutter source', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createSource<"rutter">(client, { type: 'rutter', group: `my-rutter-${makeId(4)}`, label: `Rutter - ${makeId(4)}` }); console.log(source); expect(source.frontend.spec.type).toBe("rutter"); }); it('Should create an Microsort SQL Server Destination', async () => { const client = createClient( process.env.BUILDABLE_SECRET_KEY as ValidAccessKey, { baseUrl: process.env.EVENT_INC_API_BASE_URL } ); const source = await createDestination<"mssql">(client, { type: 'mssql', group: `my-mssql-${makeId(4)}`, label: `Microsoft SQL Server - ${makeId(4)}`, config: { MSSQL_DATABASE: process.env.MSSQL_DATABASE, MSSQL_HOST: process.env.MSSQL_HOST, MSSQL_PASSWORD: process.env.MSSQL_PASSWORD, MSSQL_PORT: process.env.MSSQL_PORT, MSSQL_USERNAME: process.env.MSSQL_USERNAME, } }); console.log(source); expect(source.frontend.spec.type).toBe("mssql"); }); });