mirror of
https://github.com/discourse/discourse.git
synced 2026-03-03 23:54:20 +08:00
<img width="1248" height="656" alt="image" src="https://github.com/user-attachments/assets/fa482c37-0107-4382-aa28-1a5a39d0370a" /> --------- Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
85 lines
2.4 KiB
Ruby
85 lines
2.4 KiB
Ruby
#frozen_string_literal: true
|
|
|
|
describe "Admin API Keys Page", type: :system do
|
|
fab!(:current_user, :admin)
|
|
|
|
let(:api_keys_page) { PageObjects::Pages::AdminApiKeys.new }
|
|
let(:dialog) { PageObjects::Components::Dialog.new }
|
|
|
|
before do
|
|
Fabricate(:api_key, description: "Integration")
|
|
|
|
sign_in(current_user)
|
|
end
|
|
|
|
it "shows a list of API keys" do
|
|
api_keys_page.visit_page
|
|
|
|
expect(api_keys_page).to have_api_key_listed("Integration")
|
|
end
|
|
|
|
it "can add a new API key" do
|
|
api_keys_page.visit_page
|
|
api_keys_page.add_api_key(description: "Second Integration")
|
|
|
|
expect(api_keys_page).to have_generated_api_key
|
|
expect(api_keys_page).to have_copy_button
|
|
expect(api_keys_page).to have_warning_banner
|
|
|
|
api_keys_page.click_continue
|
|
|
|
expect(api_keys_page).to have_api_key_listed("Second Integration")
|
|
end
|
|
|
|
it "can edit existing API keys" do
|
|
api_keys_page.visit_page
|
|
api_keys_page.click_edit("Integration")
|
|
api_keys_page.edit_description("Old Integration")
|
|
api_keys_page.click_back
|
|
|
|
expect(api_keys_page).to have_api_key_listed("Old Integration")
|
|
end
|
|
|
|
it "can revoke API keys" do
|
|
api_keys_page.visit_page
|
|
api_keys_page.click_edit("Integration")
|
|
api_keys_page.click_revoke
|
|
api_keys_page.click_back
|
|
|
|
expect(api_keys_page).to have_revoked_api_key_listed("Integration")
|
|
end
|
|
|
|
it "can undo revocation of API keys" do
|
|
api_keys_page.visit_page
|
|
api_keys_page.click_edit("Integration")
|
|
api_keys_page.click_revoke
|
|
api_keys_page.click_unrevoke
|
|
api_keys_page.click_back
|
|
|
|
expect(api_keys_page).to have_unrevoked_api_key_listed("Integration")
|
|
end
|
|
|
|
it "can permanently delete revoked API keys" do
|
|
api_keys_page.visit_page
|
|
api_keys_page.click_edit("Integration")
|
|
api_keys_page.click_revoke
|
|
api_keys_page.click_delete
|
|
|
|
expect(api_keys_page).to have_current_path("/admin/api/keys")
|
|
expect(api_keys_page).to have_no_api_key_listed("Integration")
|
|
end
|
|
|
|
it "displays scopes when viewing a granular API key from the list" do
|
|
Fabricate(
|
|
:api_key,
|
|
description: "Granular Key",
|
|
api_key_scopes: [Fabricate.build(:api_key_scope, resource: "topics", action: "read")],
|
|
)
|
|
|
|
api_keys_page.visit_page
|
|
api_keys_page.click_edit("Granular Key")
|
|
|
|
expect(api_keys_page).to have_scopes_displayed
|
|
expect(api_keys_page).to have_scope(resource: "topics", action: "read")
|
|
end
|
|
end
|