diff --git a/lib/ldclient-rb/settings.rb b/lib/ldclient-rb/settings.rb index fad2cfd9..3f52e6ec 100644 --- a/lib/ldclient-rb/settings.rb +++ b/lib/ldclient-rb/settings.rb @@ -20,9 +20,11 @@ def update_user_flag_setting(user_key, flag_key, setting=nil) @config.logger.error("[LDClient] Must specify user") return end - + + user_setting_endpoint = "#{@config.base_uri}/api/users/#{user_key}/features/#{flag_key}" + @config.logger.debug "[LDClient] Setting: #{user_setting_endpoint}" res = log_timings('update_user_flag_setting') do - @client.put("#{@config.base_uri}/api/users/#{user_key}/features/#{flag_key}") do |req| + @client.put(user_setting_endpoint) do |req| req.headers['Authorization'] = "api_key #{@api_key}" req.headers['User-Agent'] = "RubyClient/#{LaunchDarkly::VERSION}" req.headers['Content-Type'] = 'application/json' @@ -34,6 +36,7 @@ def update_user_flag_setting(user_key, flag_key, setting=nil) unless res.success? @config.logger.error("[LDClient] Failed to change setting, status: #{res.status}") + return nil end end end diff --git a/spec/ldclient_spec.rb b/spec/ldclient_spec.rb index 2e48969a..3d41c6e2 100644 --- a/spec/ldclient_spec.rb +++ b/spec/ldclient_spec.rb @@ -16,15 +16,19 @@ end context 'user flag settings' do + let(:config) { client.instance_variable_get :@config } + let(:http_client) { client.instance_variable_get :@client } + let(:setting_endpoint) { "#{config.base_uri}/api/users/#{user[:key]}/features/#{feature[:key]}" } + describe '#update_user_flag_setting' do it 'requires user' do - expect(client.instance_variable_get(:@config).logger).to receive(:error) + expect(config.logger).to receive(:error) client.update_user_flag_setting(nil, feature[:key], true) end it 'puts the new setting' do result = double('result', success?: true, status: 204) - expect(client.instance_variable_get(:@client)).to receive(:put).and_return(result) + expect(http_client).to receive(:put).with(setting_endpoint).and_return(result) client.update_user_flag_setting(user[:key], feature[:key], true) end end