diff options
author | syasonik <syasonik@gitlab.com> | 2019-04-25 14:00:51 +0800 |
---|---|---|
committer | syasonik <syasonik@gitlab.com> | 2019-04-25 14:00:51 +0800 |
commit | 8926b37d5b0c48b9ef89e4769e622563a9b11e9f (patch) | |
tree | 8cd60768669a5a8d277356cb77a021aaae9da86a | |
parent | 4a5c48c47cccd8ce2b6bd6912ecff925122778f0 (diff) | |
download | gitlab-ce-8926b37d5b0c48b9ef89e4769e622563a9b11e9f.tar.gz |
Prefer safe_load and deep_symbolize_keys
-rw-r--r-- | lib/gitlab/metrics/dashboard/processor.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/metrics/dashboard/service.rb | 4 | ||||
-rw-r--r-- | spec/controllers/projects/environments_controller_spec.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/metrics/dashboard/service_spec.rb | 4 |
4 files changed, 11 insertions, 12 deletions
diff --git a/lib/gitlab/metrics/dashboard/processor.rb b/lib/gitlab/metrics/dashboard/processor.rb index 36de1d033f2..46fd2f9440d 100644 --- a/lib/gitlab/metrics/dashboard/processor.rb +++ b/lib/gitlab/metrics/dashboard/processor.rb @@ -21,13 +21,12 @@ module Gitlab # Returns a new dashboard hash with the results of # running transforms on the dashboard. - def process(dashboard) - dashboard = dashboard.deep_symbolize_keys - - stage_params = [@project, @environment] - sequence.each { |stage| stage.new(*stage_params).transform!(dashboard) } - - dashboard + def process(raw_dashboard) + raw_dashboard.deep_symbolize_keys.tap do |dashboard| + sequence.each do |stage| + stage.new(@project, @environment).transform!(dashboard) + end + end end private diff --git a/lib/gitlab/metrics/dashboard/service.rb b/lib/gitlab/metrics/dashboard/service.rb index 966d7279aef..b8f144a7222 100644 --- a/lib/gitlab/metrics/dashboard/service.rb +++ b/lib/gitlab/metrics/dashboard/service.rb @@ -23,7 +23,7 @@ module Gitlab # Returns the base metrics shipped with every GitLab service. def system_dashboard - YAML.load_file(SYSTEM_DASHBOARD_PATH) + YAML.safe_load(File.read(SYSTEM_DASHBOARD_PATH)) end def cache_key @@ -32,7 +32,7 @@ module Gitlab # Returns a new dashboard Hash, supplemented with DB info def process_dashboard(dashboard) - Processor.new(project, params[:environment]).process(dashboard) + Gitlab::Metrics::Dashboard::Processor.new(project, params[:environment]).process(dashboard) end end end diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb index b43698a6ef7..c1c4be45168 100644 --- a/spec/controllers/projects/environments_controller_spec.rb +++ b/spec/controllers/projects/environments_controller_spec.rb @@ -485,7 +485,7 @@ describe Projects::EnvironmentsController do context 'when the dashboard could not be provided' do before do - allow(YAML).to receive(:load_file).and_return({}) + allow(YAML).to receive(:safe_load).and_return({}) end it 'returns an error response' do diff --git a/spec/lib/gitlab/metrics/dashboard/service_spec.rb b/spec/lib/gitlab/metrics/dashboard/service_spec.rb index 3f82fd7ebf8..e66c356bf49 100644 --- a/spec/lib/gitlab/metrics/dashboard/service_spec.rb +++ b/spec/lib/gitlab/metrics/dashboard/service_spec.rb @@ -19,7 +19,7 @@ describe Gitlab::Metrics::Dashboard::Service, :use_clean_rails_memory_store_cach end it 'caches the dashboard for subsequent calls' do - expect(YAML).to receive(:load_file).once.and_call_original + expect(YAML).to receive(:safe_load).once.and_call_original described_class.new(project, environment).get_dashboard described_class.new(project, environment).get_dashboard @@ -27,7 +27,7 @@ describe Gitlab::Metrics::Dashboard::Service, :use_clean_rails_memory_store_cach context 'when the dashboard is configured incorrectly' do before do - allow(YAML).to receive(:load_file).and_return({}) + allow(YAML).to receive(:safe_load).and_return({}) end it 'returns an appropriate message and status code' do |