mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-04 06:28:47 +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>
119 lines
3.1 KiB
Ruby
119 lines
3.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class AdminApiKeys < PageObjects::Pages::Base
|
|
def visit_page
|
|
page.visit "/admin/api/keys"
|
|
self
|
|
end
|
|
|
|
def has_api_key_listed?(name)
|
|
page.has_css?(table_selector, text: name)
|
|
end
|
|
|
|
def has_revoked_api_key_listed?(name)
|
|
row = page.find(table_selector, text: name)
|
|
row.has_css?(badge_selector, text: I18n.t("admin_js.admin.api_keys.revoked"))
|
|
end
|
|
|
|
def has_unrevoked_api_key_listed?(name)
|
|
row = page.find(table_selector, text: name)
|
|
row.has_no_css?(badge_selector, text: I18n.t("admin_js.admin.api_keys.revoked"))
|
|
end
|
|
|
|
def has_no_api_key_listed?(name)
|
|
page.has_no_css?(table_selector, text: name)
|
|
end
|
|
|
|
def has_generated_api_key?
|
|
page.has_css?(".generated-api-key")
|
|
end
|
|
|
|
def has_copy_button?
|
|
page.has_css?(".generated-api-key__copy-btn")
|
|
end
|
|
|
|
def click_copy_key
|
|
page.find(".generated-api-key__copy-btn").click
|
|
end
|
|
|
|
def add_api_key(description:)
|
|
page.find(header_actions_selector, text: I18n.t("admin_js.admin.api_keys.add")).click
|
|
|
|
form = page.find(".form-kit")
|
|
form.find(description_field_selector).fill_in(with: description)
|
|
form.find(".save").click
|
|
end
|
|
|
|
def click_continue
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.continue")).click
|
|
end
|
|
|
|
def click_edit(description)
|
|
row = page.find(row_selector, text: description)
|
|
row.find("button", text: I18n.t("admin_js.admin.api_keys.edit")).click
|
|
end
|
|
|
|
def click_revoke
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.revoke")).click
|
|
end
|
|
|
|
def click_unrevoke
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.undo_revoke")).click
|
|
end
|
|
|
|
def click_delete
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.delete")).click
|
|
end
|
|
|
|
def edit_description(new_description)
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.edit")).click
|
|
page.find(description_field_selector).fill_in(with: new_description)
|
|
page.find("button", text: I18n.t("admin_js.admin.api_keys.save")).click
|
|
end
|
|
|
|
def click_back
|
|
page.find("a.back-button").click
|
|
end
|
|
|
|
def has_warning_banner?
|
|
page.has_css?(".generated-api-key-container .alert.alert-warning")
|
|
end
|
|
|
|
def has_scopes_displayed?
|
|
page.has_css?(scopes_table_selector)
|
|
end
|
|
|
|
def has_scope?(resource:, action:)
|
|
page.has_css?("#{scopes_table_selector} tr", text: /#{resource}.*#{action}/i)
|
|
end
|
|
|
|
private
|
|
|
|
def table_selector
|
|
".admin-api_keys__items"
|
|
end
|
|
|
|
def row_selector
|
|
".d-table__row"
|
|
end
|
|
|
|
def badge_selector
|
|
".status-label"
|
|
end
|
|
|
|
def header_actions_selector
|
|
".d-page-header__actions"
|
|
end
|
|
|
|
def description_field_selector
|
|
"input[name='description']"
|
|
end
|
|
|
|
def scopes_table_selector
|
|
".scopes-table"
|
|
end
|
|
end
|
|
end
|
|
end
|