From d35ba63360197e525b8320d1ad56584be8719973 Mon Sep 17 00:00:00 2001
From: Michelle Bergquist <11967646+michellescripts@users.noreply.github.com>
Date: Tue, 17 Dec 2024 14:36:40 -0700
Subject: [PATCH 1/6] Navigate to aws status dash from integrations list
(#49847)
---
.../src/Integrations/IntegrationList.test.tsx | 64 +++++++++++++++++++
.../src/Integrations/IntegrationList.tsx | 29 ++++++---
web/packages/teleport/src/config.ts | 14 ++--
3 files changed, 92 insertions(+), 15 deletions(-)
create mode 100644 web/packages/teleport/src/Integrations/IntegrationList.test.tsx
diff --git a/web/packages/teleport/src/Integrations/IntegrationList.test.tsx b/web/packages/teleport/src/Integrations/IntegrationList.test.tsx
new file mode 100644
index 0000000000000..3012e356a4788
--- /dev/null
+++ b/web/packages/teleport/src/Integrations/IntegrationList.test.tsx
@@ -0,0 +1,64 @@
+/**
+ * Teleport
+ * Copyright (C) 2023 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import { fireEvent, render, screen, userEvent } from 'design/utils/testing';
+
+import { Router } from 'react-router';
+
+import { createMemoryHistory } from 'history';
+
+import { IntegrationList } from 'teleport/Integrations/IntegrationList';
+import {
+ IntegrationKind,
+ IntegrationStatusCode,
+} from 'teleport/services/integrations';
+
+test('integration list shows edit and view action menu for aws-oidc, row click navigates', async () => {
+ const history = createMemoryHistory();
+ history.push = jest.fn();
+
+ render(
+
+
+
+ );
+
+ fireEvent.click(screen.getByRole('button', { name: 'Options' }));
+ expect(screen.getByText('View Status')).toBeInTheDocument();
+ expect(screen.getByText('View Status')).toHaveAttribute(
+ 'href',
+ '/web/integrations/status/aws-oidc/aws-integration'
+ );
+ expect(screen.getByText('Edit...')).toBeInTheDocument();
+ expect(screen.getByText('Delete...')).toBeInTheDocument();
+
+ await userEvent.click(screen.getAllByRole('row')[1]);
+ expect(history.push).toHaveBeenCalledWith(
+ '/web/integrations/status/aws-oidc/aws-integration'
+ );
+});
diff --git a/web/packages/teleport/src/Integrations/IntegrationList.tsx b/web/packages/teleport/src/Integrations/IntegrationList.tsx
index 8e3e41526ac77..a7eadd708a7e1 100644
--- a/web/packages/teleport/src/Integrations/IntegrationList.tsx
+++ b/web/packages/teleport/src/Integrations/IntegrationList.tsx
@@ -66,7 +66,7 @@ export function IntegrationList(props: Props) {
const history = useHistory();
function handleRowClick(row: IntegrationLike) {
- if (row.kind !== 'okta') return;
+ if (row.kind !== 'okta' && row.kind !== IntegrationKind.AwsOidc) return;
history.push(cfg.getIntegrationStatusRoute(row.kind, row.name));
}
@@ -154,15 +154,26 @@ export function IntegrationList(props: Props) {
return (
- {/* Currently, only AWSOIDC supports editing. */}
+ {/* Currently, only AWS OIDC supports editing & status dash */}
{item.kind === IntegrationKind.AwsOidc && (
-
+ <>
+
+
+ >
)}
|