Skip to content

Commit a9f0dbe

Browse files
kiyoharaDevinCodes
andauthored
fix: API endpoint URL mishandling in get_settings method (#473)
* fix: API endpoint URL mishandling in get_settings method (HTTP GET and params combination) * add specs * fix spec Co-authored-by: Devin Beeuwkes <[email protected]>
1 parent 0193e42 commit a9f0dbe

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

lib/algolia/search_index.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,11 @@ def search_rules(query, opts = {})
974974
# @return [Hash]
975975
#
976976
def get_settings(opts = {})
977-
response = @transporter.read(:GET, path_encode('/1/indexes/%s/settings', @name) + handle_params({ getVersion: 2 }), {}, opts)
977+
opts_default = {
978+
getVersion: 2
979+
}
980+
opts = opts_default.merge(opts)
981+
response = @transporter.read(:GET, path_encode('/1/indexes/%s/settings', @name), {}, opts)
978982

979983
deserialize_settings(response, @config.symbolize_keys)
980984
end

test/algolia/integration/search_index_test.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,34 @@ def test_settings
278278
# check that the forwardToReplicas parameter is passed correctly
279279
assert @index.set_settings!(settings, { forwardToReplicas: true })
280280
end
281+
282+
# Check version 1 API calling (ref. PR #473)
283+
def test_version_param
284+
@index.save_object!(generate_object('obj1')) # create index
285+
286+
# Check response's version value by actual access
287+
assert_equal 2, @index.get_settings[:version]
288+
assert_equal 1, @index.get_settings(getVersion: 1)[:version]
289+
assert_equal 2, @index.get_settings(getVersion: 2)[:version]
290+
291+
# Check API endpoint handling by mock access
292+
requester = MockRequester.new
293+
client = Algolia::Search::Client.new(@@search_config, http_requester: requester)
294+
index = client.init_index(@index_name)
295+
296+
index.get_settings # default
297+
index.get_settings(getVersion: 1)
298+
index.get_settings(getVersion: 2)
299+
300+
assert_requests(
301+
requester,
302+
[
303+
{ method: :get, path: "/1/indexes/#{@index_name}/settings?getVersion=2" },
304+
{ method: :get, path: "/1/indexes/#{@index_name}/settings?getVersion=1" },
305+
{ method: :get, path: "/1/indexes/#{@index_name}/settings?getVersion=2" }
306+
]
307+
)
308+
end
281309
end
282310

283311
describe 'search' do

test/test_helper.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ def assert_requests(requester, requests)
3838
requests.each_with_index do |expected_request, i|
3939
request = actual_requests[i]
4040

41-
assert_equal(expected_request[:body], request[:body])
41+
if expected_request[:body].nil? # for GET requests w/ NO body.
42+
assert_nil(request[:body])
43+
else
44+
assert_equal(expected_request[:body], request[:body])
45+
end
4246
assert_equal(expected_request[:method], request[:method])
4347
assert_equal(expected_request[:path], request[:path])
4448
end

0 commit comments

Comments
 (0)