2024-07-30 13:41:28 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
RSpec.describe Admin::SiteSettingsController do
|
|
|
|
fab!(:admin)
|
|
|
|
fab!(:user)
|
|
|
|
|
|
|
|
describe "#index" do
|
|
|
|
context "when not logged in" do
|
|
|
|
it "returns 404" do
|
|
|
|
get "/admin/config/site_settings.json"
|
|
|
|
expect(response.status).to eq(404)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when not admin" do
|
|
|
|
before { sign_in(user) }
|
|
|
|
|
|
|
|
it "returns 404" do
|
|
|
|
get "/admin/config/site_settings.json"
|
|
|
|
expect(response.status).to eq(404)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when logged in as admin" do
|
|
|
|
before { sign_in(admin) }
|
|
|
|
|
|
|
|
it "returns 400 when no filter_names are provided" do
|
|
|
|
get "/admin/config/site_settings.json"
|
|
|
|
expect(response.status).to eq(400)
|
|
|
|
end
|
|
|
|
|
2024-09-03 07:25:45 +08:00
|
|
|
it "returns 400 when no filter_area is invalid" do
|
|
|
|
get "/admin/config/site_settings.json", params: { filter_area: "invalid area" }
|
|
|
|
expect(response.status).to eq(400)
|
|
|
|
end
|
|
|
|
|
2024-07-30 13:41:28 +08:00
|
|
|
it "includes only certain allowed hidden settings" do
|
|
|
|
get "/admin/config/site_settings.json",
|
|
|
|
params: {
|
|
|
|
filter_names: [
|
|
|
|
Admin::Config::SiteSettingsController::ADMIN_CONFIG_AREA_ALLOWLISTED_HIDDEN_SETTINGS,
|
|
|
|
],
|
|
|
|
}
|
|
|
|
expect(
|
|
|
|
response.parsed_body["site_settings"].find do |s|
|
|
|
|
s["setting"] ==
|
|
|
|
Admin::Config::SiteSettingsController::ADMIN_CONFIG_AREA_ALLOWLISTED_HIDDEN_SETTINGS.first.to_s
|
|
|
|
end,
|
|
|
|
).to be_present
|
|
|
|
get "/admin/config/site_settings.json", params: { filter_names: ["set_locale_from_cookie"] }
|
|
|
|
expect(
|
|
|
|
response.parsed_body["site_settings"].find do |s|
|
|
|
|
s["setting"] == "set_locale_from_cookie"
|
|
|
|
end,
|
|
|
|
).to be_nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns site settings by exact name" do
|
|
|
|
get "/admin/config/site_settings.json",
|
|
|
|
params: {
|
|
|
|
filter_names: %w[site_description enforce_second_factor],
|
|
|
|
}
|
|
|
|
expect(response.status).to eq(200)
|
|
|
|
expect(response.parsed_body["site_settings"].map { |s| s["setting"] }).to match_array(
|
|
|
|
%w[site_description enforce_second_factor],
|
|
|
|
)
|
|
|
|
end
|
2024-09-03 07:25:45 +08:00
|
|
|
|
|
|
|
it "returns site settings by area" do
|
|
|
|
get "/admin/config/site_settings.json", params: { filter_area: "flags" }
|
|
|
|
expect(response.status).to eq(200)
|
|
|
|
expect(response.parsed_body["site_settings"].map { |s| s["setting"] }).to match_array(
|
|
|
|
%w[
|
|
|
|
silence_new_user_sensitivity
|
|
|
|
num_users_to_silence_new_user
|
|
|
|
flag_sockpuppets
|
|
|
|
num_flaggers_to_close_topic
|
|
|
|
auto_respond_to_flag_actions
|
|
|
|
high_trust_flaggers_auto_hide_posts
|
|
|
|
max_flags_per_day
|
|
|
|
tl2_additional_flags_per_day_multiplier
|
|
|
|
tl3_additional_flags_per_day_multiplier
|
|
|
|
tl4_additional_flags_per_day_multiplier
|
|
|
|
],
|
|
|
|
)
|
|
|
|
end
|
2024-07-30 13:41:28 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|