From bc0094795565bc9f7399b7900d77950d7082f1dc Mon Sep 17 00:00:00 2001 From: Peter Leitzen <pleitzen@gitlab.com> Date: Tue, 16 Jul 2019 08:03:17 +0000 Subject: [PATCH] Cleanup usages of `JSON.parse` in specs Prefer `json_response` where applicable. --- .../boards/issues_controller_spec.rb | 8 ++--- .../boards/lists_controller_spec.rb | 4 +-- .../boards/milestones_controller_spec.rb | 6 ++-- .../boards/users_controller_spec.rb | 6 ++-- .../groups/boards_controller_spec.rb | 4 +-- .../groups/epic_issues_controller_spec.rb | 2 +- .../groups/epics/notes_controller_spec.rb | 2 +- .../groups/epics_controller_spec.rb | 4 +-- .../issues_analytics_controller_spec.rb | 4 +-- .../controllers/operations_controller_spec.rb | 1 - .../projects/boards_controller_spec.rb | 4 +-- .../managed_licenses_controller_spec.rb | 2 +- .../merge_requests_controller_spec.rb | 4 --- .../projects/service_desk_controller_spec.rb | 12 +++----- ee/spec/requests/api/epic_links_spec.rb | 2 +- ee/spec/requests/api/epics_spec.rb | 4 +-- .../requests/api/project_approvals_spec.rb | 2 +- .../application_settings_controller_spec.rb | 2 +- .../application_controller_spec.rb | 2 -- .../boards/issues_controller_spec.rb | 8 ++--- .../boards/lists_controller_spec.rb | 4 +-- .../groups/boards_controller_spec.rb | 4 +-- .../groups/milestones_controller_spec.rb | 2 +- .../health_check_controller_spec.rb | 1 - spec/controllers/health_controller_spec.rb | 1 - spec/controllers/metrics_controller_spec.rb | 1 - .../projects/blob_controller_spec.rb | 4 +-- .../projects/boards_controller_spec.rb | 4 +-- .../projects/branches_controller_spec.rb | 9 ++---- .../projects/commit_controller_spec.rb | 4 +-- .../projects/compare_controller_spec.rb | 9 ++---- .../projects/deploy_keys_controller_spec.rb | 10 +++---- .../projects/discussions_controller_spec.rb | 4 +-- .../projects/find_file_controller_spec.rb | 5 ++-- .../projects/issues_controller_spec.rb | 20 +++++-------- .../merge_requests/diffs_controller_spec.rb | 2 +- .../merge_requests_controller_spec.rb | 4 +-- .../projects/notes_controller_spec.rb | 4 +-- .../projects/templates_controller_spec.rb | 9 +++--- .../projects/wikis_controller_spec.rb | 2 +- spec/controllers/projects_controller_spec.rb | 29 +++++++------------ .../snippets/notes_controller_spec.rb | 6 ++-- spec/controllers/snippets_controller_spec.rb | 2 +- spec/controllers/users_controller_spec.rb | 2 +- spec/requests/api/search_spec.rb | 4 +-- spec/requests/lfs_http_spec.rb | 4 --- spec/requests/lfs_locks_api_spec.rb | 4 --- spec/support/json_response.rb | 2 +- .../issuable_notes_filter_shared_examples.rb | 4 +-- .../update_invalid_issuable.rb | 2 +- 50 files changed, 87 insertions(+), 158 deletions(-) diff --git a/ee/spec/controllers/boards/issues_controller_spec.rb b/ee/spec/controllers/boards/issues_controller_spec.rb index 7f4d9db93c74..312dea93c267 100644 --- a/ee/spec/controllers/boards/issues_controller_spec.rb +++ b/ee/spec/controllers/boards/issues_controller_spec.rb @@ -43,10 +43,8 @@ list_issues user: user, board: board, list: list2 - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('issues') - expect(parsed_response['issues'].length).to eq 2 + expect(json_response['issues'].length).to eq 2 expect(development.issues.map(&:relative_position)).not_to include(nil) end end @@ -70,10 +68,8 @@ list_issues user: user, board: board - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('issues') - expect(parsed_response['issues'].length).to eq 2 + expect(json_response['issues'].length).to eq 2 end end diff --git a/ee/spec/controllers/boards/lists_controller_spec.rb b/ee/spec/controllers/boards/lists_controller_spec.rb index 7185782c8a04..fb64d2474102 100644 --- a/ee/spec/controllers/boards/lists_controller_spec.rb +++ b/ee/spec/controllers/boards/lists_controller_spec.rb @@ -24,10 +24,8 @@ read_board_list user: user, board: board - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('lists', dir: 'ee') - expect(parsed_response.length).to eq 3 + expect(json_response.length).to eq 3 end context 'with unauthorized user' do diff --git a/ee/spec/controllers/boards/milestones_controller_spec.rb b/ee/spec/controllers/boards/milestones_controller_spec.rb index 6f0b1f855a0f..38d3383f21af 100644 --- a/ee/spec/controllers/boards/milestones_controller_spec.rb +++ b/ee/spec/controllers/boards/milestones_controller_spec.rb @@ -20,11 +20,9 @@ expect(response).to have_gitlab_http_status(200) - parsed_response = JSON.parse(response.body) - expect(response.content_type).to eq('application/json') - expect(parsed_response).to all(match_schema('entities/milestone', dir: 'ee')) - expect(parsed_response.size).to eq(1) + expect(json_response).to all(match_schema('entities/milestone', dir: 'ee')) + expect(json_response.size).to eq(1) end end diff --git a/ee/spec/controllers/boards/users_controller_spec.rb b/ee/spec/controllers/boards/users_controller_spec.rb index cd909fdd239b..14006c67e073 100644 --- a/ee/spec/controllers/boards/users_controller_spec.rb +++ b/ee/spec/controllers/boards/users_controller_spec.rb @@ -22,12 +22,10 @@ }, format: :json - parsed_response = JSON.parse(response.body) - expect(response).to have_gitlab_http_status(200) expect(response.content_type).to eq 'application/json' - expect(parsed_response).to all(match_schema('entities/user')) - expect(parsed_response.length).to eq 2 + expect(json_response).to all(match_schema('entities/user')) + expect(json_response.length).to eq 2 end end diff --git a/ee/spec/controllers/groups/boards_controller_spec.rb b/ee/spec/controllers/groups/boards_controller_spec.rb index 5fc13ea8242e..c0a7c6b309c4 100644 --- a/ee/spec/controllers/groups/boards_controller_spec.rb +++ b/ee/spec/controllers/groups/boards_controller_spec.rb @@ -23,10 +23,8 @@ list_boards format: :json - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('boards') - expect(parsed_response.length).to eq 2 + expect(json_response.length).to eq 2 end context 'with unauthorized user' do diff --git a/ee/spec/controllers/groups/epic_issues_controller_spec.rb b/ee/spec/controllers/groups/epic_issues_controller_spec.rb index 89d6ab87f167..a65ff2ed951f 100644 --- a/ee/spec/controllers/groups/epic_issues_controller_spec.rb +++ b/ee/spec/controllers/groups/epic_issues_controller_spec.rb @@ -47,7 +47,7 @@ end it 'returns the correct json' do - expect(JSON.parse(response.body)).to match_schema('related_issues', dir: 'ee') + expect(json_response).to match_schema('related_issues', dir: 'ee') end end diff --git a/ee/spec/controllers/groups/epics/notes_controller_spec.rb b/ee/spec/controllers/groups/epics/notes_controller_spec.rb index b402282af27d..f60e69095a58 100644 --- a/ee/spec/controllers/groups/epics/notes_controller_spec.rb +++ b/ee/spec/controllers/groups/epics/notes_controller_spec.rb @@ -5,7 +5,7 @@ let(:group) { create(:group) } let(:epic) { create(:epic, group: group) } let(:note) { create(:note, noteable: epic) } - let(:parsed_response) { JSON.parse(response.body).with_indifferent_access } + let(:parsed_response) { json_response.with_indifferent_access } before do stub_licensed_features(epics: true) diff --git a/ee/spec/controllers/groups/epics_controller_spec.rb b/ee/spec/controllers/groups/epics_controller_spec.rb index e7d8524e0373..15fbb488bd96 100644 --- a/ee/spec/controllers/groups/epics_controller_spec.rb +++ b/ee/spec/controllers/groups/epics_controller_spec.rb @@ -375,7 +375,7 @@ def update_epic(epic, params) subject expect(response.content_type).to eq 'application/json' - expect(JSON.parse(response.body)).to include('title_text', 'title', 'description', 'description_text') + expect(json_response).to include('title_text', 'title', 'description', 'description_text') end context 'with unauthorized user' do @@ -421,7 +421,7 @@ def update_epic(epic, params) it 'returns the correct json' do subject - expect(JSON.parse(response.body)).to eq({ 'web_url' => group_epic_path(group, Epic.last) }) + expect(json_response).to eq({ 'web_url' => group_epic_path(group, Epic.last) }) end it_behaves_like 'disabled when using an external authorization service' diff --git a/ee/spec/controllers/groups/issues_analytics_controller_spec.rb b/ee/spec/controllers/groups/issues_analytics_controller_spec.rb index deab548700cd..fb5457a13e89 100644 --- a/ee/spec/controllers/groups/issues_analytics_controller_spec.rb +++ b/ee/spec/controllers/groups/issues_analytics_controller_spec.rb @@ -58,7 +58,7 @@ get :show, params: { group_id: group.to_param }, format: :json - expect(JSON.parse(response.body)).to include(expected_result) + expect(json_response).to include(expected_result) end context 'when user cannot view issues' do @@ -74,7 +74,7 @@ get :show, params: { group_id: group.to_param }, format: :json - expect(JSON.parse(response.body)).to include(expected_result) + expect(json_response).to include(expected_result) end end end diff --git a/ee/spec/controllers/operations_controller_spec.rb b/ee/spec/controllers/operations_controller_spec.rb index 696ba1881718..ef01f8b00512 100644 --- a/ee/spec/controllers/operations_controller_spec.rb +++ b/ee/spec/controllers/operations_controller_spec.rb @@ -6,7 +6,6 @@ include Rails.application.routes.url_helpers let(:user) { create(:user) } - let(:json_response) { JSON.parse(response.body) } shared_examples 'unlicensed' do |http_method, action| before do diff --git a/ee/spec/controllers/projects/boards_controller_spec.rb b/ee/spec/controllers/projects/boards_controller_spec.rb index 0514917e758f..e47b38fcb6c1 100644 --- a/ee/spec/controllers/projects/boards_controller_spec.rb +++ b/ee/spec/controllers/projects/boards_controller_spec.rb @@ -18,10 +18,8 @@ list_boards - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('boards') - expect(parsed_response.length).to eq 2 + expect(json_response.length).to eq 2 end it_behaves_like 'redirects to last visited board' diff --git a/ee/spec/controllers/projects/managed_licenses_controller_spec.rb b/ee/spec/controllers/projects/managed_licenses_controller_spec.rb index b0963d0fab94..07af86e81349 100644 --- a/ee/spec/controllers/projects/managed_licenses_controller_spec.rb +++ b/ee/spec/controllers/projects/managed_licenses_controller_spec.rb @@ -396,7 +396,7 @@ subject expect(response).to match_response_schema('software_license_policy', dir: 'ee') - expect(JSON.parse(response.body)).to eq(modified_software_license_policy_attributes.with_indifferent_access) + expect(json_response).to eq(modified_software_license_policy_attributes.with_indifferent_access) end end end diff --git a/ee/spec/controllers/projects/merge_requests_controller_spec.rb b/ee/spec/controllers/projects/merge_requests_controller_spec.rb index b3f1f455543e..6ac6f5ee7fbe 100644 --- a/ee/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/ee/spec/controllers/projects/merge_requests_controller_spec.rb @@ -1,10 +1,6 @@ require 'spec_helper' shared_examples 'approvals' do - def json_response - JSON.parse(response.body) - end - let!(:approver) { create(:user) } let!(:approval_rule) { create(:approval_project_rule, project: project, users: [approver, user], approvals_required: 2) } diff --git a/ee/spec/controllers/projects/service_desk_controller_spec.rb b/ee/spec/controllers/projects/service_desk_controller_spec.rb index fe7e2afc1303..8fb903a1a1d1 100644 --- a/ee/spec/controllers/projects/service_desk_controller_spec.rb +++ b/ee/spec/controllers/projects/service_desk_controller_spec.rb @@ -18,10 +18,8 @@ it 'returns service_desk JSON data' do get :show, params: { namespace_id: project.namespace.to_param, project_id: project }, format: :json - body = JSON.parse(response.body) - - expect(body["service_desk_address"]).to match(/\A[^@]+@[^@]+\z/) - expect(body["service_desk_enabled"]).to be_truthy + expect(json_response["service_desk_address"]).to match(/\A[^@]+@[^@]+\z/) + expect(json_response["service_desk_enabled"]).to be_truthy expect(response.status).to eq(200) end @@ -45,10 +43,8 @@ put :update, params: { namespace_id: project.namespace.to_param, project_id: project, service_desk_enabled: true }, format: :json - body = JSON.parse(response.body) - - expect(body["service_desk_address"]).to be_present - expect(body["service_desk_enabled"]).to be_truthy + expect(json_response["service_desk_address"]).to be_present + expect(json_response["service_desk_enabled"]).to be_truthy expect(response.status).to eq(200) end diff --git a/ee/spec/requests/api/epic_links_spec.rb b/ee/spec/requests/api/epic_links_spec.rb index 552cec2d3afb..1bd804c40e7f 100644 --- a/ee/spec/requests/api/epic_links_spec.rb +++ b/ee/spec/requests/api/epic_links_spec.rb @@ -53,7 +53,7 @@ it 'returns 200 status' do subject - epics = JSON.parse(response.body) + epics = json_response expect(response).to have_gitlab_http_status(200) expect(response).to match_response_schema('public_api/v4/epics', dir: 'ee') diff --git a/ee/spec/requests/api/epics_spec.rb b/ee/spec/requests/api/epics_spec.rb index f1de9f3d5bb1..fda2d658894d 100644 --- a/ee/spec/requests/api/epics_spec.rb +++ b/ee/spec/requests/api/epics_spec.rb @@ -44,7 +44,7 @@ it 'returns epic with extra date fields' do get api(url, user), params: params - expect(Array.wrap(JSON.parse(response.body))).to all(exclude(*extra_date_fields)) + expect(Array.wrap(json_response)).to all(exclude(*extra_date_fields)) end end @@ -56,7 +56,7 @@ it 'returns epic with extra date fields' do get api(url, user), params: params - expect(Array.wrap(JSON.parse(response.body))).to all(include(*extra_date_fields)) + expect(Array.wrap(json_response)).to all(include(*extra_date_fields)) end end end diff --git a/ee/spec/requests/api/project_approvals_spec.rb b/ee/spec/requests/api/project_approvals_spec.rb index 405cf11e49e7..584f6faff495 100644 --- a/ee/spec/requests/api/project_approvals_spec.rb +++ b/ee/spec/requests/api/project_approvals_spec.rb @@ -77,7 +77,7 @@ post api(url, current_user), params: settings - expect(JSON.parse(response.body).symbolize_keys).to include(settings) + expect(json_response.symbolize_keys).to include(settings) end it 'only shows approver groups that are visible to the current user' do diff --git a/spec/controllers/admin/application_settings_controller_spec.rb b/spec/controllers/admin/application_settings_controller_spec.rb index 5ad5f9cdeea8..4eb0545eb6c4 100644 --- a/spec/controllers/admin/application_settings_controller_spec.rb +++ b/spec/controllers/admin/application_settings_controller_spec.rb @@ -41,7 +41,7 @@ it 'returns JSON data' do get :usage_data, format: :json - body = JSON.parse(response.body) + body = json_response expect(body["version"]).to eq(Gitlab::VERSION) expect(body).to include('counts') expect(response.status).to eq(200) diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 447a12b2facf..84bbbac39b0b 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -63,8 +63,6 @@ sign_in user end - let(:json_response) { JSON.parse(response.body) } - controller(described_class) do def index render json: Gon.all_variables diff --git a/spec/controllers/boards/issues_controller_spec.rb b/spec/controllers/boards/issues_controller_spec.rb index 6cad060d8885..246d6f9e0f99 100644 --- a/spec/controllers/boards/issues_controller_spec.rb +++ b/spec/controllers/boards/issues_controller_spec.rb @@ -52,10 +52,8 @@ list_issues user: user, board: board, list: list2 - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('entities/issue_boards') - expect(parsed_response['issues'].length).to eq 2 + expect(json_response['issues'].length).to eq 2 expect(development.issues.map(&:relative_position)).not_to include(nil) end @@ -123,10 +121,8 @@ list_issues user: user, board: board - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('entities/issue_boards') - expect(parsed_response['issues'].length).to eq 2 + expect(json_response['issues'].length).to eq 2 end end diff --git a/spec/controllers/boards/lists_controller_spec.rb b/spec/controllers/boards/lists_controller_spec.rb index e1f75fa33956..418ca6f32100 100644 --- a/spec/controllers/boards/lists_controller_spec.rb +++ b/spec/controllers/boards/lists_controller_spec.rb @@ -26,10 +26,8 @@ read_board_list user: user, board: board - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('lists') - expect(parsed_response.length).to eq 3 + expect(json_response.length).to eq 3 end context 'with unauthorized user' do diff --git a/spec/controllers/groups/boards_controller_spec.rb b/spec/controllers/groups/boards_controller_spec.rb index 5e0f64ccca40..e4232c2c1abc 100644 --- a/spec/controllers/groups/boards_controller_spec.rb +++ b/spec/controllers/groups/boards_controller_spec.rb @@ -63,10 +63,8 @@ list_boards format: :json - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('boards') - expect(parsed_response.length).to eq 1 + expect(json_response.length).to eq 1 end context 'with unauthorized user' do diff --git a/spec/controllers/groups/milestones_controller_spec.rb b/spec/controllers/groups/milestones_controller_spec.rb index 19b18091aef0..bf164aeed38d 100644 --- a/spec/controllers/groups/milestones_controller_spec.rb +++ b/spec/controllers/groups/milestones_controller_spec.rb @@ -73,7 +73,7 @@ it 'lists legacy group milestones and group milestones' do get :index, params: { group_id: group.to_param }, format: :json - milestones = JSON.parse(response.body) + milestones = json_response expect(milestones.count).to eq(2) expect(milestones.first["title"]).to eq("group milestone") diff --git a/spec/controllers/health_check_controller_spec.rb b/spec/controllers/health_check_controller_spec.rb index 19d739fcf4fc..92f005faf4a3 100644 --- a/spec/controllers/health_check_controller_spec.rb +++ b/spec/controllers/health_check_controller_spec.rb @@ -5,7 +5,6 @@ describe HealthCheckController do include StubENV - let(:json_response) { JSON.parse(response.body) } let(:xml_response) { Hash.from_xml(response.body)['hash'] } let(:token) { Gitlab::CurrentSettings.health_check_access_token } let(:whitelisted_ip) { '127.0.0.1' } diff --git a/spec/controllers/health_controller_spec.rb b/spec/controllers/health_controller_spec.rb index fc62a8310aab..e82dcfcdb643 100644 --- a/spec/controllers/health_controller_spec.rb +++ b/spec/controllers/health_controller_spec.rb @@ -5,7 +5,6 @@ describe HealthController do include StubENV - let(:json_response) { JSON.parse(response.body) } let(:token) { Gitlab::CurrentSettings.health_check_access_token } let(:whitelisted_ip) { '127.0.0.1' } let(:not_whitelisted_ip) { '127.0.0.2' } diff --git a/spec/controllers/metrics_controller_spec.rb b/spec/controllers/metrics_controller_spec.rb index ee454a7818c8..84027119491d 100644 --- a/spec/controllers/metrics_controller_spec.rb +++ b/spec/controllers/metrics_controller_spec.rb @@ -5,7 +5,6 @@ describe MetricsController do include StubENV - let(:json_response) { JSON.parse(response.body) } let(:metrics_multiproc_dir) { Dir.mktmpdir } let(:whitelisted_ip) { '127.0.0.1' } let(:whitelisted_ip_range) { '10.0.0.0/24' } diff --git a/spec/controllers/projects/blob_controller_spec.rb b/spec/controllers/projects/blob_controller_spec.rb index 44500d3cde34..45aebd1554c4 100644 --- a/spec/controllers/projects/blob_controller_spec.rb +++ b/spec/controllers/projects/blob_controller_spec.rb @@ -160,7 +160,7 @@ def do_get(opts = {}) it 'renders diff context lines Gitlab::Diff::Line array' do do_get(since: 1, to: 2, offset: 0, from_merge_request: true) - lines = JSON.parse(response.body) + lines = json_response expect(lines.size).to eq(diff_lines.size) lines.each do |line| @@ -173,7 +173,7 @@ def do_get(opts = {}) it 'handles full being true' do do_get(full: true, from_merge_request: true) - lines = JSON.parse(response.body) + lines = json_response expect(lines.size).to eq(diff_lines.size) end diff --git a/spec/controllers/projects/boards_controller_spec.rb b/spec/controllers/projects/boards_controller_spec.rb index c07afc57aeac..543479d8dd51 100644 --- a/spec/controllers/projects/boards_controller_spec.rb +++ b/spec/controllers/projects/boards_controller_spec.rb @@ -69,10 +69,8 @@ list_boards format: :json - parsed_response = JSON.parse(response.body) - expect(response).to match_response_schema('boards') - expect(parsed_response.length).to eq 2 + expect(json_response.length).to eq 2 end context 'with unauthorized user' do diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb index b30966e70a7d..f5bcea4a097d 100644 --- a/spec/controllers/projects/branches_controller_spec.rb +++ b/spec/controllers/projects/branches_controller_spec.rb @@ -495,10 +495,8 @@ def destroy_all_merged search: 'master' } - parsed_response = JSON.parse(response.body) - - expect(parsed_response.length).to eq 1 - expect(parsed_response.first).to eq 'master' + expect(json_response.length).to eq 1 + expect(json_response.first).to eq 'master' end end @@ -591,8 +589,7 @@ def destroy_all_merged end it 'returns the commit counts behind and ahead of default branch' do - parsed_response = JSON.parse(response.body) - expect(parsed_response).to eq( + expect(json_response).to eq( "fix" => { "behind" => 29, "ahead" => 2 }, "branch-merged" => { "behind" => 1, "ahead" => 0 }, "add-pdf-file" => { "behind" => 0, "ahead" => 3 } diff --git a/spec/controllers/projects/commit_controller_spec.rb b/spec/controllers/projects/commit_controller_spec.rb index b5c6382a26d5..58a1d96d010c 100644 --- a/spec/controllers/projects/commit_controller_spec.rb +++ b/spec/controllers/projects/commit_controller_spec.rb @@ -378,8 +378,8 @@ def get_pipelines(extra_params = {}) get_pipelines(id: commit.id, format: :json) expect(response).to be_ok - expect(JSON.parse(response.body)['pipelines']).not_to be_empty - expect(JSON.parse(response.body)['count']['all']).to eq 1 + expect(json_response['pipelines']).not_to be_empty + expect(json_response['count']['all']).to eq 1 expect(response).to include_pagination_headers end end diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb index 92380a2bf09f..48a92a772dce 100644 --- a/spec/controllers/projects/compare_controller_spec.rb +++ b/spec/controllers/projects/compare_controller_spec.rb @@ -302,8 +302,7 @@ def diff_for_path(extra_params = {}) signatures_request expect(response).to have_gitlab_http_status(200) - parsed_body = JSON.parse(response.body) - signatures = parsed_body['signatures'] + signatures = json_response['signatures'] expect(signatures.size).to eq(1) expect(signatures.first['commit_sha']).to eq(signature_commit.sha) @@ -332,8 +331,7 @@ def diff_for_path(extra_params = {}) signatures_request expect(response).to have_gitlab_http_status(200) - parsed_body = JSON.parse(response.body) - expect(parsed_body['signatures']).to be_empty + expect(json_response['signatures']).to be_empty end end @@ -345,8 +343,7 @@ def diff_for_path(extra_params = {}) signatures_request expect(response).to have_gitlab_http_status(200) - parsed_body = JSON.parse(response.body) - expect(parsed_body['signatures']).to be_empty + expect(json_response['signatures']).to be_empty end end end diff --git a/spec/controllers/projects/deploy_keys_controller_spec.rb b/spec/controllers/projects/deploy_keys_controller_spec.rb index fcd14f138634..ccad76eadddc 100644 --- a/spec/controllers/projects/deploy_keys_controller_spec.rb +++ b/spec/controllers/projects/deploy_keys_controller_spec.rb @@ -52,12 +52,10 @@ it 'returns json in a correct format' do get :index, params: params.merge(format: :json) - json = JSON.parse(response.body) - - expect(json.keys).to match_array(%w(enabled_keys available_project_keys public_keys)) - expect(json['enabled_keys'].count).to eq(1) - expect(json['available_project_keys'].count).to eq(1) - expect(json['public_keys'].count).to eq(1) + expect(json_response.keys).to match_array(%w(enabled_keys available_project_keys public_keys)) + expect(json_response['enabled_keys'].count).to eq(1) + expect(json_response['available_project_keys'].count).to eq(1) + expect(json_response['public_keys'].count).to eq(1) end end end diff --git a/spec/controllers/projects/discussions_controller_spec.rb b/spec/controllers/projects/discussions_controller_spec.rb index 4c29162cd0f7..e30b28a4bd57 100644 --- a/spec/controllers/projects/discussions_controller_spec.rb +++ b/spec/controllers/projects/discussions_controller_spec.rb @@ -112,7 +112,7 @@ it "returns the name of the resolving user" do post :resolve, params: request_params - expect(JSON.parse(response.body)['resolved_by']['name']).to eq(user.name) + expect(json_response['resolved_by']['name']).to eq(user.name) end it "returns status 200" do @@ -135,7 +135,7 @@ it "returns truncated diff lines" do post :resolve, params: request_params - expect(JSON.parse(response.body)['truncated_diff_lines']).to be_present + expect(json_response['truncated_diff_lines']).to be_present end end end diff --git a/spec/controllers/projects/find_file_controller_spec.rb b/spec/controllers/projects/find_file_controller_spec.rb index 538dbb5ad0bc..a493985f8a06 100644 --- a/spec/controllers/projects/find_file_controller_spec.rb +++ b/spec/controllers/projects/find_file_controller_spec.rb @@ -53,10 +53,9 @@ def go(format: 'json') it 'returns an array of file path list' do go - json = JSON.parse(response.body) is_expected.to respond_with(:success) - expect(json).not_to eq(nil) - expect(json.length).to be >= 0 + expect(json_response).not_to eq(nil) + expect(json_response.length).to be >= 0 end end diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb index bc5e0b4671ed..32d14dce936c 100644 --- a/spec/controllers/projects/issues_controller_spec.rb +++ b/spec/controllers/projects/issues_controller_spec.rb @@ -444,7 +444,7 @@ def reorder_issue(issue, move_after_id: nil, move_before_id: nil, group_full_pat it 'renders json with recaptcha_html' do subject - expect(JSON.parse(response.body)).to have_key('recaptcha_html') + expect(json_response).to have_key('recaptcha_html') end end end @@ -484,10 +484,8 @@ def go(id:) it 'returns last edited time' do go(id: issue.iid) - data = JSON.parse(response.body) - - expect(data).to include('updated_at') - expect(data['updated_at']).to eq(issue.last_edited_at.to_time.iso8601) + expect(json_response).to include('updated_at') + expect(json_response['updated_at']).to eq(issue.last_edited_at.to_time.iso8601) end end @@ -520,10 +518,8 @@ def go(id:) it 'returns the necessary data' do go(id: issue.iid) - data = JSON.parse(response.body) - - expect(data).to include('title_text', 'description', 'description_text') - expect(data).to include('task_status', 'lock_version') + expect(json_response).to include('title_text', 'description', 'description_text') + expect(json_response).to include('task_status', 'lock_version') end end end @@ -692,9 +688,7 @@ def go(id:) update_issue(issue_params: { assignee_ids: [assignee.id] }) - body = JSON.parse(response.body) - - expect(body['assignees'].first.keys) + expect(json_response['assignees'].first.keys) .to match_array(%w(id name username avatar_url state web_url)) end end @@ -1314,7 +1308,7 @@ def import_csv it 'filters notes that the user should not see' do get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issue.iid } - expect(JSON.parse(response.body).count).to eq(1) + expect(json_response.count).to eq(1) end it 'does not result in N+1 queries' do diff --git a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb index 13a28b738ca1..d940d226176f 100644 --- a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb @@ -112,7 +112,7 @@ def diff_for_path(extra_params = {}) it 'only renders the diffs for the path given' do diff_for_path(old_path: existing_path, new_path: existing_path) - paths = JSON.parse(response.body)["diff_files"].map { |file| file['new_path'] } + paths = json_response["diff_files"].map { |file| file['new_path'] } expect(paths).to include(existing_path) end diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index cc6adc0a6c65..f11880122b11 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -242,9 +242,7 @@ def update_merge_request(mr_params, additional_params = {}) update_merge_request({ assignee_ids: [assignee.id] }, format: :json) - body = JSON.parse(response.body) - - expect(body['assignees']).to all(include(*%w(name username avatar_url id state web_url))) + expect(json_response['assignees']).to all(include(*%w(name username avatar_url id state web_url))) end end diff --git a/spec/controllers/projects/notes_controller_spec.rb b/spec/controllers/projects/notes_controller_spec.rb index 1db1963476c7..98aea9056dcd 100644 --- a/spec/controllers/projects/notes_controller_spec.rb +++ b/spec/controllers/projects/notes_controller_spec.rb @@ -29,7 +29,7 @@ } end - let(:parsed_response) { JSON.parse(response.body).with_indifferent_access } + let(:parsed_response) { json_response.with_indifferent_access } let(:note_json) { parsed_response[:notes].first } before do @@ -614,7 +614,7 @@ def post_create(extra_params = {}) it "returns the name of the resolving user" do post :resolve, params: request_params.merge(html: true) - expect(JSON.parse(response.body)["resolved_by"]).to eq(user.name) + expect(json_response["resolved_by"]).to eq(user.name) end it "returns status 200" do diff --git a/spec/controllers/projects/templates_controller_spec.rb b/spec/controllers/projects/templates_controller_spec.rb index 9e7d34b10c00..d5ef2b0e1148 100644 --- a/spec/controllers/projects/templates_controller_spec.rb +++ b/spec/controllers/projects/templates_controller_spec.rb @@ -7,7 +7,6 @@ let(:user) { create(:user) } let(:file_path_1) { '.gitlab/issue_templates/issue_template.md' } let(:file_path_2) { '.gitlab/merge_request_templates/merge_request_template.md' } - let(:body) { JSON.parse(response.body) } let!(:file_1) { project.repository.create_file(user, file_path_1, 'issue content', message: 'message', branch_name: 'master') } let!(:file_2) { project.repository.create_file(user, file_path_2, 'merge request content', message: 'message', branch_name: 'master') } @@ -17,8 +16,8 @@ get(:show, params: { namespace_id: project.namespace, template_type: 'issue', key: 'issue_template', project_id: project }, format: :json) expect(response.status).to eq(200) - expect(body['name']).to eq('issue_template') - expect(body['content']).to eq('issue content') + expect(json_response['name']).to eq('issue_template') + expect(json_response['content']).to eq('issue content') end end @@ -27,8 +26,8 @@ get(:show, params: { namespace_id: project.namespace, template_type: 'merge_request', key: 'merge_request_template', project_id: project }, format: :json) expect(response.status).to eq(200) - expect(body['name']).to eq('merge_request_template') - expect(body['content']).to eq('merge request content') + expect(json_response['name']).to eq('merge_request_template') + expect(json_response['content']).to eq('merge request content') end end diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb index f2e0b5e5c1de..a7e5a79b51dd 100644 --- a/spec/controllers/projects/wikis_controller_spec.rb +++ b/spec/controllers/projects/wikis_controller_spec.rb @@ -103,7 +103,7 @@ it 'renders json in a correct format' do post :preview_markdown, params: { namespace_id: project.namespace, project_id: project, id: 'page/path', text: '*Markdown* text' } - expect(JSON.parse(response.body).keys).to match_array(%w(body references)) + expect(json_response.keys).to match_array(%w(body references)) end end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 4e1cac67d236..083a1c1383af 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -740,20 +740,18 @@ def update_project(**parameters) it 'gets a list of branches and tags' do get :refs, params: { namespace_id: project.namespace, id: project, sort: 'updated_desc' } - parsed_body = JSON.parse(response.body) - expect(parsed_body['Branches']).to include('master') - expect(parsed_body['Tags'].first).to eq('v1.1.0') - expect(parsed_body['Tags'].last).to eq('v1.0.0') - expect(parsed_body['Commits']).to be_nil + expect(json_response['Branches']).to include('master') + expect(json_response['Tags'].first).to eq('v1.1.0') + expect(json_response['Tags'].last).to eq('v1.0.0') + expect(json_response['Commits']).to be_nil end it "gets a list of branches, tags and commits" do get :refs, params: { namespace_id: project.namespace, id: project, ref: "123456" } - parsed_body = JSON.parse(response.body) - expect(parsed_body["Branches"]).to include("master") - expect(parsed_body["Tags"]).to include("v1.0.0") - expect(parsed_body["Commits"]).to include("123456") + expect(json_response["Branches"]).to include("master") + expect(json_response["Tags"]).to include("v1.0.0") + expect(json_response["Commits"]).to include("123456") end context "when preferred language is Japanese" do @@ -765,10 +763,9 @@ def update_project(**parameters) it "gets a list of branches, tags and commits" do get :refs, params: { namespace_id: project.namespace, id: project, ref: "123456" } - parsed_body = JSON.parse(response.body) - expect(parsed_body["Branches"]).to include("master") - expect(parsed_body["Tags"]).to include("v1.0.0") - expect(parsed_body["Commits"]).to include("123456") + expect(json_response["Branches"]).to include("master") + expect(json_response["Tags"]).to include("v1.0.0") + expect(json_response["Commits"]).to include("123456") end end @@ -797,7 +794,7 @@ def update_project(**parameters) it 'renders json in a correct format' do post :preview_markdown, params: { namespace_id: public_project.namespace, id: public_project, text: '*Markdown* text' } - expect(JSON.parse(response.body).keys).to match_array(%w(body references)) + expect(json_response.keys).to match_array(%w(body references)) end context 'when not authorized' do @@ -821,8 +818,6 @@ def update_project(**parameters) text: issue.to_reference } - json_response = JSON.parse(response.body) - expect(json_response['body']).to match(/\##{issue.iid} \(closed\)/) end @@ -833,8 +828,6 @@ def update_project(**parameters) text: merge_request.to_reference } - json_response = JSON.parse(response.body) - expect(json_response['body']).to match(/\!#{merge_request.iid} \(closed\)/) end end diff --git a/spec/controllers/snippets/notes_controller_spec.rb b/spec/controllers/snippets/notes_controller_spec.rb index 586d59c2d09c..652533ac49fd 100644 --- a/spec/controllers/snippets/notes_controller_spec.rb +++ b/spec/controllers/snippets/notes_controller_spec.rb @@ -26,7 +26,7 @@ end it "returns not empty array of notes" do - expect(JSON.parse(response.body)["notes"].empty?).to be_falsey + expect(json_response["notes"].empty?).to be_falsey end end @@ -97,7 +97,7 @@ it "returns 1 note" do get :index, params: { snippet_id: private_snippet } - expect(JSON.parse(response.body)['notes'].count).to eq(1) + expect(json_response['notes'].count).to eq(1) end end end @@ -114,7 +114,7 @@ it "does not return any note" do get :index, params: { snippet_id: public_snippet } - expect(JSON.parse(response.body)['notes'].count).to eq(0) + expect(json_response['notes'].count).to eq(0) end end end diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb index 3aba02bf3ff5..b0092bc89945 100644 --- a/spec/controllers/snippets_controller_spec.rb +++ b/spec/controllers/snippets_controller_spec.rb @@ -622,7 +622,7 @@ def mark_as_spam post :preview_markdown, params: { id: snippet, text: '*Markdown* text' } - expect(JSON.parse(response.body).keys).to match_array(%w(body references)) + expect(json_response.keys).to match_array(%w(body references)) end end end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index c3d6ea9cbcde..8b8d4c57000e 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -291,7 +291,7 @@ def create_note_event it 'response with snippets json data' do get :snippets, params: { username: user.username }, format: :json expect(response).to have_gitlab_http_status(200) - expect(JSON.parse(response.body)).to have_key('html') + expect(json_response).to have_key('html') end end diff --git a/spec/requests/api/search_spec.rb b/spec/requests/api/search_spec.rb index 3e0b478abb3c..8abdcaa2e0e9 100644 --- a/spec/requests/api/search_spec.rb +++ b/spec/requests/api/search_spec.rb @@ -89,7 +89,7 @@ it 'returns empty array' do get api('/search', user), params: { scope: 'milestones', search: 'awesome' } - milestones = JSON.parse(response.body) + milestones = json_response expect(milestones).to be_empty end @@ -356,7 +356,7 @@ it 'returns empty array' do get api("/projects/#{project.id}/search", user), params: { scope: 'milestones', search: 'awesome' } - milestones = JSON.parse(response.body) + milestones = json_response expect(milestones).to be_empty end diff --git a/spec/requests/lfs_http_spec.rb b/spec/requests/lfs_http_spec.rb index 1781759c54bb..dc25e4d808ee 100644 --- a/spec/requests/lfs_http_spec.rb +++ b/spec/requests/lfs_http_spec.rb @@ -1439,8 +1439,4 @@ def post_lfs_json(url, body = nil, headers = nil) post(url, params: params, headers: headers) end - - def json_response - @json_response ||= JSON.parse(response.body) - end end diff --git a/spec/requests/lfs_locks_api_spec.rb b/spec/requests/lfs_locks_api_spec.rb index 5b7b3d2fdd6d..11436e5cd0ce 100644 --- a/spec/requests/lfs_locks_api_spec.rb +++ b/spec/requests/lfs_locks_api_spec.rb @@ -163,8 +163,4 @@ def post_lfs_json(url, body = nil, headers = nil) def do_get(url, params = nil, headers = nil) get(url, params: (params || {}), headers: (headers || {}).merge('Content-Type' => LfsRequest::CONTENT_TYPE)) end - - def json_response - @json_response ||= JSON.parse(response.body) - end end diff --git a/spec/support/json_response.rb b/spec/support/json_response.rb index 210b0e6d867d..43d8ab73dde6 100644 --- a/spec/support/json_response.rb +++ b/spec/support/json_response.rb @@ -1,5 +1,5 @@ RSpec.configure do |config| - config.include_context 'JSON response' + config.include_context 'JSON response', type: :controller config.include_context 'JSON response', type: :request config.include_context 'JSON response', :api end diff --git a/spec/support/shared_examples/controllers/issuable_notes_filter_shared_examples.rb b/spec/support/shared_examples/controllers/issuable_notes_filter_shared_examples.rb index 0acc9e2a836f..f4b02dc5350f 100644 --- a/spec/support/shared_examples/controllers/issuable_notes_filter_shared_examples.rb +++ b/spec/support/shared_examples/controllers/issuable_notes_filter_shared_examples.rb @@ -46,7 +46,7 @@ user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_comments], issuable) get :discussions, params: params - discussions = JSON.parse(response.body) + discussions = json_response expect(discussions.count).to eq(1) expect(discussions.first["notes"].first["system"]).to be(false) @@ -56,7 +56,7 @@ user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_activity], issuable) get :discussions, params: params - discussions = JSON.parse(response.body) + discussions = json_response expect(discussions.count).to eq(1) expect(discussions.first["notes"].first["system"]).to be(true) diff --git a/spec/support/shared_examples/update_invalid_issuable.rb b/spec/support/shared_examples/update_invalid_issuable.rb index 64568de424e7..4cb6d001b9b1 100644 --- a/spec/support/shared_examples/update_invalid_issuable.rb +++ b/spec/support/shared_examples/update_invalid_issuable.rb @@ -38,7 +38,7 @@ put :update, params: params expect(response.status).to eq(409) - expect(JSON.parse(response.body)).to have_key('errors') + expect(json_response).to have_key('errors') end end -- GitLab