From 8d7fb292d2e280cb5e41c54b34470c83369d7bd4 Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Mon, 10 Jun 2019 15:41:42 -0300 Subject: [PATCH] Avoid encoding errors for MergeToRefService --- ...encoding-errors-on-merge-to-ref-service.yml | 5 +++++ lib/gitlab/gitaly_client/operation_service.rb | 2 +- .../gitaly_client/operation_service_spec.rb | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/osw-avoid-encoding-errors-on-merge-to-ref-service.yml diff --git a/changelogs/unreleased/osw-avoid-encoding-errors-on-merge-to-ref-service.yml b/changelogs/unreleased/osw-avoid-encoding-errors-on-merge-to-ref-service.yml new file mode 100644 index 00000000000..176c8bf36f7 --- /dev/null +++ b/changelogs/unreleased/osw-avoid-encoding-errors-on-merge-to-ref-service.yml @@ -0,0 +1,5 @@ +--- +title: Handle encoding errors for MergeToRefService +merge_request: 29440 +author: +type: fixed diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb index e4a59ee3f9b..b42e6cbad8d 100644 --- a/lib/gitlab/gitaly_client/operation_service.rb +++ b/lib/gitlab/gitaly_client/operation_service.rb @@ -107,7 +107,7 @@ module Gitlab branch: encode_binary(branch), target_ref: encode_binary(target_ref), user: Gitlab::Git::User.from_gitlab(user).to_gitaly, - message: message + message: encode_binary(message) ) response = GitalyClient.call(@repository.storage, :operation_service, :user_merge_to_ref, request) diff --git a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb index 7579a6577b9..18663a72fcd 100644 --- a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb @@ -78,6 +78,24 @@ describe Gitlab::GitalyClient::OperationService do subject end + describe '#user_merge_to_ref' do + let(:branch) { 'my-branch' } + let(:source_sha) { 'cfe32cf61b73a0d5e9f13e774abde7ff789b1660' } + let(:ref) { 'refs/merge-requests/x/merge' } + let(:message) { 'validaciĆ³n' } + let(:response) { Gitaly::UserMergeToRefResponse.new(commit_id: 'new-commit-id') } + + subject { client.user_merge_to_ref(user, source_sha, branch, ref, message) } + + it 'sends a user_merge_to_ref message' do + expect_any_instance_of(Gitaly::OperationService::Stub) + .to receive(:user_merge_to_ref).with(kind_of(Gitaly::UserMergeToRefRequest), kind_of(Hash)) + .and_return(response) + + subject + end + end + context "when pre_receive_error is present" do let(:response) do Gitaly::UserUpdateBranchResponse.new(pre_receive_error: "GitLab: something failed")