diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index a4a90204ca867..06a58d4b8a890 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -56,25 +56,85 @@ export class ConnectionType { */ public static readonly CUSTOM = new ConnectionType('CUSTOM'); + /** + * Designates a connection to Adobe Analytics. + */ + public static readonly ADOBE_ANALYTICS = new ConnectionType('ADOBEANALYTICS'); + + /** + * Designates a connection to Asana. + */ + public static readonly ASANA = new ConnectionType('ASANA'); + + /** + * Designates a connection to Blackbaud Raiser's Edge NXT. + */ + public static readonly BLACKBAUD_RAISERS_EDGE_NXT = new ConnectionType('BLACKBAUDRAISEREDGENXT'); + + /** + * Designates a connection to CircleCI. + */ + public static readonly CIRCLE_CI = new ConnectionType('CIRCLECI'); + + /** + * Designates a connection to Datadog. + */ + public static readonly DATADOG = new ConnectionType('DATADOG'); + + /** + * Designates a connection to DocuSign Monitor. + */ + public static readonly DOCUSIGN_MONITOR = new ConnectionType('DOCUSIGNMONITOR'); + + /** + * Designates a connection to Dynatrace. + */ + public static readonly DYNATRACE = new ConnectionType('DYNATRACE'); + /** * Designates a connection to Facebook Ads. */ - public static readonly FACEBOOKADS = new ConnectionType('FACEBOOKADS'); + public static readonly FACEBOOK_ADS = new ConnectionType('FACEBOOKADS'); /** - * Designates a connection to Google Ads. + * Designates a connection to Facebook Page Insights. */ - public static readonly GOOGLEADS = new ConnectionType('GOOGLEADS'); + public static readonly FACEBOOK_PAGE_INSIGHTS = new ConnectionType('FACEBOOKPAGEINSIGHTS'); /** - * Designates a connection to Google Sheets. + * Designates a connection to Freshdesk. */ - public static readonly GOOGLESHEETS = new ConnectionType('GOOGLESHEETS'); + public static readonly FRESHDESK = new ConnectionType('FRESHDESK'); + + /** + * Designates a connection to Freshsales. + */ + public static readonly FRESHSALES = new ConnectionType('FRESHSALES'); + + /** + * Designates a connection to GitLab. + */ + public static readonly GITLAB = new ConnectionType('GITLAB'); + + /** + * Designates a connection to Google Ads. + */ + public static readonly GOOGLE_ADS = new ConnectionType('GOOGLEADS'); /** * Designates a connection to Google Analytics 4. */ - public static readonly GOOGLEANALYTICS4 = new ConnectionType('GOOGLEANALYTICS4'); + public static readonly GOOGLE_ANALYTICS_4 = new ConnectionType('GOOGLEANALYTICS4'); + + /** + * Designates a connection to Google Search Console. + */ + public static readonly GOOGLE_SEARCH_CONSOLE = new ConnectionType('GOOGLESEARCHCONSOLE'); + + /** + * Designates a connection to Google Sheets. + */ + public static readonly GOOGLE_SHEETS = new ConnectionType('GOOGLESHEETS'); /** * Designates a connection to HubSpot. @@ -84,7 +144,7 @@ export class ConnectionType { /** * Designates a connection to Instagram Ads. */ - public static readonly INSTAGRAMADS = new ConnectionType('INSTAGRAMADS'); + public static readonly INSTAGRAM_ADS = new ConnectionType('INSTAGRAMADS'); /** * Designates a connection to Intercom. @@ -94,37 +154,102 @@ export class ConnectionType { /** * Designates a connection to Jira Cloud. */ - public static readonly JIRACLOUD = new ConnectionType('JIRACLOUD'); + public static readonly JIRA_CLOUD = new ConnectionType('JIRACLOUD'); + + /** + * Designates a connection to LinkedIn. + */ + public static readonly LINKEDIN = new ConnectionType('LINKEDIN'); + + /** + * Designates a connection to Mailchimp. + */ + public static readonly MAILCHIMP = new ConnectionType('MAILCHIMP'); /** * Designates a connection to Adobe Marketo Engage. */ public static readonly MARKETO = new ConnectionType('MARKETO'); + /** + * Designates a connection to Microsoft Dynamics 365 Finance and Operations. + */ + public static readonly MICROSOFT_DYNAMIC_365_FINANCE_AND_OPS = new ConnectionType('MICROSOFTDYNAMIC365FINANCEANDOPS'); + + /** + * Designates a connection to Microsoft Teams. + */ + public static readonly MICROSOFT_TEAMS = new ConnectionType('MICROSOFTTEAMS'); + + /** + * Designates a connection to Mixpanel. + */ + public static readonly MIXPANEL = new ConnectionType('MIXPANEL'); + /** * Designates a connection to Oracle NetSuite. */ - public static readonly NETSUITEERP = new ConnectionType('NETSUITEERP'); + public static readonly NETSUITE_ERP = new ConnectionType('NETSUITEERP'); + + /** + * Designates a connection to PayPal. + */ + public static readonly PAYPAL = new ConnectionType('PAYPAL'); + + /** + * Designates a connection to Pendo. + */ + public static readonly PENDO = new ConnectionType('PENDO'); + + /** + * Designates a connection to Pipedrive. + */ + public static readonly PIPEDRIVE = new ConnectionType('PIPEDRIVE'); + + /** + * Designates a connection to Productboard. + */ + public static readonly PRODUCTBOARD = new ConnectionType('PRODUCTBOARD'); + + /** + * Designates a connection to QuickBooks. + */ + public static readonly QUICKBOOKS = new ConnectionType('QUICKBOOKS'); /** * Designates a connection to Salesforce using OAuth authentication. */ public static readonly SALESFORCE = new ConnectionType('SALESFORCE'); + /** + * Designates a connection to Salesforce Commerce Cloud. + */ + public static readonly SALESFORCE_COMMERCE_CLOUD = new ConnectionType('SALESFORCECOMMERCECLOUD'); + /** * Designates a connection to Salesforce Marketing Cloud. */ - public static readonly SALESFORCEMARKETINGCLOUD = new ConnectionType('SALESFORCEMARKETINGCLOUD'); + public static readonly SALESFORCE_MARKETING_CLOUD = new ConnectionType('SALESFORCEMARKETINGCLOUD'); /** * Designates a connection to Salesforce Marketing Cloud Account Engagement (MCAE). */ - public static readonly SALESFORCEPARDOT = new ConnectionType('SALESFORCEPARDOT'); + public static readonly SALESFORCE_PARDOT = new ConnectionType('SALESFORCEPARDOT'); + + /** + * Designates a connection to SAP Concur. + */ + public static readonly SAP_CONCUR = new ConnectionType('SAPCONCUR'); /** * Designates a connection to SAP OData. */ - public static readonly SAPODATA = new ConnectionType('SAPODATA'); + public static readonly SAP_ODATA = new ConnectionType('SAPODATA'); + + /** + * Designates a connection to SendGrid. + */ + public static readonly SENDGRID = new ConnectionType('SENDGRID'); /** * Designates a connection to ServiceNow. @@ -136,16 +261,36 @@ export class ConnectionType { */ public static readonly SLACK = new ConnectionType('SLACK'); + /** + * Designates a connection to Smartsheet. + */ + public static readonly SMARTSHEET = new ConnectionType('SMARTSHEET'); + + /** + * Designates a connection to Snowflake. + */ + public static readonly SNOWFLAKE = new ConnectionType('SNOWFLAKE'); + /** * Designates a connection to Snapchat Ads. */ - public static readonly SNAPCHATADS = new ConnectionType('SNAPCHATADS'); + public static readonly SNAPCHAT_ADS = new ConnectionType('SNAPCHATADS'); /** * Designates a connection to Stripe. */ public static readonly STRIPE = new ConnectionType('STRIPE'); + /** + * Designates a connection to Twilio. + */ + public static readonly TWILIO = new ConnectionType('TWILIO'); + + /** + * Designates a connection to WooCommerce. + */ + public static readonly WOO_COMMERCE = new ConnectionType('WOOCOMMERCE'); + /** * Designates a connection to Zendesk. */ @@ -154,7 +299,12 @@ export class ConnectionType { /** * Designates a connection to Zoho CRM. */ - public static readonly ZOHOCRM = new ConnectionType('ZOHOCRM'); + public static readonly ZOHO_CRM = new ConnectionType('ZOHOCRM'); + + /** + * Designates a connection to Zoom. + */ + public static readonly ZOOM = new ConnectionType('ZOOM'); /** * The name of this ConnectionType, as expected by Connection resource. diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index bb274ca6a5a8f..9ae904158e24d 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -156,3 +156,537 @@ test('fromConnectionArn', () => { expect(connection.connectionName).toEqual('name'); expect(connection.connectionArn).toEqual(connectionArn); }); + +test('SNOWFLAKE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SNOWFLAKE, + properties: { + JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + CatalogId: { + Ref: 'AWS::AccountId', + }, + ConnectionInput: { + ConnectionType: 'SNOWFLAKE', + ConnectionProperties: { + JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }, + }); +}); + +test('additional connection types', () => { + const stack = new cdk.Stack(); + + // Test a few representative new connection types + new glue.Connection(stack, 'GitLabConnection', { + type: glue.ConnectionType.GITLAB, + properties: { + CONNECTION_URL: 'https://gitlab.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + new glue.Connection(stack, 'MailchimpConnection', { + type: glue.ConnectionType.MAILCHIMP, + properties: { + CONNECTION_URL: 'https://mailchimp.com', + API_KEY: 'api-key', + }, + }); + + new glue.Connection(stack, 'PayPalConnection', { + type: glue.ConnectionType.PAYPAL, + properties: { + CONNECTION_URL: 'https://api.paypal.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'GITLAB', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MAILCHIMP', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PAYPAL', + }, + }); +}); +// Comprehensive tests for all SaaS connector connection types based on CloudFormation documentation +describe('SaaS connector connection types', () => { + test('ADOBEANALYTICS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ADOBE_ANALYTICS, + properties: { + CONNECTION_URL: 'https://analytics.adobe.io', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ADOBEANALYTICS', + }, + }); + }); + + test('ASANA connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ASANA, + properties: { + CONNECTION_URL: 'https://app.asana.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ASANA', + }, + }); + }); + + test('BLACKBAUDRAISEREDGENXT connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.BLACKBAUD_RAISERS_EDGE_NXT, + properties: { + CONNECTION_URL: 'https://api.blackbaud.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'BLACKBAUDRAISEREDGENXT', + }, + }); + }); + + test('CIRCLECI connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.CIRCLE_CI, + properties: { + CONNECTION_URL: 'https://circleci.com/api', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'CIRCLECI', + }, + }); + }); + + test('DATADOG connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DATADOG, + properties: { + CONNECTION_URL: 'https://api.datadoghq.com', + API_KEY: 'api-key', + APPLICATION_KEY: 'app-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DATADOG', + }, + }); + }); + + test('DOCUSIGNMONITOR connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DOCUSIGN_MONITOR, + properties: { + CONNECTION_URL: 'https://monitor.docusign.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DOCUSIGNMONITOR', + }, + }); + }); + + test('DYNATRACE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DYNATRACE, + properties: { + CONNECTION_URL: 'https://environment.dynatrace.com', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DYNATRACE', + }, + }); + }); + + test('FACEBOOKPAGEINSIGHTS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FACEBOOK_PAGE_INSIGHTS, + properties: { + CONNECTION_URL: 'https://graph.facebook.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FACEBOOKPAGEINSIGHTS', + }, + }); + }); + + test('FRESHDESK connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FRESHDESK, + properties: { + CONNECTION_URL: 'https://domain.freshdesk.com', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FRESHDESK', + }, + }); + }); + + test('FRESHSALES connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FRESHSALES, + properties: { + CONNECTION_URL: 'https://domain.freshsales.io', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FRESHSALES', + }, + }); + }); + + test('GOOGLESEARCHCONSOLE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.GOOGLE_SEARCH_CONSOLE, + properties: { + CONNECTION_URL: 'https://searchconsole.googleapis.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'GOOGLESEARCHCONSOLE', + }, + }); + }); + + test('LINKEDIN connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.LINKEDIN, + properties: { + CONNECTION_URL: 'https://api.linkedin.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'LINKEDIN', + }, + }); + }); + + test('MICROSOFTDYNAMIC365FINANCEANDOPS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MICROSOFT_DYNAMIC_365_FINANCE_AND_OPS, + properties: { + CONNECTION_URL: 'https://tenant.operations.dynamics.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MICROSOFTDYNAMIC365FINANCEANDOPS', + }, + }); + }); + + test('MICROSOFTTEAMS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MICROSOFT_TEAMS, + properties: { + CONNECTION_URL: 'https://graph.microsoft.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MICROSOFTTEAMS', + }, + }); + }); + + test('MIXPANEL connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MIXPANEL, + properties: { + CONNECTION_URL: 'https://mixpanel.com/api', + USERNAME: 'username', + SECRET: 'secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MIXPANEL', + }, + }); + }); + + test('PENDO connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PENDO, + properties: { + CONNECTION_URL: 'https://app.pendo.io', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PENDO', + }, + }); + }); + + test('PIPEDRIVE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PIPEDRIVE, + properties: { + CONNECTION_URL: 'https://api.pipedrive.com', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PIPEDRIVE', + }, + }); + }); + + test('PRODUCTBOARD connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PRODUCTBOARD, + properties: { + CONNECTION_URL: 'https://api.productboard.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PRODUCTBOARD', + }, + }); + }); + + test('QUICKBOOKS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.QUICKBOOKS, + properties: { + CONNECTION_URL: 'https://sandbox-quickbooks.api.intuit.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'QUICKBOOKS', + }, + }); + }); + + test('SALESFORCECOMMERCECLOUD connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SALESFORCE_COMMERCE_CLOUD, + properties: { + CONNECTION_URL: 'https://instance.demandware.net', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SALESFORCECOMMERCECLOUD', + }, + }); + }); + + test('SAPCONCUR connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SAP_CONCUR, + properties: { + CONNECTION_URL: 'https://us.api.concursolutions.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SAPCONCUR', + }, + }); + }); + + test('SENDGRID connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SENDGRID, + properties: { + CONNECTION_URL: 'https://api.sendgrid.com', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SENDGRID', + }, + }); + }); + + test('SMARTSHEET connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SMARTSHEET, + properties: { + CONNECTION_URL: 'https://api.smartsheet.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SMARTSHEET', + }, + }); + }); + + test('TWILIO connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.TWILIO, + properties: { + CONNECTION_URL: 'https://api.twilio.com', + ACCOUNT_SID: 'account-sid', + AUTH_TOKEN: 'auth-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'TWILIO', + }, + }); + }); + + test('WOOCOMMERCE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.WOO_COMMERCE, + properties: { + CONNECTION_URL: 'https://yourstore.com/wp-json/wc/v3', + CONSUMER_KEY: 'consumer-key', + CONSUMER_SECRET: 'consumer-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'WOOCOMMERCE', + }, + }); + }); + + test('ZOOM connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ZOOM, + properties: { + CONNECTION_URL: 'https://api.zoom.us', + API_KEY: 'api-key', + API_SECRET: 'api-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ZOOM', + }, + }); + }); +});