diff --git a/web/packages/teleport/src/DeviceTrust/EmptyList.tsx b/web/packages/teleport/src/DeviceTrust/EmptyList.tsx index 294220e61eb75..b34d193e6de22 100644 --- a/web/packages/teleport/src/DeviceTrust/EmptyList.tsx +++ b/web/packages/teleport/src/DeviceTrust/EmptyList.tsx @@ -22,12 +22,12 @@ import styled from 'styled-components'; import { Box, + ButtonPrimary, ButtonSecondary, Flex, H1, H2, H3, - MenuItem, P1, P2, ResourceIcon, @@ -46,7 +46,6 @@ import { FeatureContainer, FeatureSlider, } from 'shared/components/EmptyState/EmptyState'; -import { MenuButton } from 'shared/components/MenuAction'; import { pluralize } from 'shared/utils/text'; import { @@ -199,26 +198,14 @@ export const EmptyList = ({ > {isEnterprise ? ( <> - - - Jamf Pro - - - Microsoft Intune - - + Get Started with an MDM + { +test('getDeployServiceIamConfigureScriptPath formatting', () => { const params: UrlDeployServiceIamConfigureScriptParams = { integrationName: 'int-name', region: 'us-east-1', @@ -40,7 +41,7 @@ test('getDeployServiceIamConfigureScriptPath formatting', async () => { ); }); -test('getAwsOidcConfigureIdpScriptUrl formatting, without s3 fields', async () => { +test('getAwsOidcConfigureIdpScriptUrl formatting, without s3 fields', () => { const params: UrlAwsOidcConfigureIdp = { integrationName: 'int-name', roleName: 'role-arn', @@ -54,7 +55,7 @@ test('getAwsOidcConfigureIdpScriptUrl formatting, without s3 fields', async () = ); }); -test('getAwsIamConfigureScriptAppAccessUrl formatting', async () => { +test('getAwsIamConfigureScriptAppAccessUrl formatting', () => { const params: Omit = { iamRoleName: 'role-arn', accountID: '123456789012', @@ -66,3 +67,15 @@ test('getAwsIamConfigureScriptAppAccessUrl formatting', async () => { `${base}${expected}` ); }); + +test('getIntegrationsEnroll appends tags', () => { + const tags: IntegrationTag[] = ['devicetrust', 'idp']; + const url = new URL( + 'https://example.com' + cfg.getIntegrationsEnrollRoute({ tags }) + ); + expect(url.searchParams.getAll('tags')).toEqual(tags); +}); + +test('getIntegrationsEnroll without extra params', () => { + expect(cfg.getIntegrationsEnrollRoute()).toEqual('/web/integrations/new'); +}); diff --git a/web/packages/teleport/src/config.ts b/web/packages/teleport/src/config.ts index 2b58ebf08a11f..3937504eb7df9 100644 --- a/web/packages/teleport/src/config.ts +++ b/web/packages/teleport/src/config.ts @@ -45,6 +45,7 @@ import type { YamlSupportedResourceKind } from 'teleport/services/yaml/types'; import { defaultEntitlements } from './entitlement'; import generateResourcePath from './generateResourcePath'; +import { IntegrationTag } from './Integrations/Enroll/Shared'; import type { MfaChallengeResponse } from './services/mfa'; import { KindAuthConnectors } from './services/resources'; @@ -683,6 +684,29 @@ const cfg = { return generatePath(cfg.routes.audit, { clusterId }); }, + /** + * getIntegrationsEnrollRoute returns a path to the page which lists all integrations. + */ + getIntegrationsEnrollRoute({ + tags = [], + searchFilter = '', + }: { + tags?: IntegrationTag[]; + searchFilter?: string; + } = {}) { + const searchParams = new URLSearchParams(); + tags.forEach(tag => { + searchParams.append('tags', tag); + }); + if (searchFilter) { + searchParams.set('search', searchFilter); + } + const queryString = searchParams.toString(); + const path = generatePath(cfg.routes.integrationEnroll); + + return queryString ? `${path}?${queryString}` : path; + }, + /** * Generates a route for an Integration's enrolment page *