mirror of
https://github.com/sissbruecker/linkding.git
synced 2026-03-07 02:13:12 +08:00
API token management (#1248)
This commit is contained in:
67
bookmarks/tests_e2e/e2e_test_settings_integrations.py
Normal file
67
bookmarks/tests_e2e/e2e_test_settings_integrations.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from django.urls import reverse
|
||||
from playwright.sync_api import sync_playwright, expect
|
||||
|
||||
from bookmarks.tests_e2e.helpers import LinkdingE2ETestCase
|
||||
|
||||
|
||||
class SettingsIntegrationsE2ETestCase(LinkdingE2ETestCase):
|
||||
def test_create_api_token(self):
|
||||
with sync_playwright() as p:
|
||||
self.open(reverse("linkding:settings.integrations"), p)
|
||||
|
||||
# Click create API token button
|
||||
self.page.get_by_text("Create API token").click()
|
||||
|
||||
# Wait for modal to appear
|
||||
modal = self.page.locator(".modal")
|
||||
expect(modal).to_be_visible()
|
||||
|
||||
# Enter custom token name
|
||||
token_name_input = modal.locator("#token-name")
|
||||
token_name_input.fill("")
|
||||
token_name_input.fill("My Test Token")
|
||||
|
||||
# Confirm the dialog
|
||||
modal.page.get_by_role("button", name="Create Token").click()
|
||||
|
||||
# Verify the API token key is shown in the input
|
||||
new_token_input = self.page.locator("#new-token-key")
|
||||
expect(new_token_input).to_be_visible()
|
||||
token_value = new_token_input.input_value()
|
||||
self.assertTrue(len(token_value) > 0)
|
||||
|
||||
# Verify the API token is now listed in the table
|
||||
token_table = self.page.locator("table.crud-table")
|
||||
expect(token_table).to_be_visible()
|
||||
expect(token_table.get_by_text("My Test Token")).to_be_visible()
|
||||
|
||||
# Verify the dialog is gone
|
||||
expect(modal).to_be_hidden()
|
||||
|
||||
# Reload the page to verify the API token key is only shown once
|
||||
self.page.reload()
|
||||
|
||||
# Token key input should no longer be visible
|
||||
expect(new_token_input).not_to_be_visible()
|
||||
|
||||
# But the token should still be listed in the table
|
||||
expect(token_table.get_by_text("My Test Token")).to_be_visible()
|
||||
|
||||
def test_delete_api_token(self):
|
||||
self.setup_api_token(name="Token To Delete")
|
||||
|
||||
with sync_playwright() as p:
|
||||
self.open(reverse("linkding:settings.integrations"), p)
|
||||
|
||||
token_table = self.page.locator("table.crud-table")
|
||||
expect(token_table.get_by_text("Token To Delete")).to_be_visible()
|
||||
|
||||
# Click delete button for the token
|
||||
token_row = token_table.locator("tr").filter(has_text="Token To Delete")
|
||||
token_row.get_by_role("button", name="Delete").click()
|
||||
|
||||
# Confirm deletion
|
||||
self.locate_confirm_dialog().get_by_text("Confirm").click()
|
||||
|
||||
# Verify the token is removed from the table
|
||||
expect(token_table.get_by_text("Token To Delete")).not_to_be_visible()
|
||||
Reference in New Issue
Block a user