mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-12 16:48:06 -05:00
Compare commits
3 Commits
update-ins
...
codex/upda
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f4d0d8ee9 | ||
|
|
0c09b0c459 | ||
|
|
1105e6c0d2 |
@@ -1071,7 +1071,6 @@ async def get_api_key(
|
||||
tags=["api-keys"],
|
||||
dependencies=[Depends(auth_middleware)],
|
||||
)
|
||||
@feature_flag("api-keys-enabled")
|
||||
async def delete_api_key(
|
||||
key_id: str, user_id: Annotated[str, Depends(get_user_id)]
|
||||
) -> Optional[APIKeyWithoutHash]:
|
||||
@@ -1100,7 +1099,6 @@ async def delete_api_key(
|
||||
tags=["api-keys"],
|
||||
dependencies=[Depends(auth_middleware)],
|
||||
)
|
||||
@feature_flag("api-keys-enabled")
|
||||
async def suspend_key(
|
||||
key_id: str, user_id: Annotated[str, Depends(get_user_id)]
|
||||
) -> Optional[APIKeyWithoutHash]:
|
||||
@@ -1126,7 +1124,6 @@ async def suspend_key(
|
||||
tags=["api-keys"],
|
||||
dependencies=[Depends(auth_middleware)],
|
||||
)
|
||||
@feature_flag("api-keys-enabled")
|
||||
async def update_permissions(
|
||||
key_id: str,
|
||||
request: UpdatePermissionsRequest,
|
||||
|
||||
@@ -44,9 +44,9 @@ export function APIKeysSection() {
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{apiKeys.map((key) => (
|
||||
<TableRow key={key.id}>
|
||||
<TableRow key={key.id} data-testid="api-key-row">
|
||||
<TableCell>{key.name}</TableCell>
|
||||
<TableCell>
|
||||
<TableCell data-testid="api-key-id">
|
||||
<div className="rounded-md border p-1 px-2 text-xs">
|
||||
{`${key.prefix}******************${key.postfix}`}
|
||||
</div>
|
||||
@@ -76,7 +76,11 @@ export function APIKeysSection() {
|
||||
<TableCell>
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" size="sm">
|
||||
<Button
|
||||
data-testid="api-key-actions"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
>
|
||||
<MoreVertical className="h-4 w-4" />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
|
||||
@@ -28,6 +28,7 @@ export async function sendResetEmail(email: string, turnstileToken: string) {
|
||||
|
||||
const { error } = await supabase.auth.resetPasswordForEmail(email, {
|
||||
redirectTo: `${origin}/api/auth/callback/reset-password`,
|
||||
data: { title: "AutoGPT Reset Password" },
|
||||
});
|
||||
|
||||
if (error) {
|
||||
|
||||
64
autogpt_platform/frontend/src/tests/api-keys.spec.ts
Normal file
64
autogpt_platform/frontend/src/tests/api-keys.spec.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { LoginPage } from "./pages/login.page";
|
||||
import { TEST_CREDENTIALS } from "./credentials";
|
||||
import { hasUrl } from "./utils/assertion";
|
||||
import { getSelectors } from "./utils/selectors";
|
||||
|
||||
test.describe("API Keys Page", () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const loginPage = new LoginPage(page);
|
||||
await page.goto("/login");
|
||||
await loginPage.login(TEST_CREDENTIALS.email, TEST_CREDENTIALS.password);
|
||||
await hasUrl(page, "/marketplace");
|
||||
});
|
||||
|
||||
test("should redirect to login page when user is not authenticated", async ({
|
||||
browser,
|
||||
}) => {
|
||||
const context = await browser.newContext();
|
||||
const page = await context.newPage();
|
||||
|
||||
try {
|
||||
await page.goto("/profile/api_keys");
|
||||
await hasUrl(page, "/login");
|
||||
} finally {
|
||||
await page.close();
|
||||
await context.close();
|
||||
}
|
||||
});
|
||||
|
||||
test("should create a new API key successfully", async ({ page }) => {
|
||||
const { getButton, getField } = getSelectors(page);
|
||||
await page.goto("/profile/api_keys");
|
||||
await getButton("Create Key").click();
|
||||
|
||||
await getField("Name").fill("Test Key");
|
||||
await getButton("Create").click();
|
||||
|
||||
await expect(
|
||||
page.getByText("AutoGPT Platform API Key Created"),
|
||||
).toBeVisible();
|
||||
await getButton("Close").first().click();
|
||||
|
||||
await expect(page.getByText("Test Key").first()).toBeVisible();
|
||||
});
|
||||
|
||||
test("should revoke an existing API key", async ({ page }) => {
|
||||
const { getRole, getId } = getSelectors(page);
|
||||
await page.goto("/profile/api_keys");
|
||||
|
||||
const apiKeyRow = getId("api-key-row").first();
|
||||
const apiKeyContent = await apiKeyRow
|
||||
.getByTestId("api-key-id")
|
||||
.textContent();
|
||||
const apiKeyActions = apiKeyRow.getByTestId("api-key-actions").first();
|
||||
|
||||
await apiKeyActions.click();
|
||||
await getRole("menuitem", "Revoke").click();
|
||||
await expect(
|
||||
page.getByText("AutoGPT Platform API key revoked successfully"),
|
||||
).toBeVisible();
|
||||
|
||||
await expect(page.getByText(apiKeyContent!)).not.toBeVisible();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user