From ae58a7db950db1044f6ba7232bc93220b6721a2b Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Mon, 18 Nov 2013 13:44:55 -0500 Subject: [PATCH] Add a warning on dashboard if enforce_global_nicknames is checked, but access key is blank. --- .../stylesheets/common/admin/admin_base.scss | 3 ++ app/models/admin_dashboard_data.rb | 5 +++ config/locales/server.en.yml | 1 + spec/models/admin_dashboard_data_spec.rb | 42 ++++++++++++++----- 4 files changed, 41 insertions(+), 10 deletions(-) diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 8e8be069c6d..938ae07bc37 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -564,6 +564,9 @@ table.api-keys { .actions { text-align: right; } + .btn { + background-color: #ccc; + } } } diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index 65c3f18f780..63026537711 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -41,6 +41,7 @@ class AdminDashboardData access_password_removal, site_contact_username_check, notification_email_check, + enforce_global_nicknames_check ].compact end @@ -167,6 +168,10 @@ class AdminDashboardData I18n.t('dashboard.ruby_version_warning') if RUBY_VERSION == '2.0.0' and RUBY_PATCHLEVEL < 247 end + def enforce_global_nicknames_check + I18n.t('dashboard.enforce_global_nicknames_warning') if SiteSetting.enforce_global_nicknames and !SiteSetting.discourse_org_access_key.present? + end + # TODO: generalize this method of putting i18n keys with expiry in redis # that should be reported on the admin dashboard: def access_password_removal diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index fe125726384..54041f13336 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -440,6 +440,7 @@ en: access_password_removal: "Your site was using the access_password setting, which has been removed. The login_required and must_approve_users settings have been enabled, which should be used instead. You can change them in the Site Settings. Be sure to approve users in the Pending Users list. (This message will go away after 2 days.)" site_contact_username_warning: "The site_contact_username setting is blank. Please update it in the Site Settings. Set it to the username of an admin user who should be the sender of system messages." notification_email_warning: "The notification_email setting is blank. Please update it in the Site Settings." + enforce_global_nicknames_warning: "The enforce_global_nicknames setting is checked, but the discourse_org_access_key is blank. A Discourse.org access key is required to use the enforce_global_nicknames setting. Please update your Site Settings." content_types: education_new_reply: diff --git a/spec/models/admin_dashboard_data_spec.rb b/spec/models/admin_dashboard_data_spec.rb index 5e1a3f9e14b..b8da3fc38ff 100644 --- a/spec/models/admin_dashboard_data_spec.rb +++ b/spec/models/admin_dashboard_data_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe AdminDashboardData do describe "rails_env_check" do - subject { AdminDashboardData.new.rails_env_check } + subject { described_class.new.rails_env_check } it 'returns nil when running in production mode' do Rails.stubs(:env).returns('production') @@ -22,7 +22,7 @@ describe AdminDashboardData do end describe 'host_names_check' do - subject { AdminDashboardData.new.host_names_check } + subject { described_class.new.host_names_check } it 'returns nil when host_names is set' do Discourse.stubs(:current_hostname).returns('something.com') @@ -41,7 +41,7 @@ describe AdminDashboardData do end describe 'gc_checks' do - subject { AdminDashboardData.new.gc_checks } + subject { described_class.new.gc_checks } it 'returns nil when gc params are set' do ENV.stubs(:[]).with('RUBY_GC_MALLOC_LIMIT').returns(90000000) @@ -55,7 +55,7 @@ describe AdminDashboardData do end describe 'sidekiq_check' do - subject { AdminDashboardData.new.sidekiq_check } + subject { described_class.new.sidekiq_check } it 'returns nil when sidekiq processed a job recently' do Jobs.stubs(:last_job_performed_at).returns(1.minute.ago) @@ -89,7 +89,7 @@ describe AdminDashboardData do end describe 'ram_check' do - subject { AdminDashboardData.new.ram_check } + subject { described_class.new.ram_check } it 'returns nil when total ram is 1 GB' do MemInfo.any_instance.stubs(:mem_total).returns(1025272) @@ -108,7 +108,7 @@ describe AdminDashboardData do end describe 'send_consumer_email_check' do - subject { AdminDashboardData.new.send_consumer_email_check } + subject { described_class.new.send_consumer_email_check } it 'returns nil if gmail.com is not in the smtp_settings address' do ActionMailer::Base.stubs(:smtp_settings).returns({address: 'mandrillapp.com'}) @@ -131,7 +131,7 @@ describe AdminDashboardData do end describe 'default_logo_check' do - subject { AdminDashboardData.new.default_logo_check } + subject { described_class.new.default_logo_check } describe 'favicon_url check' do before do @@ -220,7 +220,7 @@ describe AdminDashboardData do end describe 'facebook' do - subject { AdminDashboardData.new.facebook_config_check } + subject { described_class.new.facebook_config_check } let(:enable_setting) { :enable_facebook_logins } let(:key) { :facebook_app_id } let(:secret) { :facebook_app_secret } @@ -228,7 +228,7 @@ describe AdminDashboardData do end describe 'twitter' do - subject { AdminDashboardData.new.twitter_config_check } + subject { described_class.new.twitter_config_check } let(:enable_setting) { :enable_twitter_logins } let(:key) { :twitter_consumer_key } let(:secret) { :twitter_consumer_secret } @@ -236,7 +236,7 @@ describe AdminDashboardData do end describe 'github' do - subject { AdminDashboardData.new.github_config_check } + subject { described_class.new.github_config_check } let(:enable_setting) { :enable_github_logins } let(:key) { :github_client_id } let(:secret) { :github_client_secret } @@ -244,4 +244,26 @@ describe AdminDashboardData do end end + describe "enforce_global_nicknames_check" do + subject { described_class.new.enforce_global_nicknames_check } + + it 'returns nil when enforce_global_nicknames and discourse_org_access_key are set' do + SiteSetting.stubs(:enforce_global_nicknames).returns(true) + SiteSetting.stubs(:discourse_org_access_key).returns('123') + subject.should be_nil + end + + it 'returns a string when enforce_global_nicknames is true but discourse_org_access_key is not' do + SiteSetting.stubs(:enforce_global_nicknames).returns(true) + SiteSetting.stubs(:discourse_org_access_key).returns('') + subject.should_not be_nil + end + + it 'returns nil when enforce_global_nicknames is false and discourse_org_access_key is set' do + SiteSetting.stubs(:enforce_global_nicknames).returns(false) + SiteSetting.stubs(:discourse_org_access_key).returns('123') + subject.should be_nil + end + end + end