Add default for outbound_local_requests_whitelist

It needs to default to an empty array logically.
This commit is contained in:
Thong Kuah 2019-07-25 18:43:52 +00:00 committed by Mayra Cabrera
parent 2179c7cd42
commit 64f3324096
3 changed files with 53 additions and 2 deletions

View file

@ -0,0 +1,30 @@
# frozen_string_literal: true
class ChangeOutboundLocalRequestsWhitelistDefault < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
class ApplicationSetting < ActiveRecord::Base
self.table_name = 'application_settings'
end
def up
default_value = []
change_column_default(:application_settings, :outbound_local_requests_whitelist, default_value)
ApplicationSetting
.where(outbound_local_requests_whitelist: nil)
.update(outbound_local_requests_whitelist: default_value)
change_column_null(:application_settings, :outbound_local_requests_whitelist, false)
end
def down
change_column_null(:application_settings, :outbound_local_requests_whitelist, true)
change_column_default(:application_settings, :outbound_local_requests_whitelist, nil)
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_07_15_142138) do
ActiveRecord::Schema.define(version: 2019_07_25_012225) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_trgm"
@ -228,7 +228,7 @@ ActiveRecord::Schema.define(version: 2019_07_15_142138) do
t.boolean "lock_memberships_to_ldap", default: false, null: false
t.boolean "time_tracking_limit_to_hours", default: false, null: false
t.string "grafana_url", default: "/-/grafana", null: false
t.string "outbound_local_requests_whitelist", limit: 255, array: true
t.string "outbound_local_requests_whitelist", limit: 255, default: [], null: false, array: true
t.integer "raw_blob_request_limit", default: 300, null: false
t.index ["custom_project_templates_group_id"], name: "index_application_settings_on_custom_project_templates_group_id"
t.index ["file_template_project_id"], name: "index_application_settings_on_file_template_project_id"

View file

@ -0,0 +1,21 @@
# frozen_string_literal: true
require 'spec_helper'
require Rails.root.join('db', 'migrate', '20190725012225_change_outbound_local_requests_whitelist_default.rb')
describe ChangeOutboundLocalRequestsWhitelistDefault, :migration do
let(:application_settings) { table(:application_settings) }
it 'defaults to empty array' do
setting = application_settings.create!
setting_with_value = application_settings.create!(outbound_local_requests_whitelist: '{a,b}')
expect(application_settings.where(outbound_local_requests_whitelist: nil).count).to eq(1)
migrate!
expect(application_settings.where(outbound_local_requests_whitelist: nil).count).to eq(0)
expect(setting.reload.outbound_local_requests_whitelist).to eq([])
expect(setting_with_value.reload.outbound_local_requests_whitelist).to eq(%w[a b])
end
end